WSL(Windows Subsystem for Linux)を使っていると、Windows側でVPN接続した際に「WSLからインターネットに繋がらない」「DNS解決ができない」といった問題に悩まされることが多いです。特に社内ネットワークやリモートワーク環境でVPNは必須という方も多いでしょう。
この記事では、WSL2環境でVPN利用時のネットワーク問題を解決する「wsl-vpnkit」の導入方法を、実際の手順とともに詳しく解説します。
これらはWSL2のネットワーク構造とVPNのルーティングの兼ね合いで発生します。
wsl-vpnkitは、WSL2環境でVPN接続時にも安定してネットワーク通信できるようにするためのツールです。Windowsホスト側のVPN設定に依存せず、WSL2のVMに独自のネットワークプロキシを提供します。
wsl-vpnkit.tar.gz
をダウンロードwsl --import wsl-vpnkit --version 2 $env:USERPROFILE\wsl-vpnkit wsl-vpnkit.tar.gz
wsl.exe -d wsl-vpnkit --cd /app wsl-vpnkit
sudo apt-get install iproute2 iptables iputils-ping dnsutils wget
VERSION=v0.4.x
wget https://github.com/sakai135/wsl-vpnkit/releases/download/$VERSION/wsl-vpnkit.tar.gz
tar --strip-components=1 -xf wsl-vpnkit.tar.gz app/wsl-vpnkit app/wsl-gvproxy.exe app/wsl-vm app/wsl-vpnkit.service
rm wsl-vpnkit.tar.gz
sudo VMEXEC_PATH=$(pwd)/wsl-vm GVPROXY_PATH=$(pwd)/wsl-gvproxy.exe ./wsl-vpnkit
/etc/wsl.conf
に以下を追記し、systemdを有効化[boot]
systemd=true
wsl.exe -t <ディストリ名>
wsl.exe -d wsl-vpnkit --cd /app cat /app/wsl-vpnkit.service | sudo tee /etc/systemd/system/wsl-vpnkit.service
sudo systemctl enable wsl-vpnkit
sudo systemctl start wsl-vpnkit
systemctl status wsl-vpnkit -n 100
/etc/resolv.conf
をカスタマイズしている場合は、wsl.conf
でgenerateResolvConf=false
を設定.exe
の実行が制限されている場合は、GVPROXY_PATH
で実行可能なパスを指定localhost
(Windows→WSL)、host.containers.internal
や192.168.127.254
(WSL→Windows)で可能wsl-vpnkitを導入することで、VPN接続時でもWSL2から安定してインターネットや社内ネットワークにアクセスできるようになります。systemdを使えば自動起動も可能なので、VPNを多用する開発者やリモートワーカーに強くおすすめできるソリューションです。
WSL2でVPNを使うなら、wsl-vpnkitの導入が最も手軽で確実な方法です。
ぜひ本記事を参考に、快適なWSL開発環境を構築してください!