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事前共有鍵
として登録
WiFi 接続したまま、VPN の接続ができれば SoftEther の設定は OK。
Safari 等で web アクセスができればブリッジ設定も OK。
ルーターの設定
VPN Server (192.168.0.254)に下記をマッピングする
- UDP のポート番号 500 と 4500
- プロtコル番号 50 (ESP) ← TCP/UDP のポート番号と間違えないこと
- ※ UDP のポート番号 1701 のマッピングも必要という情報も見つかるが、自分の環境では必要なかった。
先程の iPhone の VPN 設定のサーバーアドレスをグローバル IP アドレスに変更して、WiFi を切断後に VPN 接続して繋がればルーターの設定も OK。
コメントを残す