Asuswrt-Merlin を導入して RT-AX86U を簡易 DNS サーバとして動かす

家庭向けのルータを探してみても DNS サーバ相当の機能をもった機種は皆無に近い。 私が現在使用している ASUS の RT-AX86U も同様だが、 Asuswrt-Merlin というサードパーティファームウェアを導入することで可能になるようなので試してみた。

www.asuswrt-merlin.net

当然ながらメーカーのサポート外となるため、自己責任で実施する必要がある。

Asuswrt-Merlinの導入インストール

ダウンロードページからダウンロードサイトを選択し、使用している機種のファームウェアをダウンロードして zip ファイルを展開しておく。

執筆時点でのRT-AX86Uの Asuswrt-Merlin ファームウェアバージョンは388.1であった。

ルータ管理画面の /Advanced_FirmwareUpgrade_Content.asp にアクセスし、「ファームウェア手動更新」の項目からファームウェアファイルをアップロードする。

公式ファームウェアに戻したい場合も同様の手順で戻すことができる。 RT-AX86U の公式ファームウェアここから入手することができた。

SSH と カスタム設定ファイルを有効にする

ルータ設定画面の /Advanced_System_Content.asp にアクセスし、以下のように変更しておく

カスタム設定の有効化

SSH の有効化 LAN からしかアクセスしないので LAN Only にしておく

設定変更後、画面下部で変更内容を適用する。

カスタム設定ファイルについて

Asus-Merlin では SSH でログインし、/jffs/configs/ にカスタム設定ファイルを配置することで、ルータ内で動作しているデーモンの設定をオーバーライドすることができ、オーバーライドに対応したファイルの一覧はドキュメントで確認するできる。

今回は dnsmasq の設定をオーバーライドして LAN 内のドメインの名前解決をできるようにしたい。

dnsmasq の設定を変更する

/jffs/configs/dnsmasq.conf を配置し、設定ファイルをまるごと記述していってもいいが、名前解決の設定を追加したいだけであれば dnsmasq.conf.add で必要な設定だけを追記していくこともできる。

foo.example.com の名前を 192.168.0.254 に解決できるようにしたい場合、以下のように dnsmasq.conf.add を作成すれば良い。

# cat > /jffs/configs/dnsmasq.conf.add
address=/foo.example.com/192.168.0.254

作成後、dnsmasq を再起動することで設定が反映される

# service restart_dnsmasq

これで RT-AX86U が簡素な DNS サーバとして動作するようになる。