VyOS の DNS forwarding は、内部ネットワークの端末から見た名前解決の入口をルーター側に置くための機能です。端末には VyOS の内部向けアドレスを DNS サーバーとして配り、VyOS が上流 DNS や内部 DNS サーバーへ問い合わせを転送します。
DNS forwarding では、単に上流 DNS を指定するだけでは足りません。どのアドレスで待ち受けるか、どのネットワークから問い合わせを受けるか、内部ドメインをどこへ転送するか、上流へどの送信元で問い合わせるかを分けて考えます。
この記事では、VyOS 1.5 系で読むことを前提に、DNS forwarding を内部ネットワークの名前解決基盤として使う場合の設計、設定例、確認手順をまとめます。ドメイン名と IP アドレスは公開用の例です。
書籍
DNS、DHCP、ルーティング、ネットワーク設計の基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
この記事の結論
- DNS forwarding は内部端末向けの名前解決入口である
- listen-address と allow-from を分けて設定する
- 内部ドメインだけ内部 DNS へ転送する構成にすると責務を分けやすい
- DHCP で配る DNS サーバーと VyOS の待受アドレスを合わせる
- DNS の問題は Firewall、経路、NTP、上流 DNS も含めて確認する
DNS forwarding の役割
DNS forwarding は、VyOS 自身が内部端末から DNS 問い合わせを受け、必要に応じて上流 DNS や内部 DNS サーバーへ転送する構成です。VyOS がすべての DNS ゾーンを持つのではなく、内部端末から見た問い合わせ先を集約する役割として扱います。
| 要素 | 役割 | 見ること |
|---|---|---|
listen-address | DNS を待ち受けるアドレス | 内部端末から到達できるか |
allow-from | 問い合わせ元の許可範囲 | 外部や不要なセグメントを許可していないか |
name-server | 通常問い合わせの上流 DNS | IPv4 / IPv6 の到達性 |
| domain forwarding | 特定ドメインの転送先 | 内部 DNS へ向けるドメイン |
source-address | 上流へ問い合わせる送信元 | Firewall や経路制御との整合 |
待ち受けアドレスと許可範囲
listen-address は VyOS が DNS 問い合わせを受けるアドレスです。allow-from は問い合わせを受け付ける送信元ネットワークです。この 2 つを分けることで、意図しないネットワークからの問い合わせを避けやすくなります。
configure
set service dns forwarding listen-address '10.0.255.53'
set service dns forwarding listen-address 'fd00::53'
set service dns forwarding allow-from '10.0.0.0/8'
set service dns forwarding allow-from '172.16.0.0/12'
set service dns forwarding allow-from '192.168.0.0/16'
set service dns forwarding allow-from 'fd00::/8'
commit
saveDNS forwarding は内部向けサービスとして扱います。外部から広く問い合わせを受ける構成にすると、意図しない DNS リレーや負荷の原因になります。Firewall だけでなく、DNS forwarding 側でも問い合わせ元を絞ります。
内部ドメインだけ転送する
内部ドメインを使っている場合、すべての問い合わせを外部 DNS へ流すのではなく、特定ドメインだけ内部 DNS サーバーへ転送します。これにより、内部名と外部名の解決先を分けられます。
configure
set service dns forwarding domain core.example.internal name-server '10.0.10.53'
set service dns forwarding domain core.example.internal name-server 'fd00::10:53'
set service dns forwarding domain mgmt.example.internal name-server '10.0.10.53'
set service dns forwarding domain mgmt.example.internal name-server 'fd00::10:53'
commit
saveこの構成では、VyOS は内部端末に対する DNS の入口であり、内部ドメインの権威サーバーではありません。内部ドメインのゾーン管理は別の内部 DNS サーバーに任せると、役割が分かりやすくなります。
上流 DNS と送信元アドレス
通常のインターネット向け名前解決は、上流 DNS へ転送します。複数の上流 DNS を指定する場合も、どの送信元アドレスで問い合わせるかを明示しておくと、Firewall や経路制御と合わせて追いやすくなります。
configure
set service dns forwarding name-server '203.0.113.53'
set service dns forwarding name-server '2001:db8::53'
set service dns forwarding source-address '10.0.255.53'
set service dns forwarding source-address 'fd00::53'
set service dns forwarding dnssec 'validate'
commit
saveDNSSEC 検証を有効にする場合、時刻同期や上流 DNS との疎通も前提になります。DNS の問題に見えて、実際には NTP、Firewall、経路制御、上流 DNS 側の応答が原因になることもあります。
DHCP と組み合わせる
内部端末へ VyOS の DNS forwarding を使わせる場合、DHCP で配る name-server も合わせます。DHCP はアドレス配布、DNS forwarding は名前解決の入口です。両方を合わせることで、端末側の設定を単純にできます。
configure
set service dhcp-server shared-network-name INSIDE option name-server '10.0.255.53'
set service dhcp-server shared-network-name INSIDE option ntp-server '10.0.255.123'
commit
saveIPv6 の端末へ DNS サーバーを配る場合は、SLAAC、RA、DHCPv6 のどれで通知するかも確認します。IPv4 DHCP だけを見ていると、IPv6 側の名前解決だけ別経路になっていることがあります。
Firewall で守る
DNS forwarding 側の allow-from だけでなく、Firewall でも内部側からの DNS 問い合わせだけを許可します。外部側から VyOS の DNS へ到達できる構成にしないことが基本です。
configure
set firewall ipv4 name TRUST-LOCAL rule 530 action 'accept'
set firewall ipv4 name TRUST-LOCAL rule 530 protocol 'tcp_udp'
set firewall ipv4 name TRUST-LOCAL rule 530 destination port '53'
set firewall ipv6 name TRUST-LOCAL-V6 rule 530 action 'accept'
set firewall ipv6 name TRUST-LOCAL-V6 rule 530 protocol 'tcp_udp'
set firewall ipv6 name TRUST-LOCAL-V6 rule 530 destination port '53'
commit
save確認する
確認では、VyOS が DNS を待ち受けていること、内部端末から問い合わせられること、内部ドメインと外部ドメインの転送先が意図通りであることを分けて見ます。
show configuration commands | match 'service dns forwarding'
show dns forwarding statistics
nslookup host.core.example.internal 10.0.255.53
nslookup www.example.com 10.0.255.53内部名だけ失敗する場合は domain forwarding、外部名だけ失敗する場合は上流 DNS と経路、どちらも失敗する場合は listen-address、allow-from、Firewall を確認します。
よくあるつまずき
| 症状 | 見る場所 | 考え方 |
|---|---|---|
| 内部端末から問い合わせられない | listen-address / allow-from | 待受と許可元を分けて確認する |
| 内部ドメインだけ解決できない | domain forwarding | 対象ドメインと内部 DNS の到達性を見る |
| 外部ドメインだけ解決できない | 上流 DNS / 経路 / Firewall | VyOS から上流へ出られるか確認する |
| DNSSEC 有効時だけ失敗する | NTP / 上流 DNS | 時刻同期と検証応答を見る |
| IPv6 端末だけ別の挙動になる | RA / DHCPv6 | IPv6 側の DNS 通知を確認する |
まとめ
VyOS の DNS forwarding は、内部ネットワークの名前解決をルーター側で受けるための機能です。待受アドレス、許可範囲、内部ドメインの転送先、上流 DNS、送信元アドレス、DHCP との連携を合わせて考えると、名前解決の経路が読みやすくなります。
DNS は障害時に原因が見えにくい領域です。VyOS は問い合わせの入口、内部 DNS はゾーン管理、上流 DNS は外部名解決という役割に分けることで、後から切り分けやすくなります。

