GL.iNet GL-MV1000 で SoftEther VPN Bridge を立ち上げる

GL.iNet GL-MV1000 (Brume) を SoftEther VPN Bridgeとし、 SoftEther VPN Server にカスケード接続をして、2拠点間の Layer 2 Bridge (L2 Bridge)を構築した。備忘録として記録しておく。

これは、TAPデバイスを使った「GL.iNet GL-AXT1800 で SoftEther VPN Server を立ち上げる」の続きである。TAPデバイスを使わない「GL.iNet GL-AXT1800 で SoftEther VPN Server を立ち上げる(TAPなし)」の続きは、「GL.iNet GL-MV1000 で SoftEther VPN Bridge を立ち上げる (TAPなし)」である。

環境

GL.iNet GL-AXT1800 で SoftEther VPN Server を立ち上げる」に書いたことと同じであるが、以下のような構成でテスト環境を構築した。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-MV1000での SoftEther VPN Bridge の設定を記録する。

デバイスのEthernetポートと内部デバイスの関係

GL-MV1000 (Brume)

印刷表示 内部デバイス名 使用法
地球(?)マーク wan 外部ネットワーク
<…> lan0 SoftEtherの仮想HUBにブリッジ
<…> 端のポート lan1 内部ネットワーク(コンソール)

Dynamic DNS

Dynamic DNSとして、「GL.iNet GL-MV1000 の Dynamic DNS で DuckDNS.org を使う」の記事の設定がしてあるとする。

バージョン

GL.iNet GL-MV1000 のファームウェアのバージョンは、3.212 であった。

内部的には、以下のバージョンを利用している。

  • OpenWrt 19.07.8 r11364-ef56c85848
  • LuCI openwrt-19.07 branch (git-21.189.23240-7b931da)

以下では、OpenWrt の LuCI および PuTTY で ssh を利用して設定する。

SoftEther VPN Bridge の設定

Webサーバーが ポート443 を使わないようにする

GL.iNet GL-MV1000 では、Admin Panel などのために  Web Server の lighttpd が使用され、HTTPS のためにポート 443 を listen している。

PuTTY などの SSH でログインし、 netstat -apn | grep 443 を実行すると次のようになり、nginx が ポート 443 を listen していることがわかる。

そこで、SoftEther VPN でポート 443 を利用するので、lighttpd でポート 443 を利用しないようにする。/etc/lighttpd/conf.d/30-openssl.conf の拡張子を変えて、読み込まれないようにする。

設定ができたら、 GL-MV1000を reboot してから SSH で netstat -apn | grep 443 を実行して、ポート 443 が listen されていないことを確認する。

SoftEther VPN Server のインストール

OpenWrt の LuCI の System / Software で softethervpn5 でフィルターして表示し、softethervpn5-bridge をインストールする。使用した softethervpn5-bridge のバージョンは、5.01.9674-1 であった。

 

インストールしてSoftEther VPN Server が起動されたら、SSH で netstat -apn | grep 443 を実行して、ポート 443 が vpnserver によって listen されていることを確認する。

SoftEther VPN Server Manager による設定

SSH で接続後に vpncmd コマンドを利用して設定することもできるが、ここでは、Windows の SoftEther VPN サーバー管理マネージャを使って設定する。

初めて SoftEther VPN Bridge に接続したときは、パスワードを入れずにOKボタンを押し、パスワードを設定する。

仮想HUBへの接続

簡易セットアップでは、[接続先のVPN Server への接続設定を行う]をクリックして設定を行う。

新しい接続設定のプロパティのパネルで、接続設定名を指定する。ここでは ivy1 としている。

また、SoftEther VPN Server のホスト名とそこで作成した仮想 HUB 名を入力する。ここでは、ホスト名を XXXXXX-ivy1.duckdns.org、仮想HUB名は IVY-BRIDGEとしている。

さらに、SoftEther VPN Server で作成しておいたユーザ名とパスワードを[ユーザ認証]に入力する。必要な情報の入力が終わったら[OK]ボタンをクリックすることで、BRIDGE上のカスケード接続にその接続設定が表示されるはず。サーバーの設定が済んでいて、うまくカスケード接続ができれば、[状態]がこの例のように、「オンライン(接続済み)」になるはず。

 

[接続先のVPN Server への接続設定を行う]を終わると、次はローカルブリッジの設定であるが、AXT1800の場合と同様に、TAPデバイスを作成する必要があるが、簡易セットアップではできないので、「3. ローカルブリッジの設定」は使わず、[閉じる]をクリックする。

tapデバイスの作成

仮想HUBへのカスケード接続が作成出来たら、ローカルブリッジ設定から tap デバイス  l2vpn を作成する。

「ローカルブリッジ設定」ボタンをクリックし、ローカルブリッジ設定を開く。

「新しいローカルブリッジの定義」の中の仮想HUBには、 SoftEther VPN Bridge においてデフォルトで作成されている BRIDGE を選択する。

作成する種類には「新しいtapデバイスとのブリッジ接続」を選択する。ここでは、新しいtapデバイス名は l2vpn とした。「ローカルブリッジを追加」ボタンをクリックして、tapデバイスを作成する。

OpenWrt では「tap_」が付加され、 tap_l2vpn という名前のデバイスが作成されることになる。

OpenWrt での設定

OpenWrt での SoftEther VPN Bridge の設定保存

SoftEther VPN Server Manager による設定は、サーバーを停止させないとファイルに反映されないらしい(Softether+GL iNet GL-AR750で拠点側VPNルータを作る)。LuCI の System / Startup の Initscripts タブの softethervpnbridge をまずStopさせる。その後、GL-MV1000を reboot する。

OpenWrt でのインタフェース L2VPN の作成

OpenWrt で、インタフェース L2VPN を作成する。

Network / Interface の Interfaces タブで[Add new interface…]ボタンを押し、Name に L2VPN、Protocol に Unmanaged 、Device に br-vpn を選択する。

[Create interface]ボタンを押して、インタフェース L2VPN を作成する。

[Physical Settings] で、Interface に イーサネットポート lan0 と TAPデバイス tap_l2vpn を設定する。

他のタブの設定は以下の通りであった。

 

設定を保存して、Network / Interfaces のページに戻って L2VPN ができていることを確認する。

[Save & Apply]ボタンを押して設定を反映させる。

OpenWrt でのインタフェース LAN の設定

OpenWrt で、ブリッジデバイスとして働いている LAN の設定をする。イーサネットポート lan0 が LAN と L2VPNの両者に含まれないように、LANから外す。

Network / Interfaces の Interfaces タブの LAN の[Configure]ボタンを押し、Physical Settings タブの Interface から lan0 を外す。この例では、lan1 と usb0 が LANに含まれるようにしている。

OpenWrt での Firewall の設定

WANからの 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 (GL-AXT1800)の Ethernet ポート(eth1 (筐体の表示はLAN2))と、SoftEther VPN Bridge (GL-MV1000)の Ethernet ポート(lan0 (3つあるEthernetポートの中央))の間で、Layer 2 Bridge ができているはずである。