概要

BGPルートフィルタのディストリビュートリストの設定と確認コマンドについて解説します。ディストリビュートリストは、ACLで許可または拒否するBGPルート情報を特定します。

ディストリビュートリストの設定の流れ

ディストリビュートリストでBGPルートをフィルタするための設定の流れは、以下の通りです。

  1. ACLでフィルタするルート情報を特定する
  2. 特定のネイバーへディストリビュートリストを適用する
  3. BGPルートを再送受信する

ルート情報を特定するために標準ACLと拡張ACLを利用します。パケットフィルタで利用するときの標準/拡張ACLとは意味が異なることに注意してください。

ディストリビュートリストの設定コマンド

ディストリビュートリスト(標準ACL)の設定コマンド

標準ACLで許可または拒否するBGPルート情報を特定します。グローバルコンフィグレーションモードで標準ACLを作成します。そして、BGPネイバーへ適用します。

ディストリビュートリスト(標準ACL)の設定

(config)#access-list <ACL-num> {permit|deny} <network-address> <wildcard-mask>
(config)#router bgp <AS>
(config-router)#neighbor <ip-address> distribute-list <ACL-num> {in|out}

<ACL-num>:標準アクセスリスト番号。1-99
<network-address>:ネットワークアドレス
<wildcard-mask>:ワイルドカードマスク
<AS>:AS番号
<ip-address>:ネイバーのIPアドレス
<ACL-num>:ルートフィルタに用いるアクセスリスト番号

ACLのパラメータ名は、ルートフィルタで利用する場合を反映したものにしています。

標準ACLの<network-address> <wildcard-mask>でBGPルート情報のネットワークアドレスのビットパターンを指定します。勘違いしやすいのですが、「192.168.1.0 0.0.0.255」という設定は「192.168.1.0/24」を表しているわけではありません。標準ACLでは、ネットワークアドレスのビットパターンを示しているだけなので、「192.168.1.0 0.0.0.255」という設定は、ネットワークアドレスが「192.168.1」ではじまるBGPルートという意味です。

筆者は、思いっきり勘違いしていました。このページをご覧になっているあなたは勘違いしないでください。

そして、permitまたはdenyで該当したルート情報をどのように扱うかを決めます。permitはルート情報を許可します。すなわち、outで適用しているときは該当のBGPルートをアドバタイズします。inで適用すればBGPルートを受信します。denyは、ルート情報を拒否します。つまり、outで適用していると該当のBGPルートをアドバタイズしません。inで適用していると該当のBGPルートを受信しません。

また、ACLの最後には「暗黙のdeny」があることも忘れないでください。

図 ディストリビュートリスト(標準ACL)
図 ディストリビュートリスト(標準ACL)

ディストリビュートリスト(拡張ACL)の設定コマンド

拡張ACLによって、ネットワークアドレスだけでなくサブネットマスクもチェックしてフィルタするルート情報を特定できます。

ディストリビュートリスト(拡張ACL)の設定

(config)#access-list <ACL-num> {permit|deny} ip <network-address> <wildcard-mask> <subnet-address> <wildcard-mask>
(config)#router bgp <AS>
(config-router)#neighbor <ip-address> distribute-list <ACL-num> {in|out}

<ACL-num>:拡張アクセスリスト番号。100-199
<network-address>:ネットワークアドレス
<subnet-mask>:サブネットマスク
<wildcard-mask>:ワイルドカードマスク
<AS>:AS番号
<ip-address>:ネイバーのIPアドレス
<ACL-num>:ルートフィルタに用いるアクセスリスト番号

ACLのパラメータ名は、ルートフィルタで利用する場合を反映したものにしています。

拡張ACLのプロトコルは「ip」でOKです。本来の拡張ACLの送信元IPアドレスの部分でネットワークアドレスのビットパターンを設定します。そして、宛先IPアドレスの部分でサブネットマスクのビットパターンを設定します。

そして、permitまたはdenyで該当したルート情報をどのように扱うかを決めます。標準ACLのときとまったく同じです。

図 ディストリビュート(拡張ACL)
図 ディストリビュート(拡張ACL)

BGPルートの再送受信

ディストリビュートリストをネイバーに適用するだけでは、ルートフィルタは反映されません。BGPルートの再送受信が必要です。ディストリビュートリストを適用している方向によって、再送または再受信してください。特権EXECモードで次のコマンドを利用します。

BGPルートの再送受信

#clear ip bgp <ip-address> {in|out}

<ip-address> : ネイバーのIPアドレス

ディストリビュートリストの適用方向がinならclear ip bgp inで、ネイバーからのBGPルートを再受信します。適用方向がoutならclear ip bgp outで、ネイバーへBGPルートを再送信します。

ディストリビュートリストの確認コマンド

ディストリビュートリストによるBGPルートフィルタを確認するための主なshowコマンドを以下の表にまとめています。

コマンド概要
#show ip access-listBGPルートを特定するためのACLを確認します。
#show ip protocolsBGPネイバーに適用されているディストリビュートリストを確認します。
#show ip bgpBGPテーブルを確認します。
#show ip bgp neighbor advertised-routes指定したBGPネイバーへアドバタイズするBGPルートを確認します。
#show ip bgp neighbor routes指定したBGPネイバーから受信したBGPルートを確認します。
表 ディストリビュートリストの確認コマンド

show ip access-list

show ip access-listコマンドでBGPルートを特定するためのACLを確認します。

show ip access-list

R1#show access-lists
Standard IP access list 1
    10 permit 192.168.1.0 (2 matches)
Extended IP access list 100
    10 deny ip 172.16.1.0 0.0.0.255 255.255.255.240 0.0.0.15 (2 matches)
    20 permit ip any any (2 matches)

show ip protocols

BGPネイバーに適用されているディストリビュートリストを確認するには、show ip protocolsコマンドがわかりやすいです。

show ip protocols

R1#show ip protocols
*** IP Routing is NSF aware ***

-- omitted --

Routing Protocol is "bgp 1"
  Outgoing update filter list for all interfaces is not set
  Incoming update filter list for all interfaces is not set
  IGP synchronization is disabled
  Automatic route summarization is disabled
  Neighbor(s):
    Address          FiltIn FiltOut DistIn DistOut Weight RouteMap
    10.0.0.2                           100       1
  Maximum path: 1
  Routing Information Sources:
    Gateway         Distance      Last Update
    10.0.0.2              20      00:04:21
  Distance: external 20 internal 200 local 200

show ip bgp

show ip bgpコマンドでBGPテーブルを表示して、意図したフィルタがかかっているかを確認します。ただ、BGPテーブル全体を表示するとわかりづらいので、BGPテーブルの表示をフィルタしてください。

show ip bgp

R1#show ip bgp
BGP table version is 18, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  172.16.1.0/25    10.0.0.2                 0             0 2 i
 *>  172.16.1.128/26  10.0.0.2                 0             0 2 i
 *>  192.168.1.0      0.0.0.0                  0         32768 i
 *>  192.168.2.0      0.0.0.0                  0         32768 i
 *>  192.168.3.0      0.0.0.0                  0         32768 i

show ip bgp neighbor advertised-routes

show ip bgp neighbor advertised-routesコマンドで、指定したネイバーへアドバタイズするBGPルートを表示します。

show ip bgp neighbor advertised-routes

R1#show ip bgp neighbors 10.0.0.2 advertised-routes
BGP table version is 18, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  192.168.1.0      0.0.0.0                  0         32768 i

Total number of prefixes 1

show ip bgp neighbor routes

show ip bgp neighbor routesコマンドで、指定したネイバーから受信したBGPルートを表示します。

show ip bgp neighbor routes

R1#show ip bgp neighbors 10.0.0.2 routes
BGP table version is 18, local router ID is 192.168.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter,
              x best-external, a additional-path, c RIB-compressed,
Origin codes: i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

     Network          Next Hop            Metric LocPrf Weight Path
 *>  172.16.1.0/25    10.0.0.2                 0             0 2 i
 *>  172.16.1.128/26  10.0.0.2                 0             0 2 i

Total number of prefixes 2

まとめ

ポイント

  • ディストリビュートリストによるBGPルートフィルタの設定の流れは以下の通りです。
    • ACLでフィルタするルート情報を特定する
    • 特定のネイバーへディストリビュートリストを適用する
    • BGPルートを再送受信する
  • BGPルートを特定するためのACLは、パケットフィルタで利用するACLとは意味が異なることに注意してください。

BGPの仕組み