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.gzwsl.exe -d wsl-vpnkit --cd /app wsl-vpnkitsudo apt-get install iproute2 iptables iputils-ping dnsutils wgetVERSION=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.gzsudo VMEXEC_PATH=$(pwd)/wsl-vm GVPROXY_PATH=$(pwd)/wsl-gvproxy.exe ./wsl-vpnkit/etc/wsl.confに以下を追記し、systemdを有効化[boot]
systemd=truewsl.exe -t <ディストリ名>wsl.exe -d wsl-vpnkit --cd /app cat /app/wsl-vpnkit.service | sudo tee /etc/systemd/system/wsl-vpnkit.servicesudo systemctl enable wsl-vpnkit
sudo systemctl start wsl-vpnkitsystemctl 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開発環境を構築してください!