openvpn wsl
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 プラスでインターネット接続

openvpn wsl2

v6 プラス接続環境の調査

  1. 公開IPv4 アドレスと公開IPv6 アドレスを確認
    https://test-ipv6.com/
  2. 公開IPv6 アドレスから公開可能なポート番号を確認
    http://ipv4.web.fc2.com/map-e.html
  3. 公開するポート番号を決定
    例えば60000/tcpを選択
    ⚠️tcp になります。
  4. Windows 10 のローカルIPアドレスを確認
    >ipconfig
    例えば、192.168.11.2

構築(WSL)

  1. 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
  2. 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
  3. ポートフォワードのスクリプト
    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)

  1. Firewall の受信許可
  • 60000/tcp
  1. WSL 側のwsl-portforward.sh を起動
    wsl -u root bash /home/ubuntu/bin/wsl-portforward.sh
    ⚠️タスクスケジューラでWindows 10 起動時に実行するように設定
  2. pritunl の起動
    wsl -u root genie -c systemctl start pritunl mongodb
    ⚠️タスクスケジューラでWindows 10 起動時に実行するように設定
  3. 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
  4. クライアント設定ファイルの生成
    5.1 Users >> Click to download profile
    5.2 username.tar を展開して.ovpn ファイルを抽出

構築(ルータ)

  1. ポート変換の設定
  • ポート: 60000/tcp
  • 宛先: 192.168.11.2

Android クライアントからの利用

  1. OpenVPN アプリで.ovpn ファイルをインポート
  2. 接続