はじめに
FortiGate(FortiOS)は、CLI と GUI の両方で BGP を設定でき、SD-WAN や ADVPN(Auto Discovery VPN)の経路制御に BGP を組み合わせる構成が広く使われています。FortiOS の BGP は、eBGP / iBGP からフィルタ、経路属性の操作まで一通りそろった実装です。
本記事では、FortiGate(FortiOS 7.x を基準)の BGP 設定手順を、CLI を中心に GUI 操作も交えて整理します。
config router bgpと GUI(Network > BGP)の対応config neighbor/config networkによる eBGP の基本設定network-import-checkの挙動と、広告されないときの対処- prefix-list / route-map によるフィルタと iBGP の注意点
- SD-WAN / ADVPN での動的ピアリングと確認コマンド
結論を先に示すと、FortiGate の BGP は config router bgp を起点に設定します。広告経路は config network で指定しますが、既定では network-import-check が有効で、対象がルーティングテーブルに完全一致で存在しないと広告されません。ただし FortiGate ではこの動作をグローバルまたはプレフィックス単位で無効化でき、SD-WAN との統合と動的ピアリングが扱いやすい点が特徴です。
BGP の基礎概念(AS、eBGP / iBGP、経路選択)は、『BGP とは|eBGP と iBGP の違いと経路選択の基礎』で解説しています。本記事は FortiGate の設定手順に絞ります。
FortiGate BGP 設定の全体像(CLI と GUI)
FortiGate の BGP は CLI と GUI のどちらでも設定でき、両者は同じ設定項目に対応します。まず全体像を押さえます。
config router bgp と Network > BGP の対応
CLI では config router bgp 配下に AS 番号・ネイバー・広告経路を記述します。GUI では Network > BGP の画面で同じ項目を設定します。
| 要素 | CLI | GUI(Network > BGP) |
|---|---|---|
| AS 番号 | set as <AS番号> | Local AS |
| Router-ID | set router-id <ID> | Router ID |
| ネイバー | config neighbor 配下の set remote-as | Neighbors |
| 広告経路 | config network 配下の set prefix | Networks |
GUI は項目が整理されていて把握しやすい一方、SD-WAN 連携や network-import-check の細かな制御は CLI のほうが扱いやすいため、本記事は CLI を中心に解説します。
AS 番号・ネイバー・広告経路・フィルタの 4 要素
基本的な eBGP の設定は、次のような骨格になります。
config router bgp
set as 65001
set router-id 1.1.1.101
config neighbor
edit "10.1.1.1"
set remote-as 65000
next
end
config network
edit 1
set prefix 1.1.1.0 255.255.255.0
next
end
endconfig neighbor の set remote-as が自局の set as と異なれば eBGP、同じであれば iBGP になります。フィルタ(prefix-list / route-map など)は、config neighbor 配下で set prefix-list-in/set prefix-list-out や set route-map-in/set route-map-out として方向ごとに適用します。各要素の詳細は次のセクションから順に見ていきます(公式: https://docs.fortinet.com/document/fortigate/7.2.0/cli-reference/565620/config-router-bgp )

eBGP の基本設定(CLI)
異なる AS の機器と eBGP を確立する手順を、CLI を中心に見ていきます。
config neighbor でセッションを張る
BGP プロセスに AS 番号と Router-ID を設定し、config neighbor でネイバーを定義します。
config router bgp
set as 65001
set router-id 1.1.1.101
config neighbor
edit "10.1.1.1"
set remote-as 65000
next
end
endset remote-as の AS が自局の set as と異なるため、これは eBGP です。IPsec トンネルやループバック経由でピアを張る場合は、送信元を固定する set update-source <インターフェイス> を併用します。間にルーターを挟む(直結でない)eBGP では、set ebgp-multihop-ttl <TTL> でホップ数を緩和します。
参考: config router bgp(FortiOS CLI リファレンス)
https://docs.fortinet.com/document/fortigate/7.2.0/cli-reference/565620/config-router-bgp
config network で経路を広告する
広告する経路は config network で指定します。set prefix には IP アドレスとネットマスクを指定します。
config router bgp
config network
edit 1
set prefix 1.1.1.0 255.255.255.0
next
end
end複数の経路をまとめて載せたい場合は config redistribute(connected/static/ospf など)を、集約広告には config aggregate-address を使います。redistribute は意図しない経路まで載りやすいため、route-map での絞り込みと併用するのが安全です。
network-import-check の挙動(完全一致前提と上書き)
FortiGate の config network で広告がうまくいかないとき、まず確認したいのが network-import-check です。
この設定が既定の enable の場合、config network で指定したプレフィックスは、ルーティングテーブルに完全一致で存在しないと広告されません。 これは FortiOS 固有の仕様ではなく、BGP の network 広告の基本動作です。直結・スタティック・IGP 学習のいずれかで、マスク長まで一致する経路が RIB に載っている必要があります。
FortiGate の特徴は、この動作を無効化できる点です。set network-import-check disable にすると、ルーティングテーブルに経路がなくてもプレフィックスを広告します。グローバルだけでなく、プレフィックス単位で上書きすることもできます。
config router bgp
set network-import-check enable
config network
edit 1
set prefix 10.1.0.0 255.255.255.0
set network-import-check disable
next
end
endこの例では、グローバルで enable(完全一致を要求)としつつ、10.1.0.0/24 だけは disable で上書きし、ルーティングテーブルに存在しなくても広告します(公式: https://docs.fortinet.com/document/fortigate/7.0.0/new-features/25435/allow-per-prefix-network-import-checking-in-bgp-7-0-4 )
経路が広告されないときは、get router info routing-table all で対象経路が RIB に載っているかを確認し、必要に応じて network-import-check の設定を見直します。
経路フィルタリング(prefix-list / route-map)と iBGP
送受信する経路の絞り込みと属性操作は、prefix-list と route-map を定義し、ネイバー単位で方向ごとに適用します。
prefix-list と route-map を定義する
プレフィックス単位の許可・拒否は config router prefix-list で定義します。
config router prefix-list
edit "ALLOW"
config rule
edit 1
set prefix 192.168.1.0 255.255.255.0
set action permit
next
end
next
end複数条件の組み合わせや属性操作には config router route-map を使います。set match-ip-address で対象を絞り、set set-local-preference などで属性を操作します。
config router route-map
edit "LP-IN"
config rule
edit 1
set match-ip-address "ALLOW"
set set-local-preference 200
next
end
next
endネイバーへ in / out で適用する
定義したフィルタは、config neighbor 配下で方向ごとに適用します。
config router bgp
config neighbor
edit "10.1.1.1"
set remote-as 65000
set prefix-list-out "ALLOW"
set route-map-in "LP-IN"
next
end
endprefix-list のほかに、ACL ベースの distribute-list-in/distribute-list-out、AS-PATH ベースの filter-list-in/filter-list-out も同様にネイバー配下で指定できます。なお、FortiGate は route refresh が既定で有効なため、フィルタを変更してもセッションを切る必要がなく、数分で自動的に反映されます。 手動で反映する場合は execute router clear bgp ip <対向IP> soft を使います。
iBGP の設定(next-hop-self / update-source / ルートリフレクタ)
iBGP は set remote-as に自局と同じ AS を指定します。安定性のためループバック間でピアを張り、update-source を指定するのが一般的です。
config router bgp
config neighbor
edit "2.2.2.2"
set remote-as 65001
set update-source "loopback0"
set next-hop-self enable
next
end
endnext-hop-self を有効にすると、eBGP で学習した経路を iBGP へ渡す際に NEXT-HOP が自分のアドレスに書き換わり、AS 内から到達可能になります。iBGP の再広告制約(フルメッシュが必要になるルール)を解消するルートリフレクタは、RR 側のネイバーに set route-reflector-client enable を指定します(クライアント側に特別な設定は不要です)。
config router bgp
config neighbor
edit "3.3.3.3"
set remote-as 65001
set route-reflector-client enable
next
end
endiBGP やルートリフレクタの概念は、『BGP とは|eBGP と iBGP の違いと経路選択の基礎』でも解説しています。
SD-WAN / ADVPN での BGP
FortiGate の強みは、BGP と SD-WAN / ADVPN を組み合わせた経路制御です。ここでは要点を整理します。
neighbor-group と neighbor-range による動的ピアリング
多数の拠点(スポーク)ごとに config neighbor を個別定義するのは現実的ではありません。FortiGate では config neighbor-group でピアの共通設定をまとめ、config neighbor-range で対象アドレス範囲を指定することで、範囲内から接続してきたピアと動的に BGP を確立できます。
config router bgp
set as 65001
config neighbor-group
edit "spokes"
set remote-as 65001
set route-reflector-client enable
next
end
config neighbor-range
edit 1
set prefix 10.254.0.0 255.255.255.0
set neighbor-group "spokes"
next
end
endADVPN と組み合わせる場合、ハブとスポークの間は iBGP で構成し、ハブをルートリフレクタにする設計が基本です。FortiOS 7.4.1 以降では、ADVPN ショートカットの確立を契機にスポーク間で動的に BGP ネイバーを張る方式も選べます。
SD-WAN との連携(SLA に応じた経路制御)
SD-WAN と BGP を組み合わせると、リンクの SLA(遅延・損失など)の状態に応じて広告する経路を変えられます。代表的な構成は、SLA を満たすときと満たさないときで異なる route-map やコミュニティを広告し、受信側でルートタグに変換して SD-WAN ルールの振り分けに使う方法です。
- SLA 正常時は
route-map-out-preferable、SLA 逸脱時はroute-map-outを適用し、異なるコミュニティを広告する。 - ハブ側でコミュニティをルートタグに変換し、SD-WAN サービスルールで出力インターフェイスを選択する。
- FortiOS 7.6.1 以降では、スポークの SD-WAN メンバー優先度を BGP MED に対応づけ、ハブ経由の経路選択に反映できる。
詳細は構成規模により異なるため、公式の該当ガイドを参照してください(公式: https://docs.fortinet.com/document/fortigate/7.2.0/administration-guide/256748/controlling-traffic-with-bgp-route-mapping-and-service-rules )

確認コマンドとトラブルシューティング
状態と経路の確認コマンド
設定後の確認は、get router info bgp 系コマンドが基点です。
| コマンド | 表示内容 |
|---|---|
get router info bgp summary | ネイバー一覧と確立状態(State/PfxRcd) |
get router info bgp neighbors <対向IP> | ネイバーの詳細(BGP state、capabilities) |
get router info bgp network | BGP テーブル(* 有効経路、> ベストパス) |
get router info bgp neighbors <IP> advertised-routes | 対向へ広告中の経路 |
get router info bgp neighbors <IP> routes | 受信し採用した経路(受信ポリシー適用後) |
get router info bgp neighbors <IP> received-routes | 受信した全経路(要 soft-reconfiguration enable) |
received-routes を使うには、対象ネイバーに set soft-reconfiguration enable を設定しておく必要があります。フィルタ前の経路を確認したい場合の前提です。
ネイバーが確立しないとき
get router info bgp summary で State が Established にならない場合は、下位レイヤから切り分けます。
- L3 到達性:
execute ping <対向IP>(ループバックピアでは送信元インターフェイスに注意)で確認する。 - TCP/179:
diagnose sniffer packet any 'tcp and port 179' 4で、TCP/179 のパケットが双方向に流れているかを確認する。ファイアウォールポリシーやローカルイン(local-in)ポリシーでの遮断にも注意する。 - 設定の整合:
set remote-asの AS 番号、set router-idの重複、set update-sourceの指定を確認する。
経路が広告・受信されないとき
ネイバーが Established なのに経路が流れない場合は、次の順で確認します。
- 広告されない:
get router info routing-table allで広告対象が完全一致で存在するかを確認し、config networkのプレフィックスとnetwork-import-checkの設定を見直す。 - 受信したのに使われない: NEXT-HOP に到達できているかを確認する。iBGP 経由では
next-hop-selfの設定漏れが典型原因。 - フィルタの影響:
prefix-list/route-mapの方向(in / out)と内容を確認する。FortiGate は route refresh が既定で有効なため、修正後は数分で反映される。
まとめ
FortiGate(FortiOS)の BGP は、config router bgp を起点に CLI / GUI の両方で設定できます。広告されない原因の多くは network-import-check の完全一致前提に、受信経路が使われない原因の多くは iBGP の NEXT-HOP にあります。SD-WAN / ADVPN との連携が扱いやすい点が、FortiGate の特徴です。
- FortiGate の BGP は config router bgp を起点に CLI / GUI で設定
- 広告は config network、既定の network-import-check は RT 完全一致が前提
- network-import-check はグローバル・プレフィックス単位で無効化可能
- iBGP は next-hop-self と update-source、再広告制約に注意
- フィルタは prefix-list / route-map をネイバーに in / out で適用
- route refresh が既定で有効、フィルタ変更はセッション無停止で反映
- SD-WAN / ADVPN は neighbor-group / neighbor-range で動的ピアリング
以上、最後までお読みいただきありがとうございました。
