Jul 21, 2026

OPNsenseに、後でUnbound DNSを導入する場合は

テスト前に、WireGuardのクライアント設定(confファイル)にも、Unbound DNSのIPを設定すべし。

OPNsenseの各種機能を順に試しながら Unbound DNSを導入していて
(Peerの設定変更は要らないと思い込んでいたり、大きな変更は後からで良いと思い込んでいると)
port 53/udpだけ OPNsenseに到達しない現象でハマるので、メモ。

--- 以下 Geminiの回答を編集した --->

結論、解決のための具体的アクション

Unbound DNS(例、10.0.0.1)経由で NextDNS のキャッシュ機能を利用できるようにするには、以下の手順で設定を変更してください。

Step 1: クライアント側(または OPNsense の Peer 設定)の DNS 変更

WireGuard クライアントの .conf ファイル(または自作ルータの WG 設定)内の DNS 項目を変更します。

Ini, TOML
[Interface]
...
# 変更前: DNS = 1.1.1.2
# 変更後: OPNsense の WireGuard IP を指定する
DNS = 10.0.0.1

Step 2: テストの実行

変更を反映(VPN再接続)させた後、クライアント PC から以下を実行します:

Bash

# 1. Unbound(10.0.0.1)宛ての 53/UDP 通信チェック
nmap -sU -p 53 10.0.0.1

# 2. OPNsense(10.0.0.1)を指定した名前解決テスト
nslookup google.com 10.0.0.1

これで、クライアント OS が 10.0.0.1 への 53/UDP 通信を「正当な DNS 通信」とみなし、パケットがトンネルを通過して OPNsense の WireGuard i/f(tcpdump)に届くようになります。

OPNsense 公式ドキュメントにおける位置づけ

OPNsense の公式ドキュメント(WireGuard Road Warrior Setup / Unbound Integration) には、まさにこの挙動に関連する非常に重要な注意書きが記載されています。

OPNsense Documentation Quote: "If using the peer generator and require Unbound DNS to serve names, fill the DNS server with the tunnel address (e.g. 10.0.0.1)." "Leave the DNS Server field blank... Otherwise WireGuard will overwrite OPNsense's DNS configuration."

OPNsense の設計として、「Unbound DNS を WireGuard クライアントに使わせたい場合は、WireGuard のクライアント設定(Peer/Interface)で配る DNS アドレスに、OPNsense のトンネル IP(10.0.0.1)を明示指定しなければならない」 と定められています。

まとめ

    1.1.1.2 以外の 53/UDP が通らなかった原因: WireGuard クライアント側で DNS = 1.1.1.2 を配布していたため、それ以外の IP 宛ての 53/UDP がクライアント側で排除されていた。

    対処法: WireGuard の配布 DNS を 10.0.0.1(Unbound が Listen している OPNsense のトンネル IP)へ差し替える。

No comments: