OpenVPN on WSL2 Created 2020-08-24 | Updated 2020-08-24
https://github.com/pritunl/pritunl WSL2 の環境にOpenVPN を導入してみました。 Pritunl を管理ツールとして使いました。 外出先から自宅環境のファイルサーバの参照、EPGStation の操作、WSL2 への接続、Windows 10 へのリモートデスクトップ接続、等ができます。 今まではRaspberry Pi をVPN サーバにしていました。 リスクがある気もしますが移行を検討してみます。
環境
Windows 10 Insider Preview Build 20197
WSL2 (Ubuntu 20.04)
openvpn 2.4.7
pritunl 1.29.2530.72 ℹ️Wireguard を指定する項目が増えていました
mongodb 3.6.9
v6 プラスでインターネット接続
v6 プラス接続環境の調査
公開IPv4 アドレスと公開IPv6 アドレスを確認 https://test-ipv6.com/
公開IPv6 アドレスから公開可能なポート番号を確認 http://ipv4.web.fc2.com/map-e.html
公開するポート番号を決定 例えば60000/tcpを選択 ⚠️tcp になります。
Windows 10 のローカルIPアドレスを確認
例えば、192.168.11.2
構築(WSL)
WSL2 でsystemd を有効化 https://github.com/arkane-systems/genie/
$ sudo apt install daemonize dbus policykit-1 $ wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb $ sudo dpkg -i packages-microsoft-prod.deb $ sudo apt update; sudo apt upgrade $ sudo apt-get install -y dotnet-runtime-3.1 $ curl -s https://packagecloud.io/install/repositories/arkane-systems/wsl-translinux/script.deb.sh | sudo bash $ sudo apt install -y systemd-genie
pritunl を導入 https://github.com/pritunl/pritunl
$ sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list << EOF deb https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.2 multiverse EOF $ sudo tee /etc/apt/sources.list.d/pritunl.list << EOF deb https://repo.pritunl.com/stable/apt focal main EOF $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv E162F504A20CDF15827F718D4B7C549A058F8B6B $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com --recv 7568D9BB55FF9E5287D586017AE645C0CF8E292A $ sudo apt-get update $ sudo apt-get --assume-yes install pritunl mongodb-server
$ genie -s $ sudo systemctl start pritunl mongodb$ sudo systemctl enable pritunl mongodb
ポートフォワードのスクリプト 443/tcp と60000/tcp をWindows 10 からWSL2 へ転送する。
/home/ubuntu/bin/wsl-portforward.sh #!/bin/bash IP=$(ip -f inet -o addr show eth0 | cut -d\ -f 7 | cut -d/ -f 1) for PORT in 443 60000; do /mnt/c/Windows/system32/netsh.exe interface portproxy delete v4tov4 listenport=$PORT /mnt/c/Windows/system32/netsh.exe interface portproxy add v4tov4 listenport=$PORT connectaddress=$IP done
構築(Windows 10)
Firewall の受信許可
WSL 側のwsl-portforward.sh を起動
wsl -u root bash /home/u buntu/bin/ wsl-portforward.sh
⚠️タスクスケジューラでWindows 10 起動時に実行するように設定 3. pritunl の起動 wsl -u root genie -c systemctl start pritunl mongodb
⚠️タスクスケジューラでWindows 10 起動時に実行するように設定 4. WSL 側のPritunl の設定 https://192.168.11.2 にアクセスし、画面の指示に従ってログインした後、サーバを設定します。 4.1 Users >> Add Organization 4.2 Users >> Add User 4.3 Servers >> Add Server ⚠️公開IPv4 アドレスと60000/tcp を指定 4.4 Servers >> Attach Organization 4.5 Servers >> Start Server 5. クライアント設定ファイルの生成 5.1 Users >> Click to download profile 5.2 username.tar を展開して.ovpn ファイルを抽出
構築(ルータ)
ポート変換の設定
ポート: 60000/tcp
宛先: 192.168.11.2
Android クライアントからの利用
OpenVPN アプリで.ovpn ファイルをインポート
接続