Docker
はなんだか UFW
を無視するそうで。
以下の様に味付けをする必要があるみたい。
# /etc/default/ufw
...
# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that
# if you change this you will most likely want to adjust your rules
DEFAULT_FORWARD_POLICY="ACCEPT"
...
# /etc/default/docker
...
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"
...
# /etc/docker/daemon.json
{"iptables": false}
sudo service ufw restart
sudo service docker restart
で、なんとなく UFW
動いてる風なんだけど、 docker-compose
で複数の(dockerネットワーク)環境を作ったりすると、コンテナ内からインターネットに繋がらなくなったりする。
で、調べると IPマスカレードがうんたら
とか出て来るので、以下の様に書くとなんか元気に動き出す。
# /etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# こっから ============================
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING ! -o docker0 -s 172.16.0.0/12 -j MASQUERADE
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
# ここまでを追加 ========================
# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]
# End required lines
...
ネットワークまじで無知故、正しいのかどうか大分怪しい。
ので、自己責任で。