BGP(Border Gateway Protocol)でプライベートAS(Autonomous System)番号を使用する場合、インターネットのグローバル環境へルートを広告する際に、AS-PATHからプライベートAS番号を削除することがあります。本記事では、Ciscoルータで remove-private-as コマンドを使用してプライベートASを削除する方法を、具体的な設定例と動作確認を通じて解説します。
BGPのプライベートAS番号とは?
プライベートAS番号は、RFC 6996で定義された範囲(64512~65535)に属し、インターネットではなくプライベートネットワーク内での使用を目的としています。BGPでは、これらの番号がAS-PATHに残っていると、グローバルネットワークの他のASにルートを正常に広告できない場合があります。そのため、プライベートAS番号を削除する設定が重要ですことがあります。
検証環境
以下の構成で、BGPピアリングします。R2はプライベートAS番号である65000に設定します。
R2(config)# router bgp 65000 R2(config-router)# network 2.2.2.2 mask 255.255.255.255 R2(config-router)# neighbor 192.168.23.3 remote-as 3
R3(config)# router bgp 3 R3(config-router)# neighbor 192.168.23.2 remote-as 65000 R3(config-router)# neighbor 192.168.34.4 remote-as 4
R4(config)# router bgp 4 R4(config-router)# neighbor 192.168.34.3 remote-as 3
R3のBGPテーブルを確認すると、2.2.2.2/32をAS-PATH {65000}で学習しています。
R3# show ip bgp
BGP table version is 2, local router ID is 3.3.3.3
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
*> 2.2.2.2/32 192.168.23.2 0 0 65000 i
R4のBGPテーブルを確認すると、2.2.2.2/32をAS-PATH {3,65000}で学習しています。
R4# show ip bgp BGP table version is 2, local router ID is 4.4.4.4 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 *> 2.2.2.2/32 192.168.34.3 0 3 65000 i
プライベートAS削除 remove-private-as
R3でR4へルートを広告する際にプライベートASを削除するよう、remove-private-asを設定します。
R3(config)# router bgp 3
R3(config-router)# neighbor 192.168.34.4 remove-private-as
BGPセッションをクリアします。
R3# clear ip bgp *
R3のBGPテーブルを確認すると、2.2.2.2/32のAS-PATHは{65000}のままです。
R3# show ip bgp
BGP table version is 2, local router ID is 3.3.3.3
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
*> 2.2.2.2/32 192.168.23.2 0 0 65000 i
R4のBGPテーブルを確認すると、設定前のAS-PATHは {3,65000}でしたが、プライベートASが削除され、{3}のみになっています。
R4# show ip bgp
BGP table version is 4, local router ID is 4.4.4.4
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
*> 2.2.2.2/32 192.168.34.3 0 3 I
プライベートASとグローバルASの混在時の対応 remove-private-as all
プライベートASとグローバルAS(例: AS 2)がAS-PATHに混在する場合、remove-private-asコマンドでは削除されません。
remove-private-as を設定した状態で、R2から広告するルートにグローバルAS(今回はAS番号2)をプリペンドします。
R2(config)# route-map ASPREPEND permit 10 R2(config-route-map)# set as-path prepend 2 R2(config-route-map)# exit R2(config)# router bgp 65000 R2(config-router)# neighbor 192.168.23.3 route-map ASPREPEND out
BGPセッションをクリアします。
R2# clear ip bgp *
R3のBGPテーブルを見ると、AS-PATHは{65000,2}であることが確認できます。
R3# show ip bgp BGP table version is 4, local router ID is 3.3.3.3 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 *> 2.2.2.2/32 192.168.23.2 0 0 65000 2 I
次にR4のBGPテーブルを確認すると、AS-PATH内にプライベートASである65000が残っています。
R4# show ip bgp BGP table version is 6, local router ID is 4.4.4.4 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 *> 2.2.2.2/32 192.168.34.3 0 3 65000 2 i
これは、R3のBGPテーブルで確認できる通り、広告しようとしたルートのAS-PATHが{65000,2}とプライベートASとグローバルASが混在しているためです。
remove-private-asコマンドでは、AS-PATHにプライベートAS番号のみリストされているルートにのみプライベートASが削除され、ローカルAS発のルートとして広告されます。
プライベートASとグローバルASが混在しているようなルートを広告する際に、プライベートASを削除するには、remove-private-as allと設定します。
R3(config)# router bgp 3
R3(config-router)# neighbor 192.168.34.4 remove-private-as all
BGPセッションをクリアします。
R3# clear ip bgp *
R3のBGPテーブルを確認すると、AS-PATHは{65000,2}とプライベートASとグローバルASが混在しています。
R3# show ip bgp BGP table version is 2, local router ID is 3.3.3.3 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 *> 2.2.2.2/32 192.168.23.2 0 0 65000 2 i
R4のBGPテーブルを確認すると、AS-PATHのリストのうち、65000だけ削除されていることが確認できます。
R4# show ip bgp BGP table version is 8, local router ID is 4.4.4.4 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 *> 2.2.2.2/32 192.168.34.3 0 3 2 i
AS-PATHの整合性を保つ remove-private-as all replace-as
remove-private-as allコマンドだと、プライベートAS番号が削除された分、AS-PATHが短くなります。AS-PATHの長さを同じにするために、プライベートAS番号をローカルAS番号に変換することができます。コマンドは、remove-private-as all replace-asを使用します。
R3(config)# router bgp 3
R3(config-router)# neighbor 192.168.34.4 remove-private-as all replace-as
BGPセッションをクリアします。
R3# clear ip bgp *
R3のBGPテーブルを確認すると、AS-PATHが{65000,2}とプライベートASとグローバルASが混在しています。
R3# show ip bgp BGP table version is 2, local router ID is 3.3.3.3 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 *> 2.2.2.2/32 192.168.23.2 0 0 65000 2 i
R4のBGPテーブルを確認すると、AS-PATHの65000がR3のローカルAS番号である3に変換されていることが確認できます。
R4# show ip bgp BGP table version is 10, local router ID is 4.4.4.4 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 *> 2.2.2.2/32 192.168.34.3 0 3 3 2 i
まとめ
- remove-private-as: プライベートASのみ削除
- remove-private-as all: プライベートASとグローバルASが混在している場合も削除
- remove-private-as all replace-as: 削除後、ローカルASで置き換え
その他 BGP関連記事は >> ルーティングプロトコル(BGP)まとめ << より参照できます。
コメント