OpenWrt+WireGuard+AdBlock

前回はWireGuardを設定しました。ただ、外部から内部にアクセスできる様になっても、WireGuardがONの状態では外部に出て行けない状態です。

これ、とても簡単に解決できます。DNSの設定を見直すだけです。

解決策

  1. 外部接続はWireGuardをOFFにし普通にモバイル通信する。
  2. スマートフォンのWireGuardアプリのDNSリストにルーターのDNSやパブリックDNSを加える。
  3. パブリックDNSにAdGuardのDNSを追加して広告ブロックする。
  4. OpenWrtのDNSに変更を加える。
  5. OpenWrtにAdBlockをインストールしてWireGuardを使う全ての端末を広告ブロック対応にする。
  6. 最後に

1.外部接続はWireGuardをOFFにし普通にモバイル通信する。

外部接続は諦める潔いい設定です。基本的にVPNは外部から内部へ接続する為に使うので、コレも有りかと思います。

ただ、部分的にVPNをOFFにする方法もあります。

スマートフォンでWireGuardを使用する場合は、アプリの編集設定でトンネルするアプリを選べます。詳細画面から編集画面へ移り、画面中央にある「すべてのアプリがトンネル対象」とあるのでそこをタップする事でトンネル対象を選べます。

スマートフォンのスクリーンショット。WireGuardのアプリの設定編集の初期画面。中央のすべてのアプリがトンネル対象をタップするとトンネルするアプリを個別で選べる。
画面中央の「すべてのアプリがトンネル対象」をタップして対象にするアプリを選択します。

例えば外出先から自宅にSSHしたい場合はターミナルアプリだけトンネル対象にすれば、ターミナルアプリアプリ以外はトンネル対象から除外され、ブラウザなどは普通にインターネットに接続されます。

因みに中盤からお話するAdblockが有効になったトンネルを通すとポイントカード系のアプリは上手く機能しなくなる場合が有るので常にWireGuardをONする場合は対象を接続した方が良いかと思います。

2.スマートフォンのWireGuardアプリのDNSリストにルーターのDNSやパブリックDNSを加える。

題名通りですが、WireGuardのアプリを開き「鉛筆」マークから編集画面に移ります。

スマートフォンのスクリーンショット。WireGuardのアプリでトンネル名をタップした後に表示される画面。右上の鉛筆マークをタップすると編集画面に移動が出来る。
トンネル名をタップ後、表示される詳細画面の右上の鉛筆マークをタップする事で設定を編集できる。

前回の投稿の設定で進めた場合は「DNS サーバ」の内容が上の画像や以下の様になっていると思います。

DNS サーバ
192.168.1.1

DNSにルーターのアドレスを追加します。

DNS サーバ
192.168.1.1, 192.168.11.1

若しくはパブリックDNSなどを追加します。

DNS サーバ
192.168.1.1, 1.1.1.1

上記は1.1.1.1のパブリックDNSを追加しました。DNSを追加する事で外出先から自宅に接続してそこらインターネットに接続出来る様になります。

注意点としては、DNSを追加する場合は「,(カンマ)」で区切ってください。

3.パブリックDNSにAdGuardのDNSを追加して広告ブロックする。

追加するパブリックDNSを広告ブロック対応のDNSにする事で簡単に広告ブロックに対応させられます。DNSを追加する応用ですが、案外強力です。

DNS サーバ
192.168.1.1, 94.140.14.15

例えばパブリックAdGuard DNSを追加します。このアドレスは、広告、トラッカー、アダルトコンテンツをブロックし、できる限りセーフサーチとセーフモードを有効にするかなり強力な広告ブロックDNSです。リンクのPlain DNS(通常のDNS)内に記載がるアドレスですので興味がある場合は確認してみて下さい。

4.OpenWrtのDNSに変更を加える。

題名を見ると難しそうに思えますが、チェックボックスからチェックを外すだけです。非常に簡単です。

ただ、この設定を見つけるまで私は何日も掛かかりました。

OpenWrtのWebGUIの上部メニューの「ネットワーク」へ移動し「DHCPおよびDNS」を開き「フィルター」タブを選択すると以下の様な画面が表示されるかと思います。

OpenWrt、DNSの設定。ローカルサービスのみをチェックアウトするとWireGuardからもインターネットに接続できる。
「ローカルサービスのみ」をチェックアウトする事でWireGuardで接続された端末がインターネットに繋がるようになる。

キャプション通りなんですが、「ローカルサービスのみ」を「チェックアウト」するだけです。チェックアウトが済んだら「保存&適用」をクリックします。

スマートフォンのWireGuardアプリのDNSサーバの設定を「192.168.1.1」だけにし、WireGuardをONにします。ハンドシェイクが出来たら、スマートフォンのWebブラウザで適当なサイトを検索します。

「ローカルサービスのみ」が「チェック」されている状態ではインターネットに辿り着けずタイムアウトしますが、「チェックアウト」するとページが表示されるかと思います。

ただこの設定、分かるけ様で分からない。「自分が設定したWireGuardの10.0.0.0のネットワークはサブネットに含まれないのか?」と思うとちょっと頭が混乱します。もしから、何処かの設定でサブネットに含ませる事が出来るのかもしれませんが、今の自分の知識ではまだ分かり得てません。その内深掘りしてみたいと思います。

5.OpenWrtにAdBlockをインストールしてWireGuardを使う全ての端末を広告ブロック対応にする。

4で端末側のDNS設定に変更を加えず、OpenWrt側のDNS設定を変更する事でインターネットに接続出来る様になりましたが、OpenWrtにAdBlockをインストールする事でOpenWrt配下の端末は全て広告ブロックに対応します。

OpenWrtのWebGUIの上部メニューの「システム」へ移動し「ソフトウェア」を開きます。

AdBlockのインストール
リストを更新」ボタンをクリックし「フィルター」に「adblock」と入力し以下のファイルを探しインストールします。

luci-app-adblock

インストールが完了したら一度ログアウトします。再びログインすると上部メニューの「サービス」に「AdBlock」が追加されたのが確認できると思います。

QpenWrt、AdBlockの設定。ソースの追加後。
初期状態ではアクティブなソースはadguardのみでブロックされたドメイン数は54,376となっていた。

AdBlockのインストールが完了したら、WireGuardで接続している端末のWebブラウザで適当な普段見ている広告が多そうなページを開きます。

広告が少し減ったと思いますが如何でしょうか?もう少し減らしてみましょう。

画面の中央に「設定」とあると思います。「ブロックリスト提供元」のタブを開いてください。

最上段の「ソース(サイズ、フォーカス)」に「「adguard(L,general)」が選択がされていると思います。選択リストを展開すると他にもソースを選択できます。試しに「reg_jp(S,reg_japan)」もチェックします。チェックしたら「保存&適用」をし設定を反映させます。Adblock画面の上部「情報」部分の内容が変わったのが確認できると思います。

ブロックされたドメイン 54,376 → 57,071

アクティブなソース adguard → adguard, reg_jp

では、スマートフォンのWebブラウザを再読み込みさせてください。広告がまた少し減ったと思います。ブロックリスト提供元を増やすほどOpenWrtのメモリが消費されるようですが、私の所では問題になった事はないです。

設定をカスタムする場合はオフシャルサイトを覗いたり、豆腐フィルターのインストール等を調べてみると面白いです。

AdBlockを使う事で見れなく成るサイトも有りますが、WireGuardのON/OFFで切り替えが出来るので大変便利です。若しくはAdBlockでホワイトリストにサイトを登録する事も出来るようです。(検証してないので曖昧)

複数の端末を持っている場合はOpenWrtにAdBlockをインストールした方が、広告管理は楽に成るかと思います。

最後に

今回はWireGuardで自宅へアクセスしそこから外部アクセスする方法を投稿しました。

参照するDNSを加える事で簡単に外部へアクセス出来る事が分かったと思います。

数回に分けて、私の好きな実装をしましたが、間違った解釈があったり、私の知らないもっと良い設定が有るかと思います。もし知っている方がいたら是非教えて頂けたら嬉しい限りです。

コメントする