やるきなし

2018/08/14 15:57 / docker.io を install すると kvm -net bridge がうまく動かない

Debian GNU/Linux に docker.io (18.03.1+dfsg1-6) を Install すると KVM (ブリッジ接続)に接続できなくなった.docker0 という interface ができたのが原因かと思い,かなり悩む.

% /sbin/ifconfig -s | awk '{print $1}'
Iface
br0
docker0
eth0
lo
tap0
% /sbin/brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.xxxxxxxxxxxx       yes             eth0
                                                        tap0
docker0         8000.yyyyyyyyyyyy       no

原因は https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=865975 のとおり iptables の Chain FORWARD の default policy を dockerDROP にしてしまうこと.sudo iptables -P FORWARD ACCEPT すれば直る.

追記 (2019/2/6)

sudo iptables -P FORWARD ACCEPT しても packet が流れないのでおかしいなと思ったら,sid 環境では iptables-legacy を使わないといけないらしい.sudo iptables-legacy -P FORWARD ACCEPT

% sudo iptables -L
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
# Warning: iptables-legacy tables present, use iptables-legacy to see them
% sudo iptables-legacy -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
(略)

追記 (2019/7/18)

/usr/sbin/iptables として /usr/sbin/iptables-nft/usr/sbin/iptables-legacy を選択できるようになっていて(buster でもそう),自動で /usr/sbin/iptables-nft が選択されるようになっている(sudo update-alternatives --config iptables 等で変更).

上記 iptables-legacy でなければうまく行かない話は Kernel で CONFIG_NF_TABLES (nftables; NFT) が n になっていたか正しく動作しなかったため(Debian の Kernel Package で)だった模様.現在は NFT が正常に動作する package が提供されている.