VPN接続するとWSLからのHTTPS接続に失敗する - @ledsun blog の続きです。 WSL上でのHTTPS接続には成功しましたが、Dockerを使うと同様のMTU問題にはまります。
現象
例えば次のコマンドに長時間かかりタイムアウトします。
docker run -it --rm ruby:3.4.7-slim bash -lc 'apt-get update -qq'
原因
ホストOSにMTUを設定しても、dockerネットワークには反映されません。
> ip link show docker0 4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default link/ether f6:5a:59:94:de:23 brd ff:ff:ff:ff:ff:ff
対策
DockerにもMTUを設定します。
/etc/docker/daemon.json に設定を書きます。
{ "mtu": 1350 }
Dockerの再起動が必要な点に注意してください。 設定はすぐには反映されません。
> sudo systemctl restart docker
再起動後はMTUが変更されています。
> ip link show docker0 4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1350 qdisc noqueue state UP mode DEFAULT group default link/ether f6:5a:59:94:de:23 brd ff:ff:ff:ff:ff:ff