GL.iNet GL-AXT1800 で SoftEther VPN Server を立ち上げる でGL.iNet GL-AXT1800 (Slate AX) で SoftEther VPN Server を使えるようにした。その際に、TAPデバイスを使っていたが、再度試してみたらTAPデバイスは不要であることがわかった。そこで、TAPデバイスを使わない場合を記録しておく。
TAPデバイス関連以外の部分は、GL.iNet GL-AXT1800 で SoftEther VPN Server を立ち上げる と同じ内容であるが、記録を残してある。
背景
同じセグメントに属するが離れた地点の部屋のLANを Layer 2 で接続することを行ってきた。
以前の EdgeRouter X で L2TPv3 over IPsec で Site-to-Site Layer 2 Bridging をしようと思ったが、使用しようとした環境でIPsec の通信が禁止されているようでうまくいかない。他の方法を考えることになった。
手元にある OpenWrt が使える GL.iNet のミニルータを使うことにして、他の Site-to-Site Layer 2 Bridging の選択肢を検討してみた。OpenVPN は、 Site-to-Site Layer 2 Bridging をもうサポートしないとあるので( https://openvpn.net/vpn-server-resources/site-to-site-layer-2-bridging-using-openvpn-access-server/ )、選択肢からまず外れた。
次に WireGuard は、ポート番号 51820 の UDP を使うようであり、確かめていないが、IPsecの通信が禁止されているネットワークでは使えない可能性があるので、後回しにすることにして、他を調べることにした.
SoftEther VPN が HTTPS を使って通信できるようであり、HTTPS は外部には通信できるので、さすがに LAN内通信だけで禁止することはしていなさそうなので、SoftEther VPN を使ってL2 Bridge を構築することにした。
環境
以下のような構成でテスト環境を構築した。GL-AXT1800のEthernetポートでLAN2と印刷されているポート(3つあるポートの中央)と、GL-MV1000 の3つあるEthernetポートの中央のポートで L2 Bridge を構築する。GL-AXT1800で SoftEther VPN server を動作させ、GL-MV1000で SoftEther VPN bridge を動作させる。SoftEther VPN bridge から SoftEther VPN server にカスケード接続する。IPv4 のポート 443 で接続する。
この記事では、GL-AXT1800における SoftEther VPN server の設定を記録する。
デバイスのEthernetポートと内部デバイスの関係
GL-AXT1800 (Slate AX)
印刷表示 | 内部デバイス名 | 使用法 |
LAN1 | eth2 | 内部ネットワーク(コンソール) |
LAN2 | eth1 | SoftEtherの仮想HUBにブリッジ |
WAN | eth0 | 外部ネットワーク |
Dynamic DNS
Dynamic DNSとして、「GL.iNet GL-AXT1800 (Slate AX) で DDNS を DuckDNS に対して設定する」の記事の設定がしてあるとする。
バージョン
使用したソフトウェアのバージョンは以下の通り。
- GL.iNet GL-AXT1800 ファームウェア Version 4.0.2 release1
- OpenWrt 21.02-SNAPSHOT r16399+157-c67509efd7
- LuCI openwrt-22.03 branch (git-21.284.67084-e4d24f0)
以下では、OpenWrt の LuCI および PuTTY で ssh を利用して設定する。
SoftEther VPN Server の設定
Webサーバーが ポート443 を使わないようにする
GL.iNet GL-AXT1800 (ファームウェアVersion 4.0.2)では、Admin Panel などのために Web Server の nginx が使用され、HTTPS のためにポート 443 を listen している(GL-MV1000などのファームウェア Version 3では lighttpd が Webサーバとして使われている)。SoftEther VPNの HTTPS 通信はポート番号を指定できるが、前述したようにIPsecですら通信を禁止しているネットワークでは443以外のポートの通信が禁止されている可能性があるので、安全をとってSoftEther にポート443 を使うことにした。制約のないネットワークでは、SoftEther が利用するポート番号を変更した方が簡単である。
さて、PuTTY などの SSH でログインし、 netstat -apn | grep 443 を実行すると次のようになり、nginx が ポート 443 を listen していることがわかる。
そこで、SoftEther VPN でポート 443 を利用するので、nginx でポート 443 を利用しないようにする。/etc/nginx/conf.d/gl.conf を編集する。
PuTTY などの SSH でログインし、ポート 443 の listen をコメントアウトするか、別のポートを listen するように変更する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
index gl_home.html; lua_shared_dict shmem 12k; lua_shared_dict nonces 16k; lua_shared_dict sessions 16k; init_by_lua_file /usr/share/gl-ngx/oui-init.lua; server { listen 80; listen [::]:80; # listen 443 ssl; # listen [::]:443 ssl; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:DHE+AESGCM:DHE:!RSA!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SR P:!DSS:!CAMELLIA:!SEED"; ssl_session_tickets off; ssl_certificate /etc/nginx/nginx.cer; ssl_certificate_key /etc/nginx/nginx.key; resolver 127.0.0.1; rewrite ^/index.html / permanent; location = /rpc { content_by_lua_file /usr/share/gl-ngx/oui-rpc.lua; } location = /upload { content_by_lua_file /usr/share/gl-ngx/oui-upload.lua; } location = /download { content_by_lua_file /usr/share/gl-ngx/oui-download.lua; } location /cgi-bin/ { include fastcgi_params; fastcgi_read_timeout 300; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location ~.*\.(html|png|jpg|svg)$ { add_header Cache-Control "private, no-store, no-cache, must-revalidate, proxy-revalidate"; } include /etc/nginx/gl-conf.d/*.conf; } |
設定ができたら、 GL-AXT1800を reboot してから SSH で netstat -apn | grep 443 を実行して、ポート 443 が listen されていないことを確認する。
(原因ははっきりしないが、設定後に、System / Startup の Initscripts タブの中から nginx を探し、Stop→Start で再起動しただけだとサーバーがうまく起動されず、Admin Panel や LuCI にアクセスできなくなった。GL-AXT1800を再起動することで回復した。)
SoftEther VPN Server のインストール
OpenWrt の LuCI の System / Software で(必要に応じて[Update lists]をしてから) softethervpn5 でフィルターして表示し、softethervpn5-server をインストールする。使用した softethervpn5-server のバージョンは、5.02.5180-1 であった。
softethervpn5-serverをインストールしてSoftEther VPN Server が起動されたら、SSH で netstat -apn | grep 443 を実行して、ポート 443 が vpnserver によって listen されていることを確認する。
SoftEther VPN Server Manager による設定
SSH で接続後に SoftEther の vpncmd コマンドを利用して設定することもできるが、ここでは、Windows の SoftEther VPN サーバー管理マネージャを使って設定する。
初めて SoftEther VPN Server に接続したときは、パスワードを入れずにOKボタンを押し、パスワードを設定する。
仮想HUBの作成
仮想HUBとしてここでは、IVY-BRIDGE という名前の仮想HUBを作成する。
SoftEther VPN Server / Bridge 簡易セットアップでは、拠点間VPNサーバーまたブリッジを選択し、拠点間接続VPNの中心となり、他拠点からの接続を受け入れるVPN Server を選択する。
この後に、ダイナミックDNS機能、IPsec/L2TP/EtherIP/L2TPv3サーバー機能の設定、VPN Azureクラウドの設定が求められる。今回の設定ではすべて使わないので、無効にする。
この後に、ローカルブリッジの設定をする。ここでは、イーサネットポートeth1 とブリッジさせる。
接続用アカウントの作成
IVY-BRIDGE ができたら、それを選択して、[仮想HUBの管理]ボタンを押して、接続用アカウントの作成を行う。
セキュリティデータベースの管理の中の[ユーザの管理]ボタンをクリックする。
[新規作成]ボタンをクリックして、ユーザを作成する。
ここでは sXXXXXX というユーザを作成する。ここでは認証方法としてパスワード認証を用いることにして、パスワードを設定する。
OpenWrt での設定
OpenWrt での SoftEther VPN Server の設定保存
SoftEther VPN Server Manager による設定は、サーバーを停止させないとファイルに反映されないらしい(Softether+GL iNet GL-AR750で拠点側VPNルータを作る)。LuCI の System / Startup の Initscripts タブの softethervpnserver をまずStopさせる。その後、GL-AXT1800を reboot する。
OpenWrt でのブリッジデバイス br-lan の設定
OpenWrt で、ブリッジデバイスとして働いている br-lan の設定をする。
Network / Interfaces の Devices タブの br-lan の[Configure]ボタンを押し、 Bridge ports から SoftEtherの仮想HUBとのローカルブリッジに使う eth1 を外す。
OpenWrt での eth1 の設定
OpenWrt で、SoftEtherの仮想HUBとのローカルブリッジに使う eth1 の設定をする。
Network / Interfaces の Devices タブの eth1 の[Configure]ボタンを押し設定画面にする。ローカルアドレスのLANセグメントをブリッジしようとしているので Advanced タブの Accept local のチェックを入れる。
OpenWrt でのインタフェース L2VPN の作成
OpenWrt で、インタフェース L2VPN を作成する。
Network / Interface の Interfaces タブで[Add new interface…]ボタンを押し、Name に L2VPN、Protocol に Unmanaged 、Device に eth1 を選択する。
[Create interface]ボタンを押して、インタフェース L2VPN を作成する。
作成後の各タブの設定は以下の通りであった。
設定を保存して、Network / Interfaces のページに戻って L2VPN ができていることを確認する。
[Save & Apply]ボタンを押して設定を反映させる。L2VPN のデバイスが eth1 であることが示されているはず。
OpenWrt での Firewall の設定
WANからの HTTPS の通信 (Port 443 の通信)を許可するルールを作成する。ここでは Allow-Port-443 という名前のルールとする。
LuCI の Network / Firewall の Traffic Rules タブで、[Add]ボタンを押し、Name を Allow-Port-443、Source zone が wan、Destination zone が Device (input)、Destination Port が 443、Action が accept のルールを作成する。
[Save & Apply]ボタンを押して設定を反映させる。
この後の設定
SoftEther VPN Server に接続する SoftEther VPN Bridge を設定し、 SoftEther VPN Bridge から SoftEther VPN Server へのカスケード接続を行う必要がある。別の記事でSoftEther VPN Bridge の設定と動作確認について示す予定である。