FortiGateでは通常のスタティックルートを設定できることはもちろんのこと、
宛先にFQDN指定したルーティングをすることが可能です。
FQDNルーティングを使用するユースケース
FQDNルーティングを使用するユースケースとしては、
インターネットブレークアウトで使用することだと思います。
FortiGateにはISDB(インターネットサービスデータベース)という、
Microsoft365やYouTube、Twitterのような、
有名なサイト・サービスが登録されているデータベースを持っています。
このデータベースに登録されているサイト・サービス名を選択することで、
ルーティングを作成することができます。
ISDBには1500以上ものサイト・サービスが登録されていますが、
世の中にはこれ以上のサイト・サービスがありますので、
全てをISDBで設定できるわけではありません。
そこでISDBで登録されていない、
サイト・アプリケーションをブレークアウトしたい場合に使用するのが、
FQDNルーティングとなります。
FQDNルーティングの設定方法
設定方法は2段階になっています。
- アドレスオブジェクト作成
- スタティックルート作成
設定はGUI・CLIの両方で設定することができます。
GUI
GUIでの設定方法をご紹介します。
アドレスオブジェクト作成
まずはアドレスオブジェクトを作成します。
操作
『新規作成』を押下

設定
タイプ:FQDN
FQDN:任意のFQDN
インタフェース:any
Static route configuration:有効
設定入力後に『OK』を押下
Static route configurationを必ず有効にしてください。
ここを有効にしないと、スタティックルートの宛先として選択することができません。

FQDNでアドレスオブジェクトを作成した際に、
最初は赤く表示されてしまいます。
これは名前解決できていないため、このように表示されます。

通常であれば、数秒程度で名前解決されますので、
画面遷移をすれば、赤い表示は消えます。
カーソルを合わせることで、名前解決の結果を確認することができます。
名前解決できない場合は、赤い表示のままなので、
DNSの設定などを確認してください。

スタティックルート作成
次にスタティックルートを作成します。
操作
『新規作成』を押下

設定
宛先:先ほど作成したアドレスオブジェクトを選択
『名前付きアドレス』を選択すると、
『宛先』をプルダウンで先ほど作成したアドレスオブジェクトを選択できるようになります。

あとはゲートウェイアドレスやインタフェースなど、
通常のスタティックルートと同じ設定を行ってください。

CLI
CLIでの設定方法をご紹介します。
アドレスオブジェクト作成
アドレスオブジェクトを作成します。
UUID以外の項目を設定してください。
やはり重要な設定項目は『allow-routing enable』とすることで、
スタティックルートの宛先として選択することができるようになります。
config firewall address
edit "Yahoo"
set uuid 9fe98360-d2e2-51ea-ef01-69a220d5b32a
set type fqdn
set allow-routing enable
set fqdn "yahoo.co.jp"
next
end

スタティックルート作成
スタティックルートを作成します。
config router static
edit 2
set gateway 10.0.0.1
set device "wan1"
set dstaddr "Yahoo"
next
end

FQDNルーティングの動作の仕組み
FQDNルーティングと言えど、
本当にFQDNを用いてルーティングを行うわけではありません。
FortiGate自身が登録されたFQDNに対して名前解決を行います。
名前解決で得たIPアドレスをルーティングテーブルに登録し、
そのアドレスでルーティングを行う仕組みになります。
名前解決した結果、2つのIPアドレスが返ってきた場合は、
2つのIPアドレスをルーティングテーブル上に登録します。
実際にルーティングテーブルを見てみましょう。

『182.22.59.229』と『183.79.135.206』が追加されていることがわかります。
pingを用いて名前解決の確認をしてみると『yahoo.co.jp:182.22.59.229』となっていて、
『yahoo.co.jp』向けのスタティックルートが作成されていることがわかります。
名前解決の結果が保持される時間は、そのFQDNのTTLに従います。
考慮が必要なポイント
FQDNルーティングを使用する場合は、
クライアントのDNSサーバをFortiGateにしておく、
もしくはFortiGateとクライアントの問い合わせ先のDNSサーバを
統一しておくことを推奨します。
FortiGateが登録したFQDNに対して名前解決をするタイミングと、
クライアントが名前解決をするタイミングがずれる場合、
宛先のIPアドレスが異なる場合があります。
複数のIPアドレスで運用されているサイト・サービスを指定する場合は、
名前解決のタイミングによってIPアドレスが異なる場合があります。
名前解決のタイミングがずれてしまうことは防ぎようがないので、
クライアントのDNSサーバをFortiGateにしておくことで、
名前解決の結果のズレをなくすことができます。
また、FortiGateはデフォルトのFortiGuardのDNSサーバへ問い合わせ、
クライアントは社内DNSサーバへ問い合わせのように問い合わせが異なると、
タイミングやロケーションによっても
異なるIPアドレスが返ってくる場合もあるかと思います。
なので、FortiGateとクライアントのDNSサーバを社内DNSのように統一することで、
ある程度のズレをなくすことができるかと思います。
さいごに
サイト・サービス側のIPアドレス日々更新されていますので、
100%インターネットブレークアウトさせることは難しく、
60%~70%くらいが現実的かと思います。
インターネットブレークアウトをする目的は、
メイン回線のトラフィックのひっ迫を下げることなので、
60%~70%しかブレークアウトできなくても十分に効果があるかと思いますので、
すべてのトラフィックをブレークアウトできなくても優しく見守ってあげましょう。

