背景
Dockerコンテナからインターネットに繋がらなくなった。
(以下より、Dockerコンテナ上で実行するコマンドを#, ホストPC上で実行するコマンドを$のprefixをつけて表現する)
IPアドレス, 経路確認
# ip route get 8.8.8.8
8.8.8.8 via 172.17.0.1 dev eth0 src 172.17.0.2 uid 0
cache
ipアドレスが 172.17.0.2 デフォルトの宛先が172.17.0.1であることがわかった
$ ip a
...
5: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:a4:ba:7d:47 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:a4ff:feba:7d47/64 scope link
valid_lft forever preferred_lft forever
...
172.17.0.1はdocker0であることがわかった
ネットワーク疎通確認 (コンテナから)
- コンテナからインターネットにつながるかを確認
# ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2031ms
- コンテナからホストPCにつながるかを確認
# ping -c 3 172.17.0.1
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2031ms
ネットワーク疎通確認 (ホストPCから)
- ホストからインターネットにつながるかを確認
# ping -c 3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=55.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=10.5 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=10.3 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 10.304/25.417/55.401/21.202 ms
- ホストからコンテナにつながるかを確認
# ping -c 3 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
From 172.17.0.2 icmp_seq=1 Destination Host Unreachable
From 172.17.0.2 icmp_seq=2 Destination Host Unreachable
From 172.17.0.2 icmp_seq=3 Destination Host Unreachable
解決まで
コンテナ ↔ ホストPC 間のネットワークがダメそうなことがわかったので、経路を調べてみる
$ ip route get 172.17.0.2
172.17.0.2 dev CloudflareWARP table 65743 src 172.16.0.2 uid 1000
cache
CloudflareWARPにつながってしまっていることがわかった。 (CloudflareWARPはVPNサービスの名称)
今回は172.17.0.0/16 を Exclude IPsに指定することで解決した。