シナプスの技術部ネットワーク課の末吉です。
ネットワーク課の業務として各ASとBGPを使用して経路交換をしていますが、経路交換の制御はroute-mapで実施しています。
route-map + ACL での動作に関して疑問に思う事があり確認した事を書いていきたいと思います。
route-mapとは
route-mapに関しては下記のページが参考になるかと思います。
ルートマップ( Route-map )とは
Route-map - matchコマンド、setコマンド
検証環境
route-map + ACL それぞれの組み合わせ時の動作を確認する為に R1からR2にBGPで経路を広報する簡単なネットワークを作ります。
ネットワーク構成
IOS 15.2(4)M11 GNS3上で稼働
設定
各機器の設定内容は下記の通りです。
[R1] hostname R1 ! interface GigabitEthernet0/0 ip address 192.168.0.1 255.255.255.252 no shutdown ! router bgp 64496 network 192.168.10.0 mask 255.255.255.0 network 192.168.11.0 mask 255.255.255.0 network 192.168.12.0 mask 255.255.255.0 network 192.168.13.0 mask 255.255.255.0 network 192.168.14.0 mask 255.255.255.0 neighbor 192.168.0.2 remote-as 64497 neighbor 192.168.0.2 soft-reconfiguration inbound ! ip route 192.168.10.0 255.255.255.0 Null0 ip route 192.168.11.0 255.255.255.0 Null0 ip route 192.168.12.0 255.255.255.0 Null0 ip route 192.168.13.0 255.255.255.0 Null0 ip route 192.168.14.0 255.255.255.0 Null0 !
[R2] hostname R2 ! interface GigabitEthernet0/0 ip address 192.168.0.2 255.255.255.252 no shutdown ! router bgp 64497 neighbor 192.168.0.1 remote-as 64496 neighbor 192.168.0.1 soft-reconfiguration inbound !
上記の構成/設定でR2が受信している経路は下記の5経路となります。
- 192.168.10.0/24
- 192.168.11.0/24
- 192.168.12.0/24
- 192.168.13.0/24
- 192.168.14.0/24
R2#show ip bgp neighbors 192.168.0.1 received-routes BGP table version is 6, local router ID is 192.168.0.2 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.10.0 192.168.0.1 0 0 64496 i *> 192.168.11.0 192.168.0.1 0 0 64496 i *> 192.168.12.0 192.168.0.1 0 0 64496 i *> 192.168.13.0 192.168.0.1 0 0 64496 i *> 192.168.14.0 192.168.0.1 0 0 64496 i Total number of prefixes 5
検証設定
route-map permit/deny + ACL permit/deny の検証をする為、下記の組み合わせで実施します。
setコマンドの動作確認はしません。
route-map permit + ACL permit route-map permit + ACL deny route-map deny + ACL permit route-map deny + ACL deny
使用するroute-mapとACLを下記の通りR1に設定します。
ACL
route-map にマッチさせるために使用します。
[R1] access-list 10 permit 192.168.10.0 0.0.0.255 access-list 11 deny 192.168.11.0 0.0.0.255 access-list 12 permit 192.168.12.0 0.0.0.255 access-list 13 deny 192.168.13.0 0.0.0.255 access-list 14 permit any
route-map
設定したACLを使用したroute-mapを作成します。
[R1] route-map R1_to_R2 permit 10 match ip address 10 ! route-map R1_to_R2 permit 20 match ip address 11 ! route-map R1_to_R2 deny 30 match ip address 12 ! route-map R1_to_R2 deny 40 match ip address 13 ! route-map R1_to_R2 permit 50 match ip address 14
route-map適用
設定したroute-mapをR1のout側に適用します。
[R1] router bgp 64496 neighbor 192.168.0.2 route-map R1_to_R2 out
route-map適用時にroute-map名を誤って設定した場合、何も設定されていないroute-map(=暗黙のdenyのみ)として扱われますので設定する際はご注意ください。
予想
設定した内容で、どの経路がR2で受信されるのか予想をしてみました。
192.168.10.0/24, 192.168.14.0/24の2経路が受信されると予想しました。
検証結果
結果を見てみます。
R2#show ip bgp neighbors 192.168.0.1 received-routes BGP table version is 7, local router ID is 192.168.0.2 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.10.0 192.168.0.1 0 0 64496 i *> 192.168.11.0 192.168.0.1 0 0 64496 i *> 192.168.13.0 192.168.0.1 0 0 64496 i *> 192.168.14.0 192.168.0.1 0 0 64496 i
192.168.10.0/24, 192.168.14.0/24の2経路のみ受信すると予想していましたが、192.168.11.0/24, 192.168.13.0/24 の経路も受信していました。
route-mapはシーケンス番号順に処理されマッチした際、以降の処理はスキップされるという事で処理を追っていきます。各経路に関して改めて表にしてみました。
設定を改めて見てみます。
access-list 10 permit 192.168.10.0 0.0.0.255 access-list 11 deny 192.168.11.0 0.0.0.255 access-list 12 permit 192.168.12.0 0.0.0.255 access-list 13 deny 192.168.13.0 0.0.0.255 access-list 14 permit any ! route-map R1_to_R2 permit 10 match ip address 10 ! route-map R1_to_R2 permit 20 match ip address 11 ! route-map R1_to_R2 deny 30 match ip address 12 ! route-map R1_to_R2 deny 40 match ip address 13 ! route-map R1_to_R2 permit 50 match ip address 14
192.168.10.0/24, 192.168.14.0/24用のみACLがdenyの為、この辺りが怪しい。
Ciscoのドキュメントを確認してみると、検証環境はASAシリーズではありませんが参考になる記事がありました。
permit 句と deny 句
ルート マップでは permit 句と deny 句を使用できます。
deny 句は、ルートの照合の再配布を拒否します。 ルートマップでは、一致基準として
ACL を使用できます。 ACL には permit 句と deny 句もあるため、パケットが ACL と
一致した場合に次のルールが適用されます。ACL permit + route map permit:ルートは再配布されます。 ACL permit + route map deny:ルートは再配布されません。 ACL deny + route map permit or deny:ルート マップの句は一致せず、次のルート マップ句が評価されます。
上記を踏まえて改めて、表を整理をしてみます。
ACL deny に一致した場合、該当するシーケンス番号のroute-map permit/deny 処理をスキップする為 R2に広報されてきた経路の結果と同じになるのがわかります。
まとめ
- route-map + ACL それぞれの組み合わせ時の動作は下記となる。
- route-map にて ACL deny を使用した場合の動作が確認できてよかった。
よくわからずに使用していたことがよくわかった。