家庭向けのルータを探してみても DNS サーバ相当の機能をもった機種は皆無に近い。 私が現在使用している ASUS の RT-AX86U も同様だが、 Asuswrt-Merlin というサードパーティのファームウェアを導入することで可能になるようなので試してみた。
当然ながらメーカーのサポート外となるため、自己責任で実施する必要がある。
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 サーバとして動作するようになる。