電電公社のHGWがDHCPで配布するDNSを変更できないポンコツなのでAdGuard Homeと入れ替える

自宅で使用している固定回線がフレッツ光+v6プラスなので、手持ちのRT2600acではなく、HGWでDHCPを行っていた。
NTTから貸与されているHGWがRS-500KIなんだけど、コイツはDHCPv4で配布するDNSサーバーのIPアドレスを指定できない。

各端末で毎回1.1.1.1, 1.0.0.1を指定するのもダルいので、重い腰を上げてDHCPv4をAdGuard Homeに移行した。


まずはRT2600acでAdGuard Homeを動かす。
SDカードに諸々を置くので、SDカードのマウントポイントを探る。

SynologyRouter> df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/hda5                 1.1G    910.6M    146.2M  86% /
/tmp                    233.1M    740.0K    232.4M   0% /tmp
/run                    233.1M      2.3M    230.8M   1% /run
/dev/shm                233.1M         0    233.1M   0% /dev/shm
/dev/bus/usb            229.9M         0    229.9M   0% /proc/bus/usb
/dev/sda6                 1.9G    316.8M      1.5G  17% /volume1
/dev/sdq1                29.2G    199.4M     28.9G   1% /volumeUSB3/usbshare3-1
/dev/sdr1               458.3G      1.0G    457.2G   0% /volumeUSB1/usbshare

マウントポイントが分かったら適当にディレクトリを掘る。

SynologyRouter> mkdir /volumeUSB3/usbshare3-1/@system

GitHubのリリースページから、linux_armv7なtarボールを落とす。
解凍もする。

SynologyRouter> cd /volumeUSB3/usbshare3-1/@system
SynologyRouter> wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.3/AdGuardHome_linux_armv7.tar.gz
SynologyRouter> tar xf AdGuardHome_linux_armv7.tar.gz
SynologyRouter> rm AdGuardHome_linux_armv7.tar.gz

データ用ディレクトリを用意する。
ここにはconfigとかDBとかが入る。

SynologyRouter> mkdir AdGuardHome/data

サポートスクリプトを用意する。
とりあえず起動と停止用。

SynologyRouter> touch AdGuardHome/start.sh
SynologyRouter> touch AdGuardHome/stop.sh
SynologyRouter> chmod +x AdGuardHome/*.sh
SynologyRouter> vi AdGuardHome/start.sh
#!/bin/sh

nohup ./AdGuardHome -w . -c data/config.ini --pidfile /run/adguardhome.pid > /dev/null 2> /dev/null &
SynologyRouter> vi AdGuardHome/stop.sh
#!/bin/sh

kill `cat /run/adguardhome.pid`

デーモンを用意する。
フォーラムによると/usr/local/etc/rc.d/配下に置けばいいらしいので、そのようにする。

SynologyRouter> touch /usr/local/etc/rc.d/adguardhome.sh
SynologyRouter> chmod +x /usr/local/etc/rc.d/adguardhome.sh
SynologyRouter> vi /usr/local/etc/rc.d/adguardhome.sh
#!/bin/sh
cd /volumeUSB3/usbshare3-1/@system/AdGuardHome

case "$1" in
        start) ./start.sh ;;
        stop) ./stop.sh ;;
        status) echo not support ;;
esac

一旦AdGuard Homeを起動して、管理者アカウントの設定をしたら終了させる。

SynologyRouter> /usr/local/etc/rc.d/adguardhome.sh start 
# http://RT2600acのIPアドレス:3000 にアクセスして初期設定を行う
SynologyRouter> /usr/local/etc/rc.d/adguardhome.sh stop 

config.iniを編集して、DHCPv6からRAに変える。

SynologyRouter> vi AdGuardHome/data/config.ini
...

dhcp:
  enabled: true
  interface_name: br0
  dhcpv4:
    gateway_ip: 172.16.35.254
    subnet_mask: 255.255.252.0
    range_start: 172.16.32.1
    range_end: 172.16.32.239
    lease_duration: 86400
    icmp_timeout_msec: 1000
    options: []
  dhcpv6:
    range_start: 2001::1 #無視されるので適当な値で良い
    lease_duration: 86400
    ra_slaac_only: true #RAを使うように変更
    ra_allow_slaac: false

...

RS-500KIのDHCPを切ってから、再度AdGuard Homeを起動する。

SynologyRouter> /usr/local/etc/rc.d/adguardhome.sh start 

これでDHCPv4がAdGuard Homeになって、通知されるDNSサーバーもAdGuard Homeになる。
※ IPv6側はRAのままなので、IPv4のDNSよりもIPv6のDNSが優先されているとAdGuard Homeを迂回してしまう