DNSを設定し、ルーター・クライアント・ブラウザーで確認する
次の3点を個別に確認できるようになります。
- ルーターはどの上流DNSサーバーを使っているか
- クライアントはOpenWrtからどのDNSサーバーを受け取っているか
- ブラウザーがDoHでシステムのリゾルバーを迂回していないか
設定変更に失敗しても、名前解決できる状態に戻せます。
- OpenWrt 25.12.6、既定の
dnsmasqとodhcpd。25.12はapk、24.10はopkgを使います。 - 確認コマンドに追加パッケージは不要です。
unboundやhttps-dns-proxyを使っている場合は、先にどちらがポート53を使っているか確認してください。 - 24.10でもメニュー名と設定キーはほぼ同じですが、パッケージ関連のコマンドは異なります。
apkのコマンドを24.10にそのまま使わないでください。
DNSの経路と担当
Section titled “DNSの経路と担当”| 場所 | 既定の担当 | 確認すること |
|---|---|---|
| WAN上流 | DHCP/PPPoEクライアント | cat /tmp/resolv.conf.d/resolv.conf.auto |
| ルーターのリゾルバー | dnsmasq |
nslookup openwrt.org 127.0.0.1 |
| LANへの通知 | dnsmasq のDHCPオプション6、odhcpd のRDNSS |
クライアントに表示されるDNS |
| ブラウザー | システムのリゾルバー、またはブラウザーのDoH | ブラウザーのセキュアDNS設定 |
DNSサーバーを置き換える前に、どの層に問題があるかを切り分けます。
変更前の準備
Section titled “変更前の準備”cp /etc/config/dhcp /etc/config/dhcp.bak.$(date +%F)uci export dhcp > /tmp/dhcp.beforeuci show dhcp | grep -E 'dns|resolv|server|option'LuCIとSSHには有線LANで接続できる状態を保ってください。変更中のDNSに、唯一の管理経路を依存させないでください。
期待される結果バックアップがあり、復元方法がわかっている。
cat /tmp/resolv.conf.d/resolv.conf.autouci show dhcp.@dnsmasq[0]uci show network.wan | grep -E 'peerdns|dns'/tmp/resolv.conf.d/resolv.conf.auto はWANクライアントが書き込みます。実際の dhcp.@dnsmasq[0].resolvfile の値を確認してください。noresolv='1' の場合、dnsmasqはこのファイルを無視し、server のリストを使います。
期待される結果現在のresolvfile、server、noresolvの値を説明できる。
ネットワーク → インターフェース → WAN → 詳細設定 を開きます。
- 「ピアにより通知されたDNSサーバーを使用」のチェックを外します(
peerdnsが0になります)。 - 「カスタムDNSサーバーを使用」に、信頼できるDNSサーバーを追加します。例:
1.1.1.1、9.9.9.9 - 保存して適用し、必要ならWANを再接続します。
WANが一時的に途切れますが、LANのDHCP/DNS構成は変わらないため、元に戻しやすい方法です。
期待される結果WANを再接続すると、上流リゾルバーが設定した値になる。
netstat -lnp | grep ':53'/etc/init.d/dnsmasq restartlogread -e dnsmasq | tail -20dnsmasq が起動しない場合は、DHCPオプションの変更を止めてください。エラーメッセージから、構文エラーかポートの競合かを調べます。
期待される結果ポート53が待ち受け状態で、ログに設定エラーがない。
ネットワーク → DHCPおよびDNS → DHCPサーバー → 詳細設定 を開き、「DHCPオプション」を確認します。オプション6がなければ、クライアントは通常ルーターのLANアドレスをDNSとして使います。オプション6があれば、そのアドレスを直接受け取ります。
ポート53で待ち受けていないアドレスを、クライアントのDNSに指定しないでください。
期待される結果クライアントがOpenWrtのLANアドレス、または意図したオプション6のアドレスを受け取る。
uci set network.wan.peerdns='0'uci -q delete network.wan.dnsuci add_list network.wan.dns='1.1.1.1'uci commit networkifup wancat /tmp/resolv.conf.d/resolv.conf.auto変更後は logread -e dnsmasq で新しい上流を確認します。クライアントが古いDNSを受け取り続ける場合は、dnsmasqを再起動するか、DHCPオプション6を確認してください。
期待される結果resolv.autoに1.1.1.1が表示され、問い合わせが成功する。
クライアントからの確認
Section titled “クライアントからの確認”nslookup openwrt.org 127.0.0.1nslookup -type=AAAA openwrt.org 127.0.0.1期待される結果どちらの問い合わせもタイムアウトせず応答が返る。
Linux:
resolvectl statuscat /etc/resolv.confnslookup openwrt.orgWindows:
ipconfig /allnslookup openwrt.orgmacOS:
scutil --dnsnslookup openwrt.org期待される結果クライアントのDNSがDHCPまたは静的設定と一致し、名前解決できる。
Chrome/Edge: chrome://settings/security、または「プライバシーとセキュリティ → セキュリティ → セキュアDNSを使用する」。Firefox: 設定 → プライバシーとセキュリティ → DNS over HTTPS。DoHがオンだとシステムのリゾルバーがまったく使われないことがあり、「ルーターのDNS設定が効かない」ように見えます。
期待される結果テスト中はDoHがオフ、または向き先を正確に把握している。
nslookup -type=AAAA openwrt.orgip -6 route上流にIPv6プレフィックスがない場合、IPv4の結果からIPv6のDNSが正常だと判断しないでください。
期待される結果IPv6の上流があればAAAAが解決できる。なければ不足している条件を記録する。
失敗時の分岐と復旧
Section titled “失敗時の分岐と復旧”ページは開かないが、IPアドレスへのpingは通る
Section titled “ページは開かないが、IPアドレスへのpingは通る”まずDNSを疑います。
- クライアントのリゾルバーを確認します:
resolvectl status、ipconfig /all、scutil --dns - ルーターでポート53とdnsmasqのログを確認します:
netstat -lnp | grep ':53'、logread -e dnsmasq - ブラウザーのDoHを確認し、一時的に無効にします。
- DHCPオプション6に誤ったアドレスがないか確認します。
LuCI/SSHにつながらない
Section titled “LuCI/SSHにつながらない”DNSの変更を止めます。有線のクライアントをLANに接続し、同じサブネットの静的アドレスを設定して、ゲートウェイがOpenWrtのLANアドレスであることを確認します。コンソールまたはSSHから復元します。
cp /etc/config/dhcp.bak.YYYY-MM-DD /etc/config/dhcpuci commit dhcp/etc/init.d/dnsmasq restartWANのDNSを変更した場合は、上流DNSの自動取得に戻します。
uci set network.wan.peerdns='1'uci -q delete network.wan.dnsuci commit networkifup wanWANのDNSを変えたのにクライアントが古いリゾルバーを使う
Section titled “WANのDNSを変えたのにクライアントが古いリゾルバーを使う”resolv.auto が変わったか、次にdnsmasqが新しい上流を読み込んだかを確認します。
cat /tmp/resolv.conf.d/resolv.conf.autologread -e dnsmasq | tail -20/etc/init.d/dnsmasq restartresolv.auto が変わっていなければ、network.wan.dns と peerdns を確認します。クライアントが古いDNSを受け取り続ける場合は、DHCPオプション6とブラウザーのDoHを確認してください。
dnsmasqが起動しない
Section titled “dnsmasqが起動しない”何度も再起動せず、エラーを読みます。
logread -e dnsmasq | tail -50dnsmasq --testよくある原因は、別のリゾルバーによるポート53の占有、構文エラー、到達できない上流です。まずバックアップを復元し、カスタム設定は1つずつ戻してください。
E2ラボ検証(2026-10-20)
Section titled “E2ラボ検証(2026-10-20)”- 環境: PVE 9.2.2 シングルNIC、OpenWrt 25.12.6 VM 200。WAN
192.168.50.77/24、LAN192.168.1.1/24 - ベースライン:
resolv.autoはnameserver 192.168.50.1。nslookup openwrt.org 127.0.0.1はA/AAAAを返した。 - カスタム:
peerdns=0とnetwork.wan.dns=1.1.1.1。resolv.autoはnameserver 1.1.1.1に変わり、問い合わせは成功した。 - 障害: dnsmasqの上流を到達不能な
192.0.2.1に設定すると、ランダムな.example.comの問い合わせはconnection timed out; no servers could be reachedを返した。noresolv/serverを削除してpeerdns=1に戻すと名前解決が復旧した。 - クライアント: netnsのDHCPで
192.168.1.116/24、DNS192.168.1.1を取得。dig @192.168.1.1 openwrt.orgは成功し、ping 192.168.50.1も通った。 - 未検証: ブラウザーのDoH、IPv6の上流/RA/RDNSS、物理LANクライアント、長期の安定性
出典とレビュー
Section titled “出典とレビュー”- このページにはE2のラボ再現があります。ブラウザーのDoHとIPv6の上流は未検証のため、検証済みとは記述しないでください。
- 根拠:
docs/dns-e2-run.mdとtests/recipes/dns-25.12-x86.md - メニューやバージョンが変わったら
testedVersionsとlastVerifiedAtを更新してください。25.12の手順に24.10のopkgコマンドを入れないでください。
出典
独立した OpenWrt の実践ノートです。各ページにファームウェア、デバイス、パッケージマネージャー、元に戻す手順を明記しています。
アイコン:Solar by 480 Design, CC BY 4.0