Linux Mint Xfce + AdGuard Home (+Tailscale) を構成する

今回はLinuxサーバにAdGuard HomeでLAN内DNSをたてる手順のメモ。ついでにTailscaleを使っている場合はもう一手間かかるのでそれも書く。

目次

環境

  • Linux Mint Xfce 22.3
    • ThinkPad L390
  • AdGuardHome
  • ついでにTailscale

Tailscaleを利用している場合は設定がちょっと増えるのでおまけ。

AdGuardHome

53番問題がややこしいのでLinuxでやるのが望ましいのかなと思った。ネットワークを直接使うようなものなので、Dockerよりネイティブでやるほうがいいかなとも思う。

ポート53を開ける

まずLinux Mint Xfceというか、Ubuntu系列だと、53番はすでに使われているかと思う。以下のsystemd-resolveはUbuntuの機能であるらしい。

$ sudo lsof -i :53
COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 589 systemd-resolve   14u  IPv4   8130      0t0  UDP _localdnsstub:domain 
systemd-r 589 systemd-resolve   15u  IPv4   8131      0t0  TCP _localdnsstub:domain (LISTEN)
systemd-r 589 systemd-resolve   16u  IPv4   8132      0t0  UDP _localdnsproxy:domain 
systemd-r 589 systemd-resolve   17u  IPv4   8133      0t0  TCP _localdnsproxy:domain (LISTEN)

FAQ(よくあるご質問) | AdGuard DNS Knowledge Base

こいつを殺す必要がある。殺す手順はドキュメントのとおりなのだが

sudo mkdir -p /etc/systemd/resolved.conf.d

そんで/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 ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

sudo systemctl reload-or-restart systemd-resolved

これでもう一度53番を見たら何もないはず。

インストール

Getting started | AdGuard DNS Knowledge Baseに従う。

ポート53を開けていれば、問題なく進むはず。

ルータの設定だけ、DNSサーバをLinuxマシンのIPにする。ここで、ルータ側でMACアドレスでIPアドレス決め打ちの設定をするとよい。このへんの設定はルータによるので割愛。

ファイアウォール

他PCからアクセスするのにポートを開ける。

# DNS問い合わせを受け付けるために必須(UDP/TCP両方)
sudo ufw allow 53

# Web管理画面にアクセスするために必要
sudo ufw allow 80/tcp

# 設定変更を反映
sudo ufw reload

80はAdGuardのダッシュボード。

確認

LAN内のPCから以下を実行して結果を見る。

nslookup doubleclick.net サーバのIPアドレス

これは広告配信ドメインなので、これが無効化されるはず。以下のような結果になる。

Server:		サーバのIP
Address:	サーバのIP#53

Non-authoritative answer:
Name:	doubleclick.net
Address: 0.0.0.0

(optional) ダッシュボードのポートを変更する

ダッシュボードがポート80という特等席を使ってしまっている。多分他にもっと大事なのに譲ったほうが良い。僕の場合はCaddy使うので変更が必要。

/opt/AdGuardHome/AdGuardHome.yamlを編集する。

http:
  address: 0.0.0.0:80  # ここを 適当なポート に変更

再起動する。

sudo systemctl restart AdGuardHome

ufwも設定。

sudo ufw allow ポート番号

他端末からブラウザで http://IPアドレス:ポート番号でダッシュボードを開けたらOK。

ああ…次はTailscaleだ…

Tailscale

Tailscaleを使っている場合、Tailscale側でもDNSの設定をする必要がある。そのままだとnslookupの実行結果は以下のようになるはずだ。

> nslookup doubleclick.net
Server:		100.100.100.100
Address:	100.100.100.100#53

Non-authoritative answer:
Name:	doubleclick.net
Address: 142.251.23.100
Name:	doubleclick.net
Address: 142.251.23.102
Name:	doubleclick.net
Address: 142.251.23.138
Name:	doubleclick.net
Address: 142.251.23.139
Name:	doubleclick.net
Address: 142.251.23.113
Name:	doubleclick.net
Address: 142.251.23.101

TailscaleのDNSが使われてしまう。なので、LocalにたてたAdGuard Homeに向ける設定が必要。

TailscaleのWebコンソールにログインして、AdGuardHomeをインストールしたLinux PCのTailscaleのPrivate IPを調べる。

で、それをTailscaleのDNS設定より、メモしたIPアドレスをnameserverとして利用するように設定する。

Add nameserverの「Custom...」よりIPアドレスを入れて、Override DNS serversをONにする。

これで、以下のようになるはずだ。

> nslookup doubleclick.net
Server:		100.100.100.100
Address:	100.100.100.100#53

Non-authoritative answer:
Name:	doubleclick.net
Address: 0.0.0.0

AdGuard Home側の設定

外からつなげる場合、AGHのDNS書き換えを192.168.x.xではなく、TailscaleのIPアドレスにしないといけない。

Androidの場合の設定

Androidの場合、Tailscaleアプリを入れてもConnectedでDNSに到達しないと怒られたりする。以下より、プライベートDNSをOFFにする。

Android: 設定 > ネットワークとインターネット > プライベートDNS

所感

なんだかんだで手こずった。

ちなみに僕はこの後Caddyを入れて、同一ドメインでLAN内と外からで同じアプリにログインできるようにする予定。

<関連記事>

この記事をいいなと思っていただけた方、よければ高評価・チャンネル登録……はないので、コメント・SNSでシェア・ブックマーク、RSSフィード登録を、よろしくお願い致します。

コメント

コメントする

目次