Categories: wsl技術

WSL環境でVPN利用時のネットワーク問題を解決!wsl-vpnkit導入ガイド

WSL(Windows Subsystem for Linux)を使っていると、Windows側でVPN接続した際に「WSLからインターネットに繋がらない」「DNS解決ができない」といった問題に悩まされることが多いです。特に社内ネットワークやリモートワーク環境でVPNは必須という方も多いでしょう。

この記事では、WSL2環境でVPN利用時のネットワーク問題を解決する「wsl-vpnkit」の導入方法を、実際の手順とともに詳しく解説します。

WSL2でVPN接続時に起こる問題

  • VPN接続時、WSL2からインターネットにアクセスできなくなる
  • DNS解決ができず、外部サイトやAPIに繋がらない
  • 社内ネットワークやクラウド環境へのアクセスが不安定になる

これらはWSL2のネットワーク構造とVPNのルーティングの兼ね合いで発生します。

wsl-vpnkitとは?

wsl-vpnkitは、WSL2環境でVPN接続時にも安定してネットワーク通信できるようにするためのツールです。Windowsホスト側のVPN設定に依存せず、WSL2のVMに独自のネットワークプロキシを提供します。

  • Windows管理者権限不要
  • DNSやルーティングも自動で調整
  • systemd対応で自動起動も可能

wsl-vpnkitの導入手順

事前準備

  • WSL2が有効なWindows環境
  • Ubuntuなどsystemd対応ディストリビューション(例: Ubuntu 22.04)
  • WSLのバージョンが0.67.6以上であること(systemd利用時)

wsl-vpnkitのインストール

WSLディストリとしてインポートする方法

  1. wsl-vpnkitのリリースページから最新のwsl-vpnkit.tar.gzをダウンロード
  2. PowerShellで以下コマンドを実行
wsl --import wsl-vpnkit --version 2 $env:USERPROFILE\wsl-vpnkit wsl-vpnkit.tar.gz
  1. wsl-vpnkitディストリを起動
wsl.exe -d wsl-vpnkit --cd /app wsl-vpnkit

既存ディストリにスクリプトとして導入する方法

  1. 必要なパッケージをインストール
sudo apt-get install iproute2 iptables iputils-ping dnsutils wget
  1. wsl-vpnkitをダウンロードして展開
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
  1. 実行
sudo VMEXEC_PATH=$(pwd)/wsl-vm GVPROXY_PATH=$(pwd)/wsl-gvproxy.exe ./wsl-vpnkit

systemdで自動起動設定(推奨)

  1. /etc/wsl.confに以下を追記し、systemdを有効化
[boot]
systemd=true
  1. WSLを再起動
wsl.exe -t <ディストリ名>
  1. サービスファイルを配置
wsl.exe -d wsl-vpnkit --cd /app cat /app/wsl-vpnkit.service | sudo tee /etc/systemd/system/wsl-vpnkit.service
  1. サービスを有効化・起動
sudo systemctl enable wsl-vpnkit
sudo systemctl start wsl-vpnkit
  1. ステータス確認
systemctl status wsl-vpnkit -n 100

トラブルシューティング

  • /etc/resolv.confをカスタマイズしている場合は、wsl.confgenerateResolvConf=falseを設定
  • Windows側のセキュリティ設定で.exeの実行が制限されている場合は、GVPROXY_PATHで実行可能なパスを指定
  • ポートのアクセスはlocalhost(Windows→WSL)、host.containers.internal192.168.127.254(WSL→Windows)で可能

まとめ

wsl-vpnkitを導入することで、VPN接続時でもWSL2から安定してインターネットや社内ネットワークにアクセスできるようになります。systemdを使えば自動起動も可能なので、VPNを多用する開発者やリモートワーカーに強くおすすめできるソリューションです。

WSL2でVPNを使うなら、wsl-vpnkitの導入が最も手軽で確実な方法です。
ぜひ本記事を参考に、快適なWSL開発環境を構築してください!

参考リンク

にいやん

出身 : 関西 居住区 : 関西 職業 : 組み込み機器エンジニア (エンジニア歴13年) 年齢 : 38歳(2022年11月現在) 最近 業務の効率化で噂もありPython言語に興味を持ち勉強しています。 そこで学んだことを記事にして皆さんとシェアさせていただければと思いブログをはじめました!! 興味ある記事があれば皆さん見ていってください!! にほんブログ村