VyOS の DNS forwarding は、内部ネットワークの端末から見た名前解決の入口をルーター側に置くための機能です。単に外部 DNS を指定するだけではなく、どのネットワークから問い合わせを受けるのか、どのアドレスで待ち受けるのか、内部ドメインをどこへ転送するのかを分けて考えます。
この記事は、VyOS 1.5 の実運用構成をもとに、公開記事として再利用しやすい形へ抽象化したものです。実ドメイン、実 IP、内部ネットワーク名はそのまま使わず、設計の考え方だけを取り出しています。
DNS forwarding の役割
DNS forwarding は、VyOS 自身が内部端末から DNS 問い合わせを受け、必要に応じて上流 DNS や内部 DNS サーバーへ問い合わせを転送する構成です。端末側から見ると、DNS サーバーは VyOS の内部向けアドレスになります。
| 要素 | 役割 |
|---|---|
| listen-address | VyOS が DNS 問い合わせを受けるアドレス |
| allow-from | 問い合わせを許可する内部ネットワーク |
| name-server | 通常の問い合わせを転送する上流 DNS |
| domain forwarding | 特定ドメインだけ内部 DNS へ転送する設定 |
| source-address | 上流へ問い合わせる時の送信元アドレス |
| DNSSEC | 検証を有効にするかどうか |
待ち受けるアドレスと許可範囲を分ける
まず、VyOS が DNS を待ち受けるアドレスと、問い合わせを許可するネットワークを分けて設定します。listen-address はサービスの入口、allow-from は問い合わせ元の制限です。
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 は内部向けサービスなので、外部から広く問い合わせを受ける構成にしない方が安全です。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、経路制御が原因になることもあります。
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
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設計上の注意
- DNS forwarding は外部公開するサービスではなく、内部向けの名前解決入口として扱う。
listen-addressとallow-fromを分けて考える。- 内部ドメインは必要に応じて内部 DNS サーバーへ転送する。
- DHCP で配る DNS サーバーと、VyOS の DNS forwarding の待受アドレスを一致させる。
- DNSSEC を使う場合は、NTP、Firewall、上流 DNS への経路も合わせて確認する。
まとめ
VyOS の DNS forwarding は、内部ネットワークの名前解決をルーター側で受けるための機能です。単に上流 DNS を指定するだけではなく、待受アドレス、許可範囲、内部ドメインの転送先、送信元アドレス、DHCP との連携を合わせて設計します。
DNS は障害時に原因が見えにくい領域です。だからこそ、VyOS は DNS の入口、内部 DNS はゾーン管理、上流 DNS は外部解決というように責務を分けると、後から切り分けやすくなります。
関連する記事
- VyOS ネットワーク設定ガイド
VyOS 1.5 の実運用構成を責務ごとに整理したハブページです。 - VyOS DHCP サーバー設定 – LAN 向けアドレス配布の基本
DNS forwarding と合わせて内部端末へ配る設定を整理しています。 - VyOS 基本設定 – IP アドレス / SSH / DNS / NTP / SNMP
DNS forwarding の前提になる基本設定を整理しています。
次に進む
- VyOS Web Proxy 設定 – ルーター内蔵プロキシをどう位置づけるか
内部ネットワーク向けプロキシの位置づけを整理します。 - VyOS Firewall 基本設計 – trust / outside-in / outside-local を分ける
境界制御の基本設計へ進みます。
参考書籍
書籍
ルーティング、NAT、VPN、ネットワーク設計の基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

