メインコンテンツへスキップ
見出し画像

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内と外からで同じアプリにログインできるようにする予定。

    <関連記事>



     
     

    tama

     
     
    本拠地・個人ブログ web: https://hack-le.com noteはブログの転載です。よければきてね

    あなたへのおすすめ