FortiGate IT セキュリティ ネットワーク

【FortiGate】BGPでよく使うコマンド

投稿日:

BGP関連でよく使うコマンドをご紹介します。

BGP関連のステータスを確認するにはCLIでのコマンド実行が必須となります。
GUIではネイバーが確立したログ情報やルーティングテーブルを確認するぐらいしか、
BGP関連のステータスなどを確認することができません。

BGP基本設定編

構成図

基本設定編で使用した構成図をもとに、BGPに関するコマンドをご紹介していきます。

get router info routing-table all:ルーティングテーブルの確認

『get router info routing-table all』で、
ルーティングテーブルを確認することにより、
BGPで経路を学習しているか確認することができます。

各経路情報の一番左のアルファベットが、
ルーティングプロトコルを表示しています。
『B』がBGPで学習している経路です。

get router info bgp summary:簡潔にネイバー情報を確認

『get router info bgp summary』で、
ネイバーが確立しているかを確認することができます。

確認方法としては、
一番右の『State/PfxRcd』の欄が受信している経路数になりますので、
こちらのカウンタが上がっていることでネイバーが確立できているとわかります。

現在は『1』となっていますので、
10.0.0.2とネイバー確立していて、1経路受信しているということが分かります。

設定などが間違っていて、ネイバーが確立できない場合は、
『idle』や『Active』のようなBGPの遷移ステータスが表示されます。

ネイバーが確立するまでには数秒程度かかりますので、
確認が早すぎても『Active』などが表示される場合があります。

get router info bgp network:BGPの経路情報を確認

『get router info bgp network』でBGPの経路情報を確認することができます。
どのようなBGPパスアトリビュートが付与されているかや、
ベストパス以外に経路を受信しているかなどを確認することができます。

『192.168.1.0』の経路はNextHopが0.0.0.0になっており、
Pathがi(同一AS)となっていますので、
自分自身が広報している経路だということがわかります。

『192.168.2.0』はNextHopが10.0.0.2で、
Pathが200 iとなっていることから、
AS200から受信した経路でそのネクストホップが10.0.0.2ということで、
外部から受信した経路だということがわかります。

一番左に『*>』がついている経路がベストパスとなります。
ベストパスでない経路は『>』とアスタリスクが付きません。
インターネット回線2本でそれぞれBGPを使用するマルチホーム構成で使用する場合など、
同じ経路を複数受信する際に経路の優先順位なども確認することができます。

ステータスに『Weight』とありますが、
Cisco独自のBGPパスアトリビュートである『Weight』を、
FortiGateでも使用することができます。

get router info bgp network 192.168.2.0/24

『get router info bgp network』の後ろに、
『get router info bgp network 192.168.2.0/24』のように、
確認したい経路を指定することで、
経路の情報を個別に確認することができます。

『get router info bgp network』の方がBGPパスアトリビュートの比較がしやすいのですが、
『Last update』(学習した時間)が表示されるので、
特定経路宛に通信できない状態などになっているときに使用すると良いかと思います。

get router info bgp neighbors:ネイバーの情報を確認

『get router info bgp neighbors』でネイバーの情報を確認することができます。

『get router info bgp summary』よりも詳細な情報を確認することができます。
詳細すぎるので、逆に確認しずらくなるかもしれませんが、
4行目の『BGP state = Established』とEstablishedになっていることで、
BGPネイバーが確立できているということが分かります。
5行目、6行目のKeepalive、Holdtimeなどのタイマー値が、
設定した値になっているかもよく確認する点かと思います。

get router info bgp neighbors 10.0.0.2:個別ネイバーの情報を確認

複数のネイバーがある場合、
『get router info bgp neighbors』ではすべてのネイバーが表示されてしまいます。
get router info bgp neighbors 10.0.0.2』のように、
ネイバーのIPアドレスを指定して実行することで、
特定のネイバーだけの情報を表示させることができます。

表示される内容は『get router info bgp neighbors』と全く同じです。

get router info bgp neighbors 10.0.0.2 advertised-routes:ネイバーへ広報している経路を確認

『get router info bgp neighbors 10.0.0.2 advertised-routes』を実行することで、
指定したネイバーへ広報している経路を確認することができます。

ネイバーが確立しているにも関わらず、
対向のネイバーでこちらの経路を学習できていないときなどに、
こちらからは経路を広報しているかという確認で使用することが多いです。

こちらからは経路が広報されている場合は、
道中の経路や対向の設定で学習できていないということが切り分けできます。

get router info bgp neighbors 10.0.0.2 recieved-route:ネイバーから受信している経路を確認

『get router info bgp neighbors 10.0.0.2 received-routes』を実行することで、
指定したネイバーから受信している経路情報を確認することができます。

Route-mapなどで受信する経路を制御している場合、
表示される経路はRoute-map適用前の経路情報となります。
Route-map適用後の経路情報は、
『get router info bgp network』で確認することができますので、
合わせて確認することで、
Route-mapによる経路制御が正しく動作していることを確認することができます。

注意事項:追加設定が必要

本コマンドを実行するためには追加設定が必要となります。
『config router bgp』→『config neighbor』→ネイバーを指定して、
『set soft-reconfiguration enable』を入力します。

追加設定をせずにコマンドを実行すると下記のようなエラー表示となり、
正しい実行結果を得ることができません。

通常BGPテーブル(get router info bgp networkで確認できるもの)は1つなのですが、
こちらの設定を使用することで、
Route-map適用前の受信経路に対するBGPテーブルが作成されます。
このテーブル保持するために、使用されるメモリ数が増大してしまいます。
インターネット上のフルルートを学習している場合など、
数万経路を受信する場合は例外として、
MPLSのネットワーク内に流れている数百経路~数千経路程度であれば、
気にせず有効にして良いかと思います。

execute router clear bgp all:BGPハードクリア

『execute router clear bgp all』でBGPのハードクリアを実行することができます。

実行しても何もレスポンスはありません。
ログを確認するか『get router info bgp summary』でなどで、
BGPのネイバーが確立している時間がリセットされていることを確認することで、
正しくBGPのハードクリアを行うことができたことが確認できるかと思います。

BGPのハードクリアを行うタイミングとしては、
networkコマンドを追加した場合などネットワーク構成に関する変更を行った際は、
『end』で抜けた場合など設定を反映した時点で経路広報が行われますが、
Route-mapを適用した場合などネットワーク構成に関わらない変更を行った場合は、
そのままでは設定が反映されず、反映するにはBGPのクリアを実施する必要があります。

ハードクリアをすることで、ネイバーが切断されて再確立し、
このタイミングで適用したRoute-mapなどが反映されます。

BGPのネイバーが一度切れ、その後経路を学習してという流れになりますので、
その際に通信断が発生する可能性があります。
こちらのコマンドを商用環境などで利用する場合は、実行タイミングに要注意です。

設定や構成などを確認して絶対に間違っていないし、ミスもない。
けれどもBGPが確立しないなどの場合に、
困ったときの再起動のようにおまじない的に使用することもあります。
大抵はなにかミスがありますので、設定などもう一度見直してみましょう。

execute router clear bgp ip 10.0.0.2:ネイバーを指定してBGPハードクリア

『execute router clear bgp ip 10.0.0.2』と、
『ip 10.0.0.2』とネイバーを指定することで、
指定したネイバーのみハードクリアを実行することができます。

複数ネイバーがある状態で先程のハードクリアを実行すると、
すべてのネイバーが切断されて再確立します。

特定のネイバーのみクリアを行いたい場合は、
ネイバーを指定してハードクリアを行うようにしましょう。

execute router clear bgp ip 10.0.0.2 soft:BGPソフトクリア

『execute router clear bgp ip 10.0.0.2 soft』で、
BGPのソフトクリアすることも可能です。

こちらのコマンドもBGPの設定で、
『set soft-reconfiguration enable』が必要となります。

ソフトクリアはBGPネイバーを確立した状態で経路情報の更新を行います。
新たに作成したRoute-mapを適用したいときなどに使用します。
ネイバーの切断はありませんが、瞬断の可能性はありますので、
商用環境では実行のタイミングに要注意です。

最後に

BGPに関連するコマンドについてご紹介しました。
BGPに関連するコマンドはご紹介した以外にもたくさんありますが、
これらのコマンドを抑えておけば、
MPLSサービスでBGPを使用する場合などは問題ないかと思います。

BGP以外の設定・コマンドについてはこちら

おすすめ書籍(FortiOS5.2系)


おすすめ書籍(FortiOS6.0系)

-FortiGate, IT, セキュリティ, ネットワーク

Copyright© NWWブログ , 2021 All Rights Reserved Powered by STINGER.