FortiGateのBGPの設定方法についてご紹介します。
BGPの設定をはじめる前に
FortiGateにはトランスペアレントモード(L2)とNATモード(L3)があり、
BGPを始めとしたルーティング機能を使用できるのは、
NATモード(L3)で動作させている場合に限ります。
BGPの設定はCLIとGUIの両方で設定することができます。
BGPの設定に限らずですが、
詳細な設定やステータス確認などができるCLIの方が優れているので、
BGPを設定する場合はCLIで設定することをオススメします。
CLIでの設定方法
今回ご紹介するのは、単純な構成図において、
FortiGate同士でBGPネイバーを確立して経路を交換するところまでとします。
Config:設定例
CLIでは右側のFortiGate_Aを設定していきます。
左側のFortiGate_BもAS番号が異なるだけで設定項目は同様となります。
config router bgp set as 100 set router-id 10.0.0.1 config neighbor edit "10.0.0.2" set remote-as 200 next end config network edit 1 set prefix 192.168.1.0 255.255.255.0 next end config redistribute "connected" end config redistribute "rip" end config redistribute "ospf" end config redistribute "static" end config redistribute "isis" end config redistribute6 "connected" end config redistribute6 "rip" end config redistribute6 "ospf" end config redistribute6 "static" end config redistribute6 "isis" end end
config router bgp
『config router bgp』はいくつかの階層に分かれています。
階層は図示しているもの以外の階層もありますが今回は省略させて頂きます。
『config router bgp』直下ではBGP全体に関わる設定を行います。
- set as 100:自分自身のAS番号を設定
- set router-id 10.0.0.1:ルータIDを設定
自分自身のAS番号の設定は必須となりますが、
ルータIDの設定は任意となりますので、必要に応じて設定しましょう。
config neighbor
ネイバーの設定は『config neighbor』階層の中で実施します。
- edit 10.0.0.2:対向ネイバーのIPアドレスを設定
- set remote-as 200:対向ネイバーのAS番号を設定
複数のネイバーがある場合は、
『edit 172.16.0.1』のように別途edit階層を作成します。
AS番号を指定する際に、
自分自身と異なるAS番号を指定すればeBGPとして動作しますし、
自分自身と同じAS番号を指定すればiBGPとして動作します。
詳細な説明はここでは省略しますが、
ネイバー個別にKeepAliveやHoldtimeなどを設定したり、
広報したくない経路や学習したくない経路がある場合に、
Route-mapを適用することも可能です。
config network
広報したい経路情報は『config network』の階層で設定します。
- edit 1:任意の数字を設定
- set prefix 192.168.1.0 255.255.255.0:広報したいサブネットを指定
広報したいサブネットが複数ある場合は、
『edit2』のようにedit階層を増やして設定を行います。
Config上ではサブネットマスクはConfig上では2進数で表記されていますが、
Configを投入する際には、
『set prefix 192.168.1.0/24』のように、
スラッシュと10進数で投入しても設定することが可能です。
config redistribute connected
再配送を有効にしたい場合はこちらで設定を行います。
config redistribute "connected" set status enable set route-map "Test" end
- set status enable:再配送を有効にする
- set route-map “Test”:Route-mapでフィルタリングを行う
『connected』に限らず、その他のルーティングプロトコル共通で、
デフォルトでは無効になっていますので、有効にしたい場合は、
『set status enable』とすることで再配送が有効になります。
この状態では『connected』の経路すべてが再配送の対象となります。
広報したくない経路がある場合は、
別途作成したRoute-mapを指定することで制御が可能となります。
BGPのステータス確認(CLI)
BGPのステータス確認に関するコマンドは多々ありますが、
ここではBGPネイバーが確立しているか、経路を受け取れているかの確認にとどめます。
get router info bgp summary
情報量は少ないですが、
ネイバーが確立しているかを最も簡単に確認することができるコマンドです。
get router info bgp summary BGP router identifier 10.0.0.1, local AS number 100 BGP table version is 2 2 BGP AS-PATH entries 0 BGP community entries Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.0.0.2 4 200 2728 2727 1 0 0 1d15h44m 3 Total number of neighbors 1
get router info bgp network
経路情報や同じ経路を受信している際の優先順位付けなどを確認することができます。
get router info bgp network BGP table version is 2, local router ID is 10.0.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight RouteTag Path *> 10.0.0.0/30 10.0.0.2 0 0 0 200 ? <-/1> *> 192.168.1.0 0.0.0.0 100 32768 0 i <-/1> *> 192.168.2.0 10.0.0.2 0 0 0 200 ? <-/1> *> 192.168.11.0 10.0.0.2 0 0 0 200 ? <-/1> Total number of prefixes 4
BGPのWeightはCisco独自のBGPパスアトリビュートですが、
FortiGateでも使用することができます。
get router info routing-table all
BGPで経路を受け取れているか最も簡単に確認する方法は、
ルーティングテーブルを確認することかと思います。
get router info routing-table all Routing table for VRF=0 Codes: K - kernel, C - connected, S - static, R - RIP, B - BGP O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area * - candidate default S* 0.0.0.0/0 [5/0] via 192.168.11.1, port4 C 10.0.0.0/30 is directly connected, port1 C 192.168.1.0/24 is directly connected, port2 B 192.168.2.0/24 [20/0] via 10.0.0.2, port1, 01:16:26 C 192.168.11.0/24 is directly connected, port4
GUIでの設定方法
冒頭にも申し上げましたが、
GUIでは細かい制御やステータス確認ができないので、
GUIでBGPを設定することはオススメできません。
今回ご紹介している構成で経路交換をするだけでしたら、
GUIでも設定することが可能です。
GUI上にBGPを表示させる
デフォルトの状態ではGUI上でBGPが表示されていない場合があります。
『システム』→『表示機能設定』より『高度なルーティング』を有効にしましょう。
BGPの設定項目
GUIでは構成図左側のFortiGateを設定していきます。
設定は『ネットワーク』→『BGP』より行います。
ローカルBGPオプション
- ローカルAS:自分自身のAS番号を設定
- ルーターID:ルータIDを設定
自分自身のAS番号の設定は必須となりますが、
ルータIDの設定は任意となりますので、必要に応じて設定しましょう。
ネイバー
ネイバーのIPアドレスとAS番号を設定します。
CLIの場合はもっと設定項目がありますが、
GUIではIPアドレスとAS番号の2項目しか設定することができません。
『新規作成』を押下することでネイバーを追加することができます。
IPにはネイバーのIPアドレス、リモートASにはネイバーのAS番号を設定します。
ネットワーク
広報したいセグメント情報を記載します。
『+』を押下することで、広報したいセグメントを追加することができます。
高度な設定
『高度な設定』を押下することで下記の項目が表示されます。
クラスタID
iBGPでクラスタを使用する際に設定する項目です。
簡単に言うとループ防止目的のために設定し、
同じクラスタIDの経路は破棄するという動作をします。
iBGPでない場合やクラスタを使用しない場合は設定不要の項目となります。
タイマー
各種タイマーを変更することができます。
入力されている値はデフォルト値となります。
ここで設定した各種タイマーはネイバー全体に適用されます。
ネイバーが複数ある場合で、ネイバー毎にタイマーを分けたい場合は、
CLIでは設定可能ですが、GUIでは設定することができません。
リディストリビューション
各種ルーティングプロトコルからの再配送を有効/無効にすることができます。
有効にした場合は全ての経路が再配送の対象となります。
Route-mapを用いて再配送したくない経路をブロックすることは、
GUIでは設定することができません。
BGPのステータス確認(GUI)
『モニタ』→『ルーティングモニタ』
でルーティングテーブルを確認することができます。
BGPの経路を受け取れているかという確認ぐらいしかGUI上ではできません。
FortiGateでBGPを使用するユースケース
正直あまりFortiGateでBGPを使用するユースケースは少ないかと思います。
FortiGateに関する書籍を見ても、
OSPFの設定方法は記載されていてもBGPの設定方法は記載されていないので、
こちらからも需要的には少ないことが分かります。
強いてユースケースを挙げるとしたら、
キャリアの閉域サービス(MPLS)を利用している際に、
ルータの代わりとして導入されることがあるかと思います。
ルーティングはルータで、セキュリティはFWと役割で機器を分けるよりも、
FortiGateはルータとFWの機能両方を持ち合わせているため、
1台で済みますのでコスト削減につながります。
BGP以外の設定についてはこちら
FortiGateおすすめ書籍(FortiOS5.0系)
FortiGateおすすめ書籍(FortiOS6.0系)