外出先でもスマホの広告ブロックするためにWireGuardが最適解かも

前回以下の記事で広告ブロックサーバーを導入しましたが、外出先でスマホからでもこのサーバーを経由していました。

広告ブロックサーバーを構築した(Ubuntu+AdGuard Home)
最近、様々な広告の表示のさせ方がやばい最近はニュースサイトなどネットサーフィンしていると広告が表示され、えげつないものになるとスマートフォンの画面半分以上が埋め尽くされるものも珍しくありません。無料で運営している場合やサービス提供といった面...

その時に利用していたVPNがルーター(NVR510)のL2TP/IPsecですが、なぜかGoogleやらBingやらの検索ができなかったり、できたりで不安定でした。さらにモバイル回線でVPNを張ったまま帰宅しても自動でWi-Fiに繋がらず、手動で解除するか、iPhoneのオートメーションを使うかしなく、少し不便を感じていました。(どちらもNVR510の設定次第で改善できたりするのかもしれません)

VPNプロバイダーのアプリでVPNを張るとWi-Fiとモバイル回線間は自動で切り替わるので、おそらくVPNクライアントらへんによるのかもしれません。

そこで、今回はUbuntuにDockerをインストールし、ここにWireGuardを導入し、VPNを構築してみました。構築方法は結構簡単で、検索すると色々と出てくるので割愛しますが、参考までに動画のリンクを以下に貼っておきます。Dockerの導入方法も概要欄からジャンプできます。

ただし、私の環境ではこのとおりに構築してもVPNは張れるものの、パブリックDNSに頼らないとインターネットにアクセスできなかったりLAN内に入れなかったので、備忘録として対処方法を載せておきます。動画の主はNECのUNIVERGEですが、当方NVR510&固定IPアドレスですので、この辺も補足します。

NVR510のポート開放について

まず、ルーターのポート開放については動画と同じ設定でいくと、

nat descriptor masquerade static (descriptor ID) (識別番号) (WireGuardサーバーのIP) udp 51819=51820

となり、natの他にも一応IPフィルターのin方向にも設定します。51820ポートのみの設定でOK。

パブリックDNSに頼らないとインターネットに接続できなかったのは、IPフィルターの設定間違いだったかもしれません。

WireGuardの設定

Webブラウザから、WireGuard Serverにアクセスし、Global Settingsの

  • Endpoint Addressは(固定IP):51819に設定。IPのみでもいいかも。
  • DNS Serversは任意。AdGuard HomeのIPとか。

続いて、Wireguard ClientsのAllowed IPsに10.252.1.0/24、172.17.0.0/24以外にLANのサブネットを追加。DNS ServersにLAN内のサーバーを参照する場合は、そのサブネットを追加する必要があります。

これで、無事スマホのモバイル回線経由でもAdGuard Homeを参照でき、広告を消すことができました。Wi-Fiとモバイル回線間も自動で切り替えできました。さらにスマホのアプリからWi-FiになるとVPN解除、モバイル回線に切り替わるとVPNに接続することも可能です。外から内部機器のメンテが必要な時に重宝します。ただし、詳細はまだわかりませんが、WireGuardは特定のSSIDでVPNのオンオフができるかは不明です。簡単にできます。

私はパケット無制限プランなので不要ですが、公衆無線LANに接続する方はiPhoneのプロファイルでNVR510のL2TP/IPsecと併用するといいかもしれません。

とりあえずこんなところでした。色々と分かり次第、追記していくかも。

※これまでの設定だとWireGuard経由、つまりVPN経由ではAllowed IPsで許可した
10.252.1.0/24 → クライアント自身とサーバーのサブネット
追加したその他サブネット → VPN経由で通信したいネットワーク
これらの通信のみとなります。それ以外のインターネット等はVPNを経由せず、通常の回線でのアクセスになります。全通信をVPN経由とするにはAllowed IPsを0.0.0.0に設定します。公衆無線LANなどを利用する場合は、重宝しそうですが、以下のとおり注意点もあるようです。

WireGuardのAllowed IPsの設定についての補足
前回、DD-WRT上でWireGuardトンネルを有効にする記事を書きました。OpenVPNからWireguardに乗り換えこのなかで「Allowed IPs」の設定がいまいち理解できていなかったのですが、CodeBlue 2016で開発者...

追記

動画のとおりにやってもLAN内に入っていけない要因を調べてみたら、これかもしれません。

https://vpslife.server-memo.net/ubuntu_wireguard_install/#toc6
とはいえ、こういった設定をしなくても通信できているので、今はこの状態で運用し、後で検証用の環境を構築したうえで試してみたいと思います。
フォワーディングかと思いましたが、WireGuardのymlの中に同設定がありました。やはりAllowed IPsなのかもしれません。

また、構築してから1日程度普段使いしてみたら、NVR510のL2TP/IPsecより、勝手がいいですね。通信が不安定になることもなく、無通信状態からの再開もスムーズ。Speedtestも十分です。(NVR510のL2TP/IPsecではテストをぶん回すとVPNが途切れる)

IPv4でNAPTかけずに、IPv6でいけるんじゃないかと思いましたが、これはまた別の機会に試してみることとします。

コメント