手当たり次第に書くんだ

飽きっぽいのは本能

VyOS DNS forwarding 設定 – 内部ネットワークの名前解決を整理する

VyOS の DNS forwarding は、内部ネットワークの端末から見た名前解決の入口をルーター側に置くための機能です。単に外部 DNS を指定するだけではなく、どのネットワークから問い合わせを受けるのか、どのアドレスで待ち受けるのか、内部ドメインをどこへ転送するのかを分けて考えます。

この記事は、VyOS 1.5 の実運用構成をもとに、公開記事として再利用しやすい形へ抽象化したものです。実ドメイン、実 IP、内部ネットワーク名はそのまま使わず、設計の考え方だけを取り出しています。

DNS forwarding の役割

DNS forwarding は、VyOS 自身が内部端末から DNS 問い合わせを受け、必要に応じて上流 DNS や内部 DNS サーバーへ問い合わせを転送する構成です。端末側から見ると、DNS サーバーは VyOS の内部向けアドレスになります。

要素役割
listen-addressVyOS が 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
save

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
save

DNSSEC 検証を有効にする場合、時刻同期や上流 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-addressallow-from を分けて考える。
  • 内部ドメインは必要に応じて内部 DNS サーバーへ転送する。
  • DHCP で配る DNS サーバーと、VyOS の DNS forwarding の待受アドレスを一致させる。
  • DNSSEC を使う場合は、NTP、Firewall、上流 DNS への経路も合わせて確認する。

まとめ

VyOS の DNS forwarding は、内部ネットワークの名前解決をルーター側で受けるための機能です。単に上流 DNS を指定するだけではなく、待受アドレス、許可範囲、内部ドメインの転送先、送信元アドレス、DHCP との連携を合わせて設計します。

DNS は障害時に原因が見えにくい領域です。だからこそ、VyOS は DNS の入口、内部 DNS はゾーン管理、上流 DNS は外部解決というように責務を分けると、後から切り分けやすくなります。

関連する記事

次に進む

参考書籍

VyOS DNS forwarding 設定 – 内部ネットワークの名前解決を整理する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る