タイトル通りに、なんじゃそりゃ、という。
docker runしたら、インターネッツに繋がらなくなるじゃん問題。
IPv6は普通に繋がるんだけど、IPv4がUnreachableになる。
traceroute打つと、なぜかDockerのコンテナのIPが表示されている。。。
$ traceroute github.com
traceroute to github.com (20.27.177.113), 30 hops max, 60 byte packets
1 hoge.local (169.254.32.5) 3078.145 ms !H 3078.087 ms !H 3078.063 ms !H
結論
connmanとかいうネットワークマネージャが悪い。
Dockerの仮想NICを勝手にデフォルトゲートウェイに設定するせいで、外向きの通信が全部そこに吸い込まれてしまっている
対応
$ sudo vi /etc/connman/main.confしてブラックリストの設定を有効化+vethを追加
# List of blacklisted network interfaces separated by ",".
# Found interfaces will be compared to the list and will
# not be handled by ConnMan, if their first characters
# match any of the list entries. Default value is
# vmnet,vboxnet,virbr,ifb,ve-,vb-.
# NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,ve-,vb-
NetworkInterfaceBlacklist = vmnet,vboxnet,virbr,ifb,ve-,vb-,veth
発生した状況
$ routelすると、先頭にvethから始まるdockerの仮想NICが居座っている。
$ ip routeしても同じ。
なんでお前はそこにいるんだ/どうやって直すんじゃ、これ。
老人会なんで、ifconfigしかわからんのですが。
$ routel
Dst Gateway Prefsrc Protocol Scope Dev Table
0.0.0.0 link vethc6d8eab
default link vethc6d8eab
default 192.168.0.1 enp1s0f0
default 192.168.0.1 192.168.0.112 dhcp enp1s0f0
1.1.1.1 192.168.0.1 enp1s0f0
1.1.1.1 192.168.0.1 192.168.0.112 dhcp enp1s0f0
169.254.0.0/16 169.254.32.5 kernel link vethc6d8eab
172.17.0.0/16 172.17.0.1 kernel link docker0
192.168.0.0/24 192.168.0.112 kernel link enp1s0f0
192.168.0.1 link enp1s0f0
192.168.0.1 192.168.0.112 dhcp link enp1s0f0
127.0.0.0/8 127.0.0.1 kernel host lo local
127.0.0.1 127.0.0.1 kernel host lo local
127.255.255.255 127.0.0.1 kernel link lo local
169.254.32.5 169.254.32.5 kernel host vethc6d8eab local
169.254.255.255 169.254.32.5 kernel link vethc6d8eab local
172.17.0.1 172.17.0.1 kernel host docker0 local
172.17.255.255 172.17.0.1 kernel link docker0 local
192.168.0.112 192.168.0.112 kernel host enp1s0f0 local
192.168.0.255 192.168.0.112 kernel link enp1s0f0 local
解決までの道のり
経路問題だろうかなと、とりあえず、apt-get install dnsutilsしてnslookupとかを使えるようにしてーから始めて。
routelの読み方わかんねえよ、Scopeの意味してんのなんだよ、とか言いながら、
それにしても、defaultになってんの多分おかしいよな。誰が設定してんだよ、と犯人探しをして。
systemd-networkdが動いてるっぽいけど、設定default gatewayを外す設定とかどうするんだ?付けるオプションはあっても、外すのはなくない?
とかやってたところ、同様の問題に引っかかってる人を見つけて、なるほどな、と。
ConnMan
ConnMan、こいつ何者?とぐぐると、みんなアンインストールしててウケる。
デスクトップ環境入れると勝手に入るのかなんかで、多分WiFi使ってるとこういうのが要る的な話なのかもしれない。
参考