セキュリティ強化とトラッキング対策を目的としてVyOSにAdGuardHomeを入れてみたので、備忘録を残しておきます。
環境
- マシン
- VyOS
- 1.4-rolling-202212310809
やること
VyOS 1.4からはcontainer機能が追加されています。 これを用いるとVyOSの環境を汚さずにVyOSの機能追加ができます。
本記事の前提として、vyosのインストール及びルーターとして機能するまでの初期設定は済んでいるものとします。
1. コンテナの追加
adguardhomeのコンテナをVyOSに追加します。
add container image adguard/adguardhome
2. 設定ファイル用ディレクトリの作成
adguardの設定ファイルを入れるためのディレクトリを作ります。
vyosにはos imageのupdateで消えるところと消えないところがあるので、updateしても消えない /config
に保存するようにしています。
sudo mkdir -p /config/opt/adguard/{conf,work}
3. adguard用設定の追加
以下のコマンドを実行してcontainerの設定を追加します。
172.20
の部分はLANのNWとかぶらないように適宜変更してください。
set container name adguard image 'adguard/adguardhome' set container name adguard network adguard-net address '172.20.0.10' set container name adguard volume adguard_conf destination '/opt/adguardhome/conf' set container name adguard volume adguard_conf source '/config/opt/adguard/conf' set container name adguard volume adguard_work destination '/opt/adguardhome/work' set container name adguard volume adguard_work source '/config/opt/adguard/work' set container network adguard-net prefix '172.20.0.0/24'
このコマンド実行後に commit
して、adguardhomeを起動してください。
4. adguardhomeの初期設定をする
adguardhomeはvyosの内部NW(172.20.0.10)に建っているので、通常vyosの外からアクセスできません。 そのため、ssh port forward機能を使ってアクセス経路を作り、初期セットアップを行います。
vyosにSSHログインできる端末から以下を実行してください。
ssh vyos@VYOSのIPアドレス -L 13000:172.20.0.10:3000
ターミナルで接続を維持したまま、ブラウザで http://localhost:13000
を開くとadguardhomeの初回セットアップが開始されます。
セットアップ方法は以下を参考にして行ってください。
セットアップ後、以下のコマンドを実行してdnsが引けるか確認してください。
vyos@vyos:~$ dig @172.20.0.10 google.co.jp ; <<>> DiG 9.16.33-Debian <<>> @172.20.0.10 google.co.jp ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38651 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;google.co.jp. IN A ;; ANSWER SECTION: google.co.jp. 300 IN A 172.217.161.35 ;; Query time: 159 msec ;; SERVER: 172.20.0.10#53(172.20.0.10) ;; WHEN: Thu Jan 05 09:03:12 UTC 2023 ;; MSG SIZE rcvd: 57
ipv6のNWも組んでいる人はAAAAレコードも引けるか確認するのがおすすめです。
vyos@vyos:~$ dig @172.20.0.10 google.co.jp aaaa ; <<>> DiG 9.16.33-Debian <<>> @172.20.0.10 google.co.jp aaaa ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62224 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;google.co.jp. IN AAAA ;; ANSWER SECTION: google.co.jp. 109 IN AAAA 2404:6800:4004:80a::2003 ;; Query time: 9 msec ;; SERVER: 172.20.0.10#53(172.20.0.10) ;; WHEN: Thu Jan 05 09:04:05 UTC 2023 ;; MSG SIZE rcvd: 69
5. vyosのdns forwardで使うDNS serverにadguardhomeを指定する
以下のコマンドを実行して、forwardするDNSサーバーをadguardhomeのものに変更します。
set service dns forwarding name-server '172.20.0.10'
commit
後、LAN側でdigを実行するなどしてdnsが引けるのを確認してください。
(おまけ) 6. adguardhomeの管理画面を開く
初回セットアップ後、port 80番にアクセスするとadguardhomeの管理画面に接続できます。 この際、初回セットアップ時と同様にport forwardが必要です。
ssh vyos@VYOSのIPアドレス -L 18080:172.20.0.10:80
コマンド実行後 http://localhost:18080
にアクセスすると管理画面が開けます。
(おまけ) 7. マルウェアブロックできる上流DNSサーバーに変更する
上流DNSサーバーを変更することで悪性ドメインへのアクセスを防ごうと思います。 マルウェア対策が行われている公開dnsサーバーはいくつかありますが、以下の理由でcloudflareのDNSサーバーを利用することにしました。
adguardhomeの管理画面に入り、上流DNSサーバーを https://security.cloudflare-dns.com/dns-query
に設定してください。
設定を保存して反映し、LAN側のマシンでdig等を使いAレコードとAAAAレコードが引けるのを確認して、問題なければ変更完了です。
adguardhome導入その後
ここまでセットアップしてしばらく使用してみたところ、主にスマフォアプリがNWエラーで使えなくなる問題が多発したので、結局アドブロックとトラッキングブロック機能をOFFにすることにしました。
今はDoHをDNSに変換したり、接続先を可視化するレイヤーとしてadguardhomeを利用しています。