@ledsun blog

無味の味は佳境に入らざればすなわち知れず

VPN接続するとWSL内のDockerコンテナからのapt-get updateに失敗する

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