MENU
「安心のセキュリティをお得な価格」でご提供!
Fortinet商品など
ENGAGE fotinet

FortiGateのDNS設定について

FortiGate(FortiOS搭載UTM/Firewall)は、単なるセキュリティ装置にとどまらず、DNSサーバー/リゾルバ/フォワーダーとしても柔軟に機能します。

この記事では、FortiGateにおけるDNS設定を構造的に整理し、実際に構築する際のCLI例と設定ポイントを詳説します。

DNSの役割とモード構造

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サーバー/再帰リゾルバ/条件付きフォワーダーとして動作させることが可能です。

System DNS設定(FortiGate自身の名前解決)

FortiGateが外部サービス(FortiGuard、VPNなど)と通信する際に利用するDNSを指定します。

CLI設定例

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 protocolcleartext(通常)/dot(DNS over TLS)/doh(DNS over HTTPS)を選択
  • server-select-method:複数DNSサーバーを指定した場合の選択基準
    • least-rtt(RTT最短を優先)
    • failover(プライマリがダウン時のみセカンダリ使用)
  • interface-select-method:DNS問い合わせに使うインターフェースを制御
  • dns-cache-ttl:キャッシュ保持時間(デフォルト1800秒)

GUI設定場所

Network → DNS
(バージョンにより「System → Network → DNS」の場合あり)

FortiGateをDNSサーバーとして動作させる(DNS Service)

内部クライアントがFortiGateをDNSサーバーとして参照できるようにする設定です。

CLI設定例(FortiOS 7.4〜7.6系)

config system dns-server
    edit "lan"
        set interface "lan"
        set mode resolver   # 7.6系CLIでは resolver が正しい表記
    next
end

※ FortiOS 7.2系では set mode recursive が使われる場合もあります。

構成結果

  • クライアントのDNSをFortiGateのLAN IPに設定(例:192.168.1.1)
  • FortiGateがSystem DNSまたはDNS Databaseに基づいて名前解決を実施

DNS Database(内部ゾーン設定・Split DNS)

内部専用ドメインや特定ホストをFortiGate上で直接解決させたい場合に使用します。

また、ドメインごとに条件付きフォワーダーを設定することも可能です。

CLI設定例

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:ローカル固定レコードを登録(例:社内プリンタなど)

GUI設定場所

Network → DNS Servers → DNS Database

DHCPと連携してクライアントへDNSを配布

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 Filter)

DNSレイヤーで悪性ドメインやカテゴリを制御できるセキュリティ機能です。

設定手順(GUI)

  1. Security Profiles → DNS Filter
  2. 新規プロファイルを作成し以下を設定:
    • Botnetドメインブロック
    • FortiGuardカテゴリフィルタ
    • カスタム許可/拒否リスト
    • Safe Search強制/DNS Translation(特定ドメインを別IPへ誘導)
  3. ファイアウォールポリシーにDNS Filterプロファイルを適用

※DNSトラフィックがFortiGateを通過していることが前提です。

実運用例:Split DNS構成(内部+外部のハイブリッド)

目的
社内ドメイン(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

動作イメージ

  • クライアント → FortiGateへDNSクエリ送信
  • corp.local は内部DNS(10.0.0.10)へ転送
  • その他は外部(8.8.8.8 / 1.1.1.1)へ問い合わせ

トラブルシューティングと診断コマンド

コマンド 目的
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設定は複数層で構成されており、役割を明確に分けて設計することが鍵です。

  • System DNS:FortiGate自身の通信に利用
  • DNS Service:クライアント向けDNSサーバー機能
  • DNS Database:内部ドメインの静的/条件付き解決
  • DNS Filter:セキュリティ制御

これらを組み合わせることで、社内外を統合したDNS運用・セキュリティ制御が可能となります。

以上、FortiGateのDNS設定についてでした。

最後までお読みいただき、ありがとうございました。

カテゴリ一覧

ページトップへ