引用元:https://twitter.com/hiyo_biyou/status/1728342018970059222
Simple is bestをモットーに、得られた知識・知恵をつらつらと。
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接続ができるようになるまでに調査と試行錯誤が必要でした。
そこで、設定を忘れないようにメモしておきます。
OpenWrtのLuCiを使用せずに変更できる部分については、以下のように設定します。メンテナンスの手間を考えて、TailScaleとAdGuardについてはGL.iNet謹製のものを使用します。
Network > Wireless’の5Gのチャンネルが190chに設定されているので、これを120chに変更します。変更しないままでいると国内販売端末で5G接続用のSSIDが表示されません。もし5G接続用のSSIDが表示されない場合はこのチャンネル設定を確認しましょう。
’Network > Firewall’に移動して下記画面を表示し、下記画面のチェックボックスにチェックをいれてTailScaleのIPマスカレードをONにします。これを設定しないとトラベルルーターに接続されたデバイスから自宅LANにアクセスできません。
OpenWrt画面で’System > Software’に移動し、以下のプラグインをインストールします。
下記設定を参考に設定します。IPアドレスが固定されている場合は1日1回程度の更新で良いです。なお、デフォルト機能のダイナミックDNSをオンにしておかないと自動更新が1日以内に停止するので、自動更新が停止している場合はデフォルト機能のDDNS設定を確認しましょう。
更新状況については’Service > DynamicDNS’に移動して以下の赤枠を確認することでわかります。「停止済み」となっている場合は自動更新が停止していることになります。
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が有効化されていません。このため、公衆無線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コマンドを実行する必要があります。ここはやり方がはっきりしたら、記述を書き換える予定です。
トラベルルーター側はOpenWrtの設定確認などのテスト用デバイスとしても使用するため設定リセットが多く発生するので、必要な設定は最低限に留めます。
また、トラベルルーターを利用してスマホ・タブレット・PC間で安全にファイルのやり取りをできるようにするため、トラベルルーターには極小USBメモリを挿しておき、フォルダ共有設定もしておきます。
以上、参考になれば幸いです。
基本的に、醤油1:みりん1で味付けする。
引用元:https://twitter.com/marukawa1914/status/1730007231985532987
クラシル:https://www.kurashiru.com/recipes/8c7b7149-0d77-41d2-abd3-3dca57c189aa