🌐

VPN を有効にすると WSL2 でインターネットに出られない問題に対処する

2020/12/28に公開

はじめに

WSL2 便利なのだが、 VPN を有効にするとインターネットが使えない (DNS が解決できない) という問題に困っていた。
調べたら直せたのでその方法をまとめる。

Microsoft の公式の方法

https://docs.microsoft.com/ja-jp/windows/wsl/troubleshooting#bash-loses-network-connectivity-once-connected-to-a-vpn

要約すると VPN につないだり切断したりする度に /etc/resolv.conf を書き換えろと言っているようにみえる。
これは面倒なのでやりたくない。

楽な方法

https://gist.github.com/coltenkrauter/608cfe02319ce60facd76373249b8ca6

まずは WSL2 (Ubuntu 20.04.1) にログインして /etc/wsl.conf というファイルを作り以下の設定を書き込む。

/etc/wsl.conf
[network]
generateResolvConf = false

次に Windows 側で WSL2 を再起動する。

> wsl -l
> wsl -t Ubuntu

再び WSL2 にログインし、 /etc/resolv.conf を削除する。
おそらくリンク切れのシンボリックリンクになっているはず。

$ rm /etc/resolv.conf

以下の内容で /etc/resolv.conf を作り直す。
VPN 有効時と無効時でも両方使える DNS サーバであればなんでもよい。

/etc/resolv.conf
nameserver 8.8.8.8

もう一度 Windows 側に戻って、WSL2 を再起動する。

> wsl -l
> wsl -t Ubuntu

これで、VPN 有効時と無効時両方でインターネットが使えるようになった。

まとめ

WSL2 便利〜。

Discussion