導入
会社でも家庭でも、「ウィルス対策はしているけど、広告対策までは手が回っていない」というケースは多いのではないでしょうか? 最近は広告を装ったフィッシングサイトへの誘導も巧妙で、少し危ないと感じることが増えました。
そこで、自宅のSynology NAS上に、AdGuard Homeを構築してみました。
実際に使ってみると、広告を消すというよりは、フィッシングサイト対策やトラッキングの軽減といった効果を実感しています。そのため、PCではブラウザの拡張機能などと併用するのが一番現実的かと思います。
また、iPhoneやiPadではモバイル回線利用時に自宅のDNSサーバーをそのまま利用することができないため、TailscaleでVPN接続を行い、外出先からでもAdGuard Homeを利用できる環境を構築しました。
今回は、Synology NASのDocker上へAdGuard Homeを構築し、Tailscale経由でモバイル端末からも利用する手順をまとめます。
現在の構成

構成のポイント
- Synology NAS上のDockerでAdGuard Homeを運用
- Synology NASはAdGuard Homeだけでなく、バックアップやObsidian同期などにも活用
- 自宅内の端末はNVR510からDHCPでIPアドレスを取得
- DNS設定もDHCPで自動配布されるため、各端末で個別設定は不要
- NVR510自身のDNS問い合わせ先はAdGuard Homeを指定
- AdGuard Homeで広告・フィッシング・トラッキングドメインをフィルタリング
- 外出先からはTailscale経由で自宅NASへ接続
- モバイル回線利用時も自宅と同じDNS環境を利用可能
- Windows・iPhone・iPadをまとめて保護可能
検証時に分かったこと
- IPv6環境向けにRDNSS(RAによるDNS配布)も検証
- Wiresharkで確認したところ、RDNSS自体は正常に配布されていた
- しかし、Windows 11およびSynology DSMでは、配布したDNS以外にルーター自身のIPv6アドレスもDNSサーバーとして認識される挙動を確認
- 原因は現在調査中(YAMAHAへ問い合わせ中)
- 安定運用を優先し、現在はNVR510経由でAdGuard Homeへフォワードする構成を採用
1.Synology NASへAdGuard Homeを導入
まずは、広告ブロックやDNSフィルタリングを行うため、Synology NAS上へAdGuard Homeを導入します。
今回はDSM標準の「Container Manager」を利用し、Dockerコンテナとして構築しました。
以前はブラウザ拡張機能だけで対策していましたが、DNSレベルでフィルタリングできるため、PCやスマートフォンをまとめて保護できる点が便利です。
Docker用フォルダを作成
Container Managerでコンテナを作成する前に、設定ファイルやログを保存するフォルダを作成しておきます。
File Stationなどで、
/volume1/docker/adguardhome/work
/volume1/docker/adguardhome/confの構成でフォルダを作成します。
Container Managerをインストール
DSMの「パッケージセンター」から、
- Container Manager
をインストールします。
DSM7系であれば標準で利用できます。
プロジェクトを作成
Container Managerから新規プロジェクトを作成します。
プロジェクト名:adguardhome
※小文字「a-z」、数字「0-9」、ハイフン「-」および「 _ 」のみ、名前の先頭に記号は不可
パス:Docker用に作成したフォルダ
/volume1/docker/adguardhomework confの上の階層を指定
ソース:docker-compose.ymlを作成
以下のソースを参考に作成。volumes:の部分は、自分の環境に合わせて下さい。
services:
adguardhome:
image: adguard/adguardhome
container_name: adguardhome
restart: unless-stopped
network_mode: host
volumes:
- /volume1/docker/adguardhome/work:/opt/adguardhome/work
- /volume1/docker/adguardhome/conf:/opt/adguardhome/conf
注意点:
- DNSサーバーとして機能させるため、
network_mode: hostを指定しています。これによりNASのポートを直接利用するため、他のサービスと53番ポートが競合しないよう注意してください。
初回セットアップ
コンテナ起動後、ブラウザで
http://NAS_IP:3000へアクセスします。
初回アクセス時はセットアップウィザードが表示されます。
DNSサーバーの待受ポートはデフォルトのままで問題ありません。
管理者アカウント作成後、AdGuard Homeの管理画面へログインできるようになります。
2.NVR510でDNSサーバーを配布
AdGuard Homeのセットアップが完了したら、自宅ネットワークの端末が自動的にDNSフィルタリングを利用できるよう設定します。
私の環境ではYAMAHA NVR510を利用しているため、DHCPで配布するDNSサーバーをNVR510自身に設定しています。
NVR510は受け取ったDNS問い合わせをAdGuard Homeへ転送するため、PCやスマートフォン側で個別設定を行う必要がありません。
AdGuard HomeのIPアドレスを固定
まずは、AdGuard Homeを稼働させているSynology NASのIPアドレスを固定しておきます。
DHCPで自動取得のまま運用すると、IPアドレス変更時にDNS設定が機能しなくなるためです。
仮の環境では、
192.168.1.10とします。
DHCPでDNSを配布
NVR510へログインし、DNSサーバーとしてAdGuard Homeを利用するよう設定します。
dns server 192.168.1.10
saveになります。
設定後、NVR510は受け取ったDNS問い合わせをAdGuard Homeへ転送するようになります。
設定確認
Windowsの場合はコマンドプロンプトで、
ipconfig /allを実行します。
DNSサーバー欄にルーターのIPアドレスが表示されていれば正常です。
iPhoneやiPadの場合は、
設定 ⇒ Wi-Fi ⇒ 接続中SSID ⇒ DNSの構成をタップすると確認できます。
動作確認
ブラウザでAdGuard Homeの管理画面を開きます。
http://192.168.1.10利用端末からWebサイトへアクセスすると、
クライアントクエリログにアクセス履歴が表示されます。
クエリ・ログが増えていれば、端末がAdGuard Homeを経由して通信している状態です。
3.Tailscale経由で外出先からAdGuard Homeを利用する
自宅内ではNVR510経由でAdGuard Homeを利用できますが、モバイル回線や外出先のWi-Fi利用時は、自宅のDNSサーバーへ直接アクセスできません。そこで、Tailscaleを利用して外出先からでも自宅のAdGuard Homeを利用できるようにします。
Tailscaleをインストール
まずは以下の端末へTailscaleをインストールします。
- Synology NAS
- iPhone
- iPad
- Windows(必要に応じて)
インストール後は同じアカウントでログインし、同一ネットワーク(Tailnet)へ参加させます。
AdGuard HomeのTailscale IPを確認
Tailscale接続後、Synology NASには専用のIP(100.xxx.xxx.xxx)アドレスが割り当てられます。
このアドレスはTailscale管理画面、またはNAS側のTailscale管理画面から確認できます。
Tailscale接続時は、このTailscale IP経由でAdGuard Homeへ接続します。
Tailscale DNSを設定
ブラウザからTailscale管理画面にログインしDNSに進みます。
DNSサーバーとして、先ほど確認したAdGuard HomeのTailscale IPを登録します。
Global nameserversの欄に先に確認したSynology NASのIPアドレスを入力します。
100.xxx.xxx.xxxそして、Override DNS serversのチェックをONにします。
設定後、Tailscale接続中の端末はAdGuard Homeを利用して名前解決を行うようになります。
動作確認
iPhoneやiPadでWi-FiをOFFにし、モバイル回線へ切り替えます。
その状態でTailscaleを接続し、Webサイトへアクセスします。
AdGuard Homeの管理画面を開き、
クエリログへ問い合わせ履歴が表示されていれば設定完了です。
ポイント
- 外出先でも自宅と同じDNSフィルタリング環境を利用できる
- モバイル回線利用時も広告・フィッシング対策が有効
- 自宅ルーター側の設定変更は不要
- Tailscale経由ではNVR510を経由せず、AdGuard Homeへ直接問い合わせを行う
- Tailscaleの詳細設定(Subnet Router、Exit Nodeなど)は別記事でまとめる予定
4.AdGuard Home フィルタリストの追加
AdGuard Homeをインストールした直後でも基本的な広告ブロックは動作しますが、フィルタリストを追加することで効果を高めることができます。
ただし、フィルタを増やし過ぎると正常なサイトまでブロックされる場合があるため、最初は標準的なリストのみ利用するのがおすすめです。
フィルタに関しては、他に紹介しているサイトを参考にして色々試してみて下さい。
現在のDNSブロックリスト
- AdGuard DNS filter
AdGuard Home標準のブロックリストです。
広告やトラッキング、フィッシングサイト対策など、基本的なフィルタリングを行います。 - OISD Blocklist Big
複数の有名なブロックリストを統合したリストです。
利用者も多く、広告・トラッキング・マルウェア関連ドメインを幅広くブロックできます。 - OISD nsfw
アダルトサイト関連のドメインをブロックするためのリストです。
家庭内で利用する端末が多いため、有効化しています。
5.実際に運用してみて
広告が全部消える訳ではありませんが、フィッシングサイト対策や怪しい広告対策としては十分効果を感じています。
また、AdGuard Homeのクエリログを見ると、思った以上にブロックされていて面白いです。
そのうち、この「ブロック済み」が多い端末はどれだろう?と気になってくるのですが、今回の構成ではクライアントから直接AdGuard Homeへ問い合わせていないため、ログ上は全てルーターのアドレスになっています。
実は当初、クライアントから直接AdGuard Homeへ問い合わせる構成にしたかったのですが、IPv6絡みで思ったように動きませんでした。理由は、検証時にわかった事に記載
まだ完全に納得した訳ではないので、この辺りは今後も時間を見つけて検証してみようと思っています。




