FortiGate(FortiOS搭載UTM/Firewall)は、単なるセキュリティ装置にとどまらず、DNSサーバー/リゾルバ/フォワーダーとしても柔軟に機能します。
この記事では、FortiGateにおけるDNS設定を構造的に整理し、実際に構築する際のCLI例と設定ポイントを詳説します。
FortiGateが扱うDNS設定は、用途ごとに明確に分かれています。
以下の4要素を理解すると混乱がなくなります。
| モード/機能 | 内容 | 主な利用目的 |
|---|---|---|
| System DNS | FortiGate自身が使うDNS設定(外部DNS指定、DoT/DoH対応) | FortiGuard、SSL-VPN、NTP通信などに必要 |
| DNS Service on Interface | FortiGateを内部クライアントのDNSサーバーとして動作させる | LAN内端末がFortiGateへDNS問い合わせ |
| DNS Database(ローカルゾーン) | 内部ドメインや固定ホスト名を登録 | Split DNSや内部ドメイン解決に活用 |
| DNS Forwarding / Resolver | 条件付きフォワーディングや再帰問い合わせ設定 | 内部ドメインと外部ドメインの分離(Split DNS構成) |
FortiGateは、これらを組み合わせて内部DNSサーバー/再帰リゾルバ/条件付きフォワーダーとして動作させることが可能です。
FortiGateが外部サービス(FortiGuard、VPNなど)と通信する際に利用するDNSを指定します。
config system dns
set primary 8.8.8.8
set secondary 1.1.1.1
set protocol cleartext # DNS over TLS/HTTPSを使う場合はdot/doh
set server-select-method least-rtt # または failover
set interface-select-method auto # 固定する場合は specify + set interface wan1
set dns-cache-ttl 1800 # キャッシュTTL(既定1800秒)
set cache-notfound-responses enable # NXDOMAINキャッシュを有効化
end
set protocol:cleartext(通常)/dot(DNS over TLS)/doh(DNS over HTTPS)を選択server-select-method:複数DNSサーバーを指定した場合の選択基準
least-rtt(RTT最短を優先)failover(プライマリがダウン時のみセカンダリ使用)interface-select-method:DNS問い合わせに使うインターフェースを制御dns-cache-ttl:キャッシュ保持時間(デフォルト1800秒)Network → DNS
(バージョンにより「System → Network → DNS」の場合あり)
内部クライアントがFortiGateをDNSサーバーとして参照できるようにする設定です。
config system dns-server
edit "lan"
set interface "lan"
set mode resolver # 7.6系CLIでは resolver が正しい表記
next
end
※ FortiOS 7.2系では
set mode recursiveが使われる場合もあります。
内部専用ドメインや特定ホストをFortiGate上で直接解決させたい場合に使用します。
また、ドメインごとに条件付きフォワーダーを設定することも可能です。
config system dns-database
edit "corp.local"
set domain "corp.local"
set authoritative disable # 非権威モード
set forwarder "10.0.0.10" "10.0.0.11" # 内部DNSサーバーへの転送
config dns-entry
edit 1
set hostname "dc1"
set ip 10.0.0.10
next
end
next
end
set authoritative disable:FortiGateが権威サーバーとして応答しない設定set forwarder:指定ドメインを内部DNSサーバーに転送config dns-entry:ローカル固定レコードを登録(例:社内プリンタなど)Network → DNS Servers → DNS Database
DHCPサーバー機能を有効にして、LANクライアントへ自動的にFortiGateのDNSを配布する設定です。
config system dhcp server
edit 1
set interface "lan"
set default-gateway 192.168.10.1
set netmask 255.255.255.0
config ip-range
edit 1
set start-ip 192.168.10.100
set end-ip 192.168.10.200
next
end
set dns-server1 192.168.10.1 # FortiGate自身をDNSとして配布
next
end
DNSレイヤーで悪性ドメインやカテゴリを制御できるセキュリティ機能です。
※DNSトラフィックがFortiGateを通過していることが前提です。
目的
社内ドメイン(corp.local)は内部DNSへ、その他ドメインは外部DNSへ転送。
# FortiGate自身のDNS設定
config system dns
set primary 8.8.8.8
set secondary 1.1.1.1
end
# インターフェースでDNSサービス提供
config system dns-server
edit "lan"
set interface "lan"
set mode resolver
next
end
# 内部ドメインのみ内部DNSへ転送
config system dns-database
edit "corp.local"
set domain "corp.local"
set authoritative disable
set forwarder "10.0.0.10"
next
end
corp.local は内部DNS(10.0.0.10)へ転送| コマンド | 目的 |
|---|---|
diagnose test application dnsproxy 2 |
DNS統計情報を表示 |
diagnose test application dnsproxy 7 |
DNSキャッシュを表示 |
diagnose test application dnsproxy 1 |
DNSキャッシュをクリア |
diagnose sniffer packet any 'udp port 53' 4 |
DNSトラフィックをパケットキャプチャ |
execute ping <ホスト名> |
名前解決+到達確認 |
FortiGateには
execute nslookupコマンドは存在しません。代替は上記diagnose系を使用。
| 項目 | 対応・解説 |
|---|---|
| GUIに機能が出ない | System → Feature Visibility で「DNS Database」や「DNS Filter」を有効化 |
| キャッシュが古い | diagnose test application dnsproxy 1 でキャッシュクリア |
| DoH/DoT非対応の上流DNS使用 | set protocol cleartext に戻す |
| FQDNポリシー利用時 | FortiGate自身のSystem DNS設定が正しいことを確認 |
FortiGateのDNS設定は複数層で構成されており、役割を明確に分けて設計することが鍵です。
これらを組み合わせることで、社内外を統合したDNS運用・セキュリティ制御が可能となります。
以上、FortiGateのDNS設定についてでした。
最後までお読みいただき、ありがとうございました。