NASのバックアップを考えるとき、自宅が災害に遭うなどでバックアップごとデータを喪失することも考慮する必要があります。このような事態に備え、実家へ帰省した際には自宅LANにVPN接続して、SMB経由で実家に置いてあるHDDにバックアップしています。ここで問題になるのがVPN接続です。
VPN接続する場合は、基本的には接続ソフトをインストールして接続の際にID/Passwordを入力する必要があること、アドレスやログインIDなどVPN接続情報が一時的であれPCに記録されることから、自分が管理していないPCでの接続はVPNのセキュリティとPCのネットワーク設定変更によるトラブル発生の可能性の点でためらわれます。このため、実家でバックアップを行う時には常に自前のPCを持参していました。(なお、HDDはBitLockerで暗号化しパスワードでロックをかけてセキュリティを確保しています)
しかし、バックアップのためだけに毎回自分のPCを持っていくのは負担です。そこで実家のPCの設定を変更せずに自宅LANにアクセスする方法がないかを探ったところ、VPN接続に対応しているトラベルルーターを利用すればよいことに気がつきました。この方法であればVPN設定することなく実家のPCで自宅のNASにアクセスできる上に、RemoteDesktop経由で自宅にあるPCを使うこともできるので、トラベルルーターさえあればPCを持参しなくても自宅のPCを自宅と同じように操作できます。
VPNに対応したトラベルルーターとなるとGL.iNet製のものしか見当たらなかったため、GL-MT3000を選択し、この機会に自宅ルーターもGL-MT6000に入れ替えました。これらはOpenWrtを標準サポートしており、OpenWrtベースのAdGuardとTailScapeがデフォルトでインストールされておりフルリセットからの復帰がシンプルになること、2.5GのLANポートが搭載されていることからこれらを選択しました。
しかし、OpenWrtはカスタマイズの自由度が高く少し設定を間違えるだけで通信ができなくなったりもするので、初期状態から安定したVPN接続ができるようになるまでに調査と試行錯誤が必要でした。
そこで、設定を忘れないようにメモしておきます。
GL-MT6000:自宅ルーター
デフォルト機能設定
OpenWrtのLuCiを使用せずに変更できる部分については、以下のように設定します。メンテナンスの手間を考えて、TailScaleとAdGuardについてはGL.iNet謹製のものを使用します。
- DHCPのIPアドレスを192.168.1.0/24(192.168.8.0/24以外)に変更する
- トラベルルーターのLAN側と同じネットワークアドレスだとトラベルルーター側のPCからNASへのアクセスができなくなることを防止
- AdguardをONにする
- ルーターを通過するDNSリクエストのうち不要な広告アクセスをブロックする(1割強程度のリクエストが削減できる)
- フィルタにAdguard Japanese filter、280blocker、豆腐フィルタ を追加する
- 280blockerは月毎にURLがアップデートされるため、定期的にアップデートする必要がある
- ダイナミックDDNSをONにする
- この機能自体は普段の運用では不要だが、この設定をONにしておかないとOpenWrtでインストールしたDynamic DNSプラグイン動作が自動でOFFになってしまう
- TailScaleをONにする
- VPN設定の簡略化し、WireGuard接続でVPN経由での転送速度を高速化する
- TailscaleのAdmin console画面でSubnet routeをONにする(設定方法はGL.NetのマニュアルやTailScaleのHPを参照する)
- デフォルトでインストールされているTailScaleのExit Node機能はGL.Net側で意図的にOFFにされているので注意。ExitNodeを使いたい場合は自分でTailScaleをインストールし起動設定する必要がある
- 自宅LANで接続するデバイスのMACアドレスに名前をつける
- ペアレンタルコントロール機能を利用して、許可されたデバイス以外ではWANへのアクセスができないようにするための設定
- 以下の三点リーダーから設定する
- ペアレンタルコントロールをONにし、登録したMACアドレス以外からのWANへの通信を遮断する
- iOS/Android端末のランダムMACアドレス設定はOFFにする必要がある
OpenWrt:ネットワーク設定
5G無線チャンネルの変更
Network > Wireless’の5Gのチャンネルが190chに設定されているので、これを120chに変更します。変更しないままでいると国内販売端末で5G接続用のSSIDが表示されません。もし5G接続用のSSIDが表示されない場合はこのチャンネル設定を確認しましょう。
TailScale
’Network > Firewall’に移動して下記画面を表示し、下記画面のチェックボックスにチェックをいれてTailScaleのIPマスカレードをONにします。これを設定しないとトラベルルーターに接続されたデバイスから自宅LANにアクセスできません。
OpenWrtプラグインインストール
OpenWrt画面で’System > Software’に移動し、以下のプラグインをインストールします。
- Wake on LAN(luci-i18n-wol-ja)
- 自宅PCを起動できるようにする
- iPerf3(iPerf3)
- 接続速度をチェックする
- Terminal(luci-app-ttyd)
- ブラウザでiPerf3サーバを起動し、速度を確認できるようにする
- DynamicDNS(luci-i18n-ddns-ja)
- Dynamic DNSのIPアドレス情報を定期的に更新する
- Statistics(luci-i18n-statistics-ja)
- ルーターの稼働状態のログを記録する
OpenWrtプラグイン設定
Dynamic DNS
下記設定を参考に設定します。IPアドレスが固定されている場合は1日1回程度の更新で良いです。なお、デフォルト機能のダイナミックDNSをオンにしておかないと自動更新が1日以内に停止するので、自動更新が停止している場合はデフォルト機能のDDNS設定を確認しましょう。
更新状況については’Service > DynamicDNS’に移動して以下の赤枠を確認することでわかります。「停止済み」となっている場合は自動更新が停止していることになります。
TailScale追加設定
AdGuardフィルタ有効化設定
TailscaleはiOSやAndroidなど多くのOSをサポートしており設定も簡単なので、GL-MT6000へVPN接続した時にはWiFi接続時と同様にAdGuardで広告表示を消して通信量を削減したくなります。
ネットを検索するとTailscaleの公式サイトにRasberryPiのPiHoleを使用する方法(Link)が記載されており、これと同じ設定方法でAdguardを有効化できます。
PiHoleの設定手順はここまでですが、これだけですとtailscale接続時にGL-MT6000のAdGuardにリクエストが届かず、TailScaleのデフォルトDNSである100.100.100.100にアクセスするため、フィルタが効きません。
原因を追ったところ、TailScaleで割り振られたGL-MT6000のIPアドレスをサーバーにしてnslookupでgoogle.comのIPアドレス検索をしたとき、TailScale未接続の時はIPアドレスが返されますが、接続中はTimeoutとなることから、TailScale接続されたクライアントからのDNSリクエストがAdGuardにForwardされていないためと推測できます。
DNSのフォワード設定は’Network>Firewall>Port Forwards’で設定できます。すでにLAN側からのDNSリクエストをAdguardにフォワードする設定がありますので、これと同じようにTailscale側からのDNSリクエストをGL-MT6000のAdguardへフォワードすることでTailScale接続時にGL-MT6000のAdguardが働くようになります。
ExitNodeの有効化
前述したとおり、デフォルト設定ではExitNodeが有効化されていません。このため、公衆無線LAN接続時にTailScale接続をしていると通信が秘匿化されず、セキュリティに不安があります。秘匿化したい場合はOpenVPNなど別の方法で接続することになりますが、これではTailscaleを導入する意味がありません。最適な解決方法はGL-MT6000でExitNodeを有効化することです。
TailScaleのExitNodeを有効化するためには、GL-iNetのTailScaleを実行状態にしておく必要があります。この状態でsshでログインし、コマンドライン上で’tailscale up’コマンドに’--advertise-exit-node
‘オプションをつけて実行します。
下記コマンドラインははLAN内のPCへのアクセスとAdguardの設定が効くようになるオプションも追加しています。
# tailscale up --netfilter-mode=off --advertise-routes=192.168.1.0/24 --advertise-exit-node --accept-routes --accept-dns=false
するとTailscaleのAdminConsoleでGL-MT6000のExitNodeを有効化することができます。
なお、ルーターを再起動するとExitNode設定が無効になってしまうため、再起動時には手動でtailscaleコマンドを実行する必要があります。ここはやり方がはっきりしたら、記述を書き換える予定です。
GL-MT3000:トラベルルーター
トラベルルーター側はOpenWrtの設定確認などのテスト用デバイスとしても使用するため設定リセットが多く発生するので、必要な設定は最低限に留めます。
また、トラベルルーターを利用してスマホ・タブレット・PC間で安全にファイルのやり取りをできるようにするため、トラベルルーターには極小USBメモリを挿しておき、フォルダ共有設定もしておきます。
デフォルト機能設定
- AdguardをONにする
- フィルタにAdguard Japanese filter、280blocker、豆腐フィルタ を追加する
- 280blockerは月毎にURLがアップデートされるため、定期的にアップデートする必要がある
- TailScaleをONにする
- TailscaleのAdmin console画面でSubnet routeをONにする(設定方法はGL.NetのマニュアルやTailScaleのHPを参照する)。これを忘れるとトラベルルーターに接続したPCから自宅LANへアクセスができない
- トラベルルーターの電源を入れた直後から自宅ルーターへVPN接続されるように、設定後は機能をONにしておく
- GL-MT3000に標準搭載されているOpenWrt 21系のTailScaleは期待速度の半分程度の速度しか出ない(100Mbps程度)らしいが、自宅-実家間の遠信速度よりは速いので問題視はしない
- USBメモリを挿してフォルダ共有を設定する
- Windowsの設定によってはGuestアクセスが禁止されているため、アクセス元のWindowsのログインIDを設定し、パスワードは適当なものを入れておくとよい。
OpenWrtネットワーク設定
- TailScaleのIPマスカレードの設定をONにする
- GL-MT6000と同様に設定する
- この設定を忘れるとトラベルルーターに接続したPCからTailScale経由で自宅LANにアクセスできない
以上、参考になれば幸いです。