【リモートワーク】SoftEtherVPNで実家でも自宅にいてみた


外出自粛中の今みなさん,どうお過ごしでしょうか?
私は精神崩壊しそうなので推しの曲を聞きながらリモートワークをすることにしました.

しかし今実家にいる

2020年4月29日現在,新型コロナウイルスによる緊急事態宣言に伴い,外出をすることが著しく制限されています.そのため私は自宅に向かうことができず実家にいます.これでは自宅にある音源をぶち込んでいるNASを利用できません.
まあOpenVPNでLayer2VPNセッションを張ればいいのですが
・実家のWi-Fiはクソフトバンク光の光BBユニットの調子がよろしくなく,すぐ切断されてしまう.
・いちいちOpenVPNの接続を行うのがめんどくさい,
・MacOSのOpenVPNクライアントであるTunnelBlickが動作不安定になることがある.
そこでVPNルータをとりあえずで構築し,LAN接続するだけでVPN接続ができないかと考えました.

SoftEther VPN

先日の記事でNASのDockerを利用してDAAPサーバをおっ立てる記事を書きましたが,その際のスクショを見て分かる通りSoftEtherVPNサーバを立てています.SoftEtherVPNにはIPv6でのVPNセッションを張る機能があります.→4.8. 完全な IPv6 のサポート

また,実家と自宅ではIPv6を利用できる上,両方ともNTT東日本のフレッツ網であるためIPv6折り返しの閉鎖網VPNが構築可能です.→5. NTT のフレッツサービスの IPv6 網内通信のサポート

こうなったら利用するしか無いってことでSoftEtherVPNで拠点間VPNを構築しました.

今回用意したもの

PC(家に転がってた)
USB-LAN NIC(USB3.0)
LANケーブル
無線LANアクセスポイントになる機器(今回はBUFFALOのWHR-1166DHP4を利用しました)

環境

以前の記事を読んでほしい…!https://qiita.com/Miutaku/items/7ca83a1d31ec4733fab5

手順

VPN専用DAAPサーバコンテナを作成する.

先日の記事で作成したのとほぼ同じ手順で新しいDAAPサーバコンテナを作成します.コンテナの名前はdaap-VPNOnlyとしました.
NASのiTunes Server機能を””ちゃんと””macOS Catalinaでも使えるようにする
一つだけ変える部分としては,ネットワークでhostと同じネットワークを利用しないようにすることです.次のようにします.

VPN Serverの設定を変更

今まで,自宅のVPN Serverは仮想HUBにローカルブリッジでルータからDHCPでIPアドレスを拾ってきていたのですが,
・NASからhostアダプタで出ていった後NAS自身に戻ってこれない→すなわち,他のDockerコンテナのdaapサーバにアクセス不可→ホームシェアリングoverVPNで音楽が聴けない!
・なぜかスループットが致命的に遅い.↓数Mbps,↑0.5Mbpsとかその程度しか出ない.
という問題がありました.

そこで,SoftEtherVPNのSecureNATを利用します.(必ずローカルブリッジからここで設定する仮想HUBを削除しておいてください!)

SecureNAT

仮想NAT及び仮想DHCPサーバ(SecureNAT)の設定を開きます.
『SecureNATの設定』を開き,次のように設定しました.OKを押します.

SecureNAT機能を有効にするを押すとこのようにグレーアウトします.

ローカルブリッジ

ローカルブリッジ設定を開きます.
SecureNATを設定した仮想HUBをDAAP-VPNOnlyコンテナに接続しているNICであるdocker0にローカルブリッジします.

VPNBridge用PCにOSインストール

適当なOSを適当なPCに入れます.今回は実家に転がっていたデスクトップPCを利用しました.OSはUbuntu18.04LTSをインストールしました.

VPN Bridgeをインストール

SoftEtherVPNからVPNBridgeを拾ってきてインストールします.

$ sudo apt update && sudo apt upgrade 
$ mkdir ~/work
$ cd ~/work
$ wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.34-9745-beta/softether-vpnbridge-v4.34-9745-beta-2020.04.05-linux-x64-64bit.tar.gz
$ tar xzvf softether-vpnbridge-v4.34-9745-beta-2020.04.05-linux-x64-64bit.tar.gz
$ sudo mv ./vpnbridge /usr/local/
$ sudo vim /etc/systemd/system/vpnbridge.service
$ cat /etc/systemd/system/vpnbridge.service
[Unit]
Description=Softether VPN Bridge
After=network.target

[Service]
Type=forking
User=root
ExecStart=/usr/local/vpnbridge/vpnbridge start
ExecStop=/usr/local/vpnserver/vpnbridge stop
Restart=on-abort
WorkingDirectory=/usr/local/vpnbridge/
ExecStartPre=/sbin/ip link set dev ens32 promisc on

[Install]
WantedBy=multi-user.target

$ sudo systemctl daemon-reload
$ sudo systemctl start vpnbridge.service
$ sudo systemctl status vpnbridge.service
$ sudo systemctl enable vpnbridge.service

VPN Bridgeの設定をする

主な設定方法はRaspberry PiにSoftEther VPN Bridgeをインストールして常時VPN接続されたネットワークを作成する管理ツールの起動以降とほぼ同じです.(@kakken1988 さんありがとうございます.参考にさせていただきました.)
カスケード接続に関しては当然VPN ServerのアドレスとSecureNATを設定した仮想HUBを選択してユーザ名とパスワードを入れて設定します.
ローカルブリッジ設定からは次の節で設定するのでカスケード接続ができたら初期設定ガイドのウィンドウを閉じてください.

NICを追加する

USB-LANアダプタを刺してからローカルブリッジ設定を開くと,追加したNICが出てきます.

ローカルブリッジを設定する

仮想HUBを設定しましょう.NICは追加して出てきたものを選択します.VM内でのローカルブリッジ機能の利用の画面は無視して進めてください.

Wi-Fi APとなるWi-Fiルータを接続する.

今回は実家に転がっていたWi-Fiルータを用意しました.
先程接続しローカルブリッジしたUSB-LANなNICにWi-Fiルータを接続し,ブリッジモードで接続します.
あとはこのWi-Fi APに任意のデバイスで接続しましょう.
今回,Wi-FiのSSIDとパスワード,暗号化設定などを自宅のWi-Fiと同じにしました.これで実家にいても自宅にいても同じネットワークにいることができます.

最終的な構成

結構複雑な構成になってしまったので見づらいかもしれませんが次のようになりました.

論理構成図としては次のようになります.(間違ってる場所あるかも)

作戦通り(夜神月の例の画像が出てくる)

動作確認です.当然,ホームシェアリング(DAAP)も可能ですし,vncでMac-miniに接続も可能です.SecureNATからNASアクセスする形になるため,SMBサーバも問題なく接続できています.
スピテスもしてみました.測定にはspeedtest.netを利用しています.測定結果のリンクを載せておきます.まあ十分な速度ではないでしょうか.USB-LANなNICを接続した端子がUSB2.0なので,あとでUSB3.0接続にしたらまた変わるかもしれませんがとりあえずこれでも十分なのでこれで運用しようと思います.
https://www.speedtest.net/result/9358927260

感想

なぜSecureNATを使わないと異常に遅いスループットになるかは解決しませんでしたがとりあえずうまく動いたからヨシ!
これを解決するのにめっちゃ時間かかりました…2週間半くらいはハマりました…
あと多分TimeMachineバックアップもできるだろうなと思っていたらできませんでしたがこれはSecureNATでNAT越えしているためブロードキャストパケットが届かないためだそうです.TimeMachineを社内ネットワークでやるとかってなったらめんどくせえなと思いました…

謝辞

もやしきんぐ先生(CV.上田麗奈)と幻想魔法ニキ(GTX1080Tiを4way-SLIするとってもすっごいひと)には大変ご助言などいただきました.本当にありがとうございました.今度お二方に言われたとおりRTX1210購入芸キメます.

Twitter
もやしきんぐ先生
幻想魔法ニキ