TailscaleとAdGuardDNSを使って広告からサヨナラしてみた。

## はじめに
いきなりですが、**広告**、ちょっと邪魔ですよね。

しかし、Chromeの拡張機能のAdBlockなどは使わせてくれないサイトも多くなってきましたね。

そこで、TailscaleのMagicDNSで自前のDNSを使えることが分かったので、実際に試してみたので、備忘録かねて書いてみようと思います。

[公式HPのMagicDNSについて](https://tailscale.com/kb/1054/dns)

## AdGuardDNSを構築
（めっちゃ簡単です。）

まずは、適当に24時間動いているubuntuを用意します。ラズベリーパイとかなんでもいいと思います。

[GitHub](https://github.com/AdguardTeam/AdGuardHome)にそってインストールします。
```shell :AdGuard Homeをインストール
$ curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
starting AdGuard Home installation script
channel: release
operating system: linux
cpu type: amd64
AdGuard Home will be installed into /opt/AdGuardHome
checking tar
note that AdGuard Home requires root privileges to install using this script
restarting with root privileges
[sudo] password for name: PASSWORD
starting AdGuard Home installation script
channel: release
operating system: linux
cpu type: amd64
AdGuard Home will be installed into /opt/AdGuardHome
checking tar
script is executed with root privileges
no need to uninstall
downloading package from https://static.adtidy.org/adguardhome/release/AdGuardHome_linux_amd64.tar.gz -> AdGuardHome_linux_amd64.tar.gz
successfully downloaded AdGuardHome_linux_amd64.tar.gz
unpacking package from AdGuardHome_linux_amd64.tar.gz into /opt
successfully unpacked, contents:
total 29888
-rwxrwxrwx 1 root root 30417048 Jul  4 15:44 AdGuardHome
-rw-rw-rw- 1 root root      566 Jul  4 15:44 AdGuardHome.sig
-rw-r--r-- 1 root root   117539 Jul  4 15:44 CHANGELOG.md
-rw-r--r-- 1 root root    35149 Jul  4 15:44 LICENSE.txt
-rw-r--r-- 1 root root    21812 Jul  4 15:44 README.md
2024/07/05 17:28:38 [info] AdGuard Home, version v0.107.52
2024/07/05 17:28:38 [info] service: control action: install
2024/07/05 17:28:38 [info] service: started
2024/07/05 17:28:38 [info] Almost ready!
AdGuard Home is successfully installed and will automatically start on boot.
There are a few more things that must be configured before you can use it.
Click on the link below and follow the Installation Wizard steps to finish setup.
AdGuard Home is now available at the following addresses:
2024/07/05 17:28:38 [info] go to http://127.0.0.1:3000
2024/07/05 17:28:38 [info] go to http://[::1]:3000
2024/07/05 17:28:38 [info] go to http://IPアドレス:3000
2024/07/05 17:28:38 [info] go to http://IPアドレスv6:3000
2024/07/05 17:28:38 [info] service: action install has been done successfully on linux-systemd
AdGuard Home is now installed and running
you can control the service status with the following commands:
sudo /opt/AdGuardHome/AdGuardHome -s start|stop|restart|status|install|uninstall
```

後は、http: //IPアドレス:3000 にアクセスして設定していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/d1daa709-9f5d-12ba-c616-d9bec2ea6e26.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/75df6715-63d0-1956-25ae-e788988b93bc.png)
ここで赤枠で囲った部分に問題が起きていると思います。
書いてある[リンク](https://github.com/AdguardTeam/AdGuardHome/wiki/FAQ#bindinuse)に沿って変更します。
```
$ sudo lsof -i :53
COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 651 systemd-resolve   13u  IPv4  16307      0t0  UDP localhost:domain
systemd-r 651 systemd-resolve   14u  IPv4  16308      0t0  TCP localhost:domain (LISTEN)
$ sudo mkdir -p /etc/systemd/resolved.conf.d
$ sudo nano /etc/systemd/resolved.conf.d/adguardhome.conf
[Resolve]
DNS=127.0.0.1
DNSStubListener=no
$ sudo mv /etc/resolv.conf /etc/resolv.conf.backup
$ sudo systemctl reload-or-restart systemd-resolved
```
としてリロードすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/5f93b77f-a4b0-af1e-04dc-7a5970ebdc11.png)
消えているので、めでたしめでたし。


あとはユーザとか設定したら、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/70802295-9880-0cc3-6d3b-9457877a8329.png)
完成！

めっちゃ簡単でしたね。

（家で使うだけだったらセットアップガイドを参考にしてDNS設定を変更するだけで十分です。）


## TailscaleのMagicDNSにAdGuardDNSを設定
ここからが本題です。

AdGuard HomeをインストールしたubuntuにTailscaleをインストールします。
```shell: Tailscaleをインストール
$ curl -fsSL https://tailscale.com/install.sh | sh
```
```
$ sudo tailscale up
```
で起動してログインなどしてください。

そして、Tailscaleのアドレスを確認してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/40048981-2abe-fa7c-191f-0898f2a30877.png)


確認したら、DNS > Global nameservers > Add nameserver に確認したアドレスを入力してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/4f2a5562-d4de-dedb-e8b3-f272cde808d2.png)
( ↑この画像はすでに追加済みの画面です... )
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/4d6b746a-214d-22df-221a-a3fa2404d3af.png)




これで、Tailscaleに接続したデバイスからであればAdGuard HomeのDNSを使用することになり、家の外でも広告からおさらばすることができます。


## 比較
ざっくりと比較をしてみました。（宅内とスマホのテザリングに接続したwindowsパソコンのWSLからdigコマンドで測定）
|  | TailscaleのDNS | CloudflareのDNS |
|:-:|:-:| :-: |
| 宅内 | 19msec | 9msec |
| テザリング | 109msec | 79msec |


CloudflareのDNSの方が早いですが、差も許容範囲内ではないでしょうか。
これで広告がなくなって通信料も節約できるかもと思えば十分に許せるレベルかと思います。

## 補足
あまり使わないけど、たまに使うことを書いておきます。

ubuntuなどでTailscaleに接続したいけど、DNSは使いたくない。というときは
```
tailscale up --accept-dns=false
```
で解決します。（スマホなどはアプリ設定からできます。）



## ほかにもおすすめのTailscale機能（布教）
iPhoneユーザならAirDropでスマホで撮った写真をiPadなどに送る等できますが、
AndroidユーザがiPadやパソコンに送るのにAirDropが使えなくて、困ったことあると思います。
そんな時にはTaildropを使うととても便利に送受信できるので、ぜひ試してみてください。
(まだアルファ版ですが...)

使い方もとってもシンプルで、共有からTailscaleのアプリを選んで、送り先を選択するだけです。

https://tailscale.com/kb/1106/taildrop


## まとめ
これで、無事Tailscaleに接続されているときは家でも外出先でも広告フリーな生活が送れるようになりました。

とっても簡単だったと思います。ぜひ参考にしてみてください。



## 参考にさせていただいたサイト
- [AdGuard Home GitHub wiki](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started)
- [Tailscale](https://tailscale.com/kb/1054/dns)