Softether+GL iNet GL-AR750で拠点側VPNルータを作る

#はじめに
初投稿です。
softetherを使用した拠点間接続をトラベルルータで実現できたらいいなと思い、
何とか動作まで持って行けたので備忘録ですがまとめます。
読みづらかったら、すみません。

#1.環境、使用機器、ネットワーク図
VPN Server側
　OS:Windows Server
　Softether VPN Serverをインストール、セットアップ済み

VPN Bridge側
　GL iNet GL-AR750　（購入の初期状態からいろいろといじっています。後述します）
　https://docs.gl-inet.com/jp/3/setup/travel_ac_router/first-time_setup/
　amazonで購入当時5200円ぐらいでした。

　iPhone(テザリングのため使用)

GL-AR750の設定のため、設定用WindowsPCに
　VPN Server管理ツール　
　Teraterm　SSH用
をインストールしています。

####ネットワーク図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385839/4109bbc3-50b3-ba6f-cc7d-89407fa3d13f.png)


#2.GL-AR750のセットアップ
サーバ側はネットで豊富な資料があるので、そちらを参考に・・・
VPN Azure中継サービスを利用します。

GL-AR750のLAN側に有線LANで接続しセットアップしました。
なお、セットアップはweb管理画面やらVPN Bridge管理ツールやらSSHやら行ったり来たりしました。
（スマートなやり方があったら教えて欲しいです・・・）

###事前にfirmwareのダウンロードをしておく
GL-AR750は、OpenvpnやWireGuardなどいろいろとパッケージが入っていて面白そうです。
ただ、NANDの容量が限られており何も考えずSoftetherパッケージをインストールしようとすると
容量不足とのメッセージが出ました。

ひとまず、自己責任で新たにファームウェアを入れて最小パッケージ状態にしてみようと思います。
OpenwrtのGL-AR750(https://openwrt.org/toh/gl.inet/gl-ar750)
上記サイトからファームウェアをダウンロードしておきます
記事作成時点では下記リンクが最新のようです。
http://downloads.openwrt.org/releases/19.07.3/targets/ar71xx/generic/openwrt-19.07.3-ar71xx-generic-gl-ar750-squashfs-sysupgrade.bin

（GL-AR750は以下GLとします）
###GLのweb管理画面にアクセス
GLは工場出荷状態だと192.168.8.1のようです。
ブラウザより当該IPを入力し、管理画面にアクセスします。
パスワードも設定します。

####ファームウェアの変更
※この作業以降、下記のわかりやすい画面が見えなくなります。
公式ファームウェアを入れ直しても、この画面が出なくなりました。。。よく分かりません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385839/21a19368-bca8-6805-6705-0ef6be894ec3.png)

ログイン後、「その他の設定」から「Advance」画面へ

Systemタブ　-> Backup/Flash Firmwareを選択する
　ページ下のFlash new firmware imageのところで、先ほどダウンロードしたファームウェアを選択する
　　Keep settingsのチェックを外す（設定は引き継がないほうがよさそうです）

　しばらくするとファームウェアウェアのアップデートが終了します。

※アップデート終了後、GLのIPが192.168.1.1に変更になっている（と思う）ので、アクセス時に間違えないようにする

web管理画面にアクセス、パスワードを再設定した後、時刻など設定していきます。

####時刻設定
Systemタブ -> sysytem 
　LocalTime、Timezoneを設定しておく

####ネットワーク設定
#####テザリング先を登録
　Networkタブ　-> Wireless
　BSSIDは空欄
　Replace wireless configuration チェック
　テザリング先のiPhoneを登録
　advance setting
　Contry Code　JP

#####IPアドレス設定
　br-lan 固定IP設定にする(以後このIPが管理画面のIPとなる)
　VPN後にブリッジしたネットワークに所属することを考慮したIPアドレスにしておく
　DHCPは不要なので無効にする
　※eth1.1にはIPアドレスを設定しない
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385839/1ac5198b-7a7d-c7d1-68c6-0b7385920804.png)

ここで一旦Web管理画面を抜けます

###SSHにてGLにアクセスする

####softether vpn bridgeをインストールする
コマンドに以下入力
opkg update
opkg install softethervpn5-bridge

インストール後、vpncmdのcheckを実施してみる。すべてPassでインストール成功かと思います。

※以下は不要かも
vi /etc/init.d/softethervpnbridge
START=90 を97に変更

###VPN Bridge管理ツール
設定PCのServer(Bridge)管理ツールからGLのbr-lanに設定したIPアドレスへ接続します。
接続先、ローカルブリッジ先などの設定と
ローカルブリッジ先は「新しいtapデバイスとのブリッジ接続」を選択し、新しいtapデバイス名入力し作成します
tapデバイスを作成する理由はlinux固有の問題を解決するためです。

※参考例としてbr0としています
GLのインターフェースにはtap_br0というインターフェースができていると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385839/54475893-4f06-cb07-3a87-d9cece450474.png)


web管理画面へ行き、startup -> softethervpnbridge をstopをします。
VPN Bridgeの管理ツールで設定した内容を反映させるためのおまじないです。
※これをやらないとGLを再起動した際にVPN Bridgeの設定が初期化されてしまい、
パッケージインストール直後のような設定になっていました。

startを押して、VPN Bridge管理ツールから再度接続し、
設定が反映（接続先やローカルブリッジがtapされているか）されているか確認します。

###TAPデバイスをブリッジへ追加する
web管理画面に行きます。
Networkタブ -> interfaces
br-lanのEditボタンを押す
Physical Settingsにtap-br0を追加する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385839/24f6b560-4cd4-4486-26eb-893f3bfbfa16.png)

###その他　VPNの状態確認
GLの5GのLEDを使用しないため、VPNの状態確認に使用しました。
systemタブ　-> LED Configration
WLAN5GのEditを押し、以下のように設定しました。
VPNがリンクすると5G動作確認ランプがチカチカしました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/385839/28da84fc-5fd6-a522-4761-bb5c74a62610.png)

#3.スループット
スループットに関してです。
iPhone自体の速度について（Speedtestアプリによる測定です）
　ダウンロードが28Mbps程度、アップロードが6Mbps程度

Sever側は
　ダウンロード500Mbps、アップロード500Mbps程度

GLにてvpncmdからtrafficclientを実行し、Server間とのスループット測定してみました。

Network Traffic Speed Test Tool

Item Name                                             |     Normal View|Simplified View
------------------------------------------------------+----------------+---------------
Time Span for Measurement                             |    00:00:15.012|
Data Correction for Ethernet Frames                   |             Yes|
Communication Data Volume in Download Direction       | 9,963,314 Bytes|    9.96 MBytes
Communication Data Volume in Upload Direction         | 4,656,458 Bytes|    4.66 MBytes
Total Communication Data Volume                       |14,619,772 Bytes|   14.62 MBytes
Relay Device Input Output Total Throughput Computation|              No|
Average Throughput in Download Direction              |   5,309,519 bps|      5.31 Mbps
Average Throughput in Upload Direction                |   2,481,459 bps|      2.48 Mbps
Total Average Throughput                              |   7,790,978 bps|      7.79 Mbps

という結果でした。

###雑記
みんなすごいなぁ、記事なんて書ける気がしないなぁなんて思っていました。
ただ今回GL-AR750とsoftetherを使用したVPNルータの資料があまり探せなったので
構築にチャレンジしつつ、記事もあげてみようと思い立った次第です。