Raspberry Pi3 に SoftEther VPN Server をインストール

SoftEther ダウンロード センター には 64bit ARM 版のバイナリーが用意されていなかったので、ソースをダウンロードする。
v4.29-9680 が最新だった。

ソースを展開

ubuntu@ubuntu:~$ wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.29-9680-rtm/softether-src-v4.29-9680-rtm.tar.gz
ubuntu@ubuntu:~$ tar xf softether-src-v4.29-9680-rtm.tar.gz

コンパイル環境

ubuntu の場合、とりあえず build-essential を入れとけばなんとかなる精神。ありがたやー。

ubuntu@ubuntu:~$ sudo apt install build-essential -y

コンパイル

ubuntu@ubuntu:~$ cd v4.29-9680/
ubuntu@ubuntu:~$ ./configure
ubuntu@ubuntu:~$ make
  • -m64 のオプションエラーとか
  • readline.h が見つからないとか
  • ncurses が見つからないとか

言われるので

ubuntu@ubuntu:~$ sed -i 's/-m64//' Makefile
ubuntu@ubuntu:~$ sudo apt install libreadline-dev -y
ubuntu@ubuntu:~$ sudo ln -s /lib/aarch64-linux-gnu/libncurses.so.5 /usr/lib/aarch64-linux-gnu/libncurses.so
ubuntu@ubuntu:~$ make

インストール

ubuntu@ubuntu:~$ sudo make install

systemd 用ファイルを作成

/user/vpnserver/vpnserver.service ファイルを作成

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
ExecStart=/usr/bin/vpnserver start
ExecStop=/usr/bin/vpnserver stop
Type=forking
RestartSec=3s

[Install]
WantedBy=multi-user.target

systemd に登録、有効化、起動

ubuntu@ubuntu:~$ sudo ln -s /user/vpnserver/vpnserver.service /etc/systemd/system/vpnserver.service
ubuntu@ubuntu:~$ sudo systemctl daemon-reload
ubuntu@ubuntu:~$ sudo systemctl enable vpnserver
ubuntu@ubuntu:~$ sudo systemctl start vpnserver

SoftEther VPN Server の設定

Windows クライアントから GUI ツールの VPN Server Manager を使って設定する方法もありますが、今回はスクリプト化も可能なように CUI を使って設定してみた。

# 以降にメモを書きましたが、vpncmd 自体はコメントを書けず、余計なパラメーターとして無視している様子。

ubuntu@ubuntu:~$ sudo vpncmd localhost:5555 /SERVER
VPN Server> ServerPasswordSet {password} # VPN Server 管理用パスワード設定
VPN Server> HubCreate VPN /PASSWORD # 仮想Hubの作成
VPN Server> IPsecEnable /DEFAULTHUB:VPN /L2TP:yes /L2TPRAW:no /ETHERIP:no /PSK:{IPSec事前共有鍵} # L2TP/IPsec を有効化
VPN Server> BridgeCreate VPN /DEVICE:vpn /TAP:yes # tap デバイスの作成
VPN Server> OpenVpnEnable /PORTS:1194 no # OpenVPN 無効化
VPN Server> SstpEnable nov # SSTP 無効化
VPN Server> VpnAzureSetEnable no # Azure VPN 無効化
VPN Server> VpnOverIcmpDnsEnable /ICMP:no /DNS:no # VPN over ICMP/DNS 無効化
VPN Server> ListenerDelete 443 # 不要ポート削除
VPN Server> ListenerDelete 992 # 不要ポート削除
VPN Server> ListenerDelete 1194 # 不要ポート削除
VPN Server> hub VPN
VPN Server/VPN> SecureNatDisable # SecureNAT 無効化
VPN Server/VPN> exit

DynamicDNS の無効化

ubuntu@ubuntu:~$ sudo systemctl stop vpnserver
ubuntu@ubuntu:~$ sudo sed -ie '/declare DDnsClient/,/}/{/Disabled/s/false/true/}' /usr/vpnserver/vpn_server.config
ubuntu@ubuntu:~$ sudo systemctl start vpnserver

利用者の追加

ubuntu@ubuntu:~$ sudo vpncmd localhost:5555 /SERVER /PASSWORD:{password} # 管理用パスワード
VPN Server> UserCreate {ユーザーID} /GROUP /REALNAME /NOTE
VPN Server> UserPasswordSet {ユーザーID} /PASSWORD:{パスワード}
<<< UserCreate と UserPasswordSet を繰り返して追加 >>>
VPN Server> exit

eth0 と tap_vpn を netplan でブリッジ

ルーターで L2TP をポートマッピングするため、この ubuntu (VPN Server) の IP アドレスを 192.168.0.254 に固定する。接続されたクライアントは 192.168.0.0/24 のアドレスを DHCP サーバーから取得することを想定。

vpncmd の BridgeCreate で /DEVICE:vpn /TAP:yes としているので、tap_vpn デバイスが作成されている。この tap_vpn と eth0 をブリッジして、接続したクライアントが LAN 内をアクセスできるように netplan の設定を変更する。

/etc/netplan/50-cloud-init.yaml を下記のように変更

network:
    version: 2
    ethernets:
        eth0:
            dhcp4: false
        tap_vpn:
            dhcp4: false

    bridges:
        br0:
            interfaces: [eth0, tap_vpn]
            addresses: [192.168.0.254/24]
            gateway4: 192.168.0.1
            nameservers:
                addresses:  [192.168.0.1]
            parameters:
                forward-delay: 0
                stp: false

変更を反映させる

ubuntu@ubuntu:~$ sudo netplan apply

iPhone の設定

タイプを L2TP
サーバーのアドレスを 192.168.0.254
アカウント/パスワードを追加したユーザーID/Password
シークレットを IPSec事前共有鍵
として登録
VPN_setting
WiFi 接続したまま、VPN の接続ができれば SoftEther の設定は OK。
Safari 等で web アクセスができればブリッジ設定も OK。

ルーターの設定

VPN Server (192.168.0.254)に下記をマッピングする

  1. UDP のポート番号 500 と 4500
  2. プロtコル番号 50 (ESP) ← TCP/UDP のポート番号と間違えないこと
    • ※ UDP のポート番号 1701 のマッピングも必要という情報も見つかるが、自分の環境では必要なかった。

先程の iPhone の VPN 設定のサーバーアドレスをグローバル IP アドレスに変更して、WiFi を切断後に VPN 接続して繋がればルーターの設定も OK。


Comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です