簡介
本文檔描述了在配置模式下配置和顯示路由對映的正確方法,尤其強調了指定操作(允許或拒絕)和序列號的重要性。
背景資訊
它解決了觀察到的以下行為:最初配置了deny操作的路由對映條目似乎已更改,從而意外允許。
問題
在Cisco IOS® XE中,如果輸入了路由對映,但未明確指定操作(允許/拒絕)和序列號,則CLI會將操作預設為允許。如果管理員不謹慎使用語法,這可能會無意中改變路由對映的行為。
觀察到的行為
應用此配置時:
router(config)#route-map TEST1 deny 1
router(config-route-map)#match ip address prefix-list PREFIXES
router(config-route-map)#exit
router(config)#route-map TEST1 permit 10
router(config-route-map)#match ip address prefix-list FIX
router(config-route-map)#exit
預期輸出為:
router(config)#do sh run | sec TEST1
route-map TEST1 deny 1
match ip address prefix-list PREFIXES
route-map TEST1 permit 10
match ip address prefix-list FIX
但是,重新輸入route-map TEST1時,沒有指定順序或操作,如下所示:
router(config)#route-map TEST1
router(config-route-map)#do sh run | sec TEST1
CLI輸出意外顯示:
route-map TEST1 permit 1
match ip address prefix-list PREFIXES
route-map TEST1 permit 10
match ip address prefix-list FIX
這表示原始配置的deny 1條目已修改為允許1。
預期的CLI行為
·當您輸入命令router(config)# route-map TEST1,但未指定操作(permit或deny)和序列號時,解析器會假定預設情況下您是「permit」。
·一旦退出該子模式,Cisco IOS XE將重寫第一個序列,並將操作從deny更改為permit,因為未提供顯式操作。預設情況下,只需輸入沒有序列號的route-map <name>即可輸入序列10。如果沒有仔細指定,此行為有時可能會覆蓋先前的條目。
換句話說,更改不是由不可見的進程觸發 — 它只是不完整的route-map命令的CLI預設處理。
要在第一個語句中保留deny,請始終包括操作和序列號,例如:
router(config)# route-map TEST1 deny 1。
為什麼會發生這種情況
這不是錯誤,而是Cisco IOS XE CLI解析器的預期行為。它遵守以下規則:
- 如果呼叫路由對映時沒有序列號,則假定為序列10。
- 如果未指定任何操作,則permit為預設值。
- 如果重新輸入沒有詳細資訊的現有路由對映,IOS可以重新分配預設操作,無意中修改之前的條目。
解決方案
為了保留您的路由對映配置的預期行為,請始終包括兩者:
router(config)#route-map TEST1 deny 1 >>>>>>>>>>>>>>> This ensures IOS-XE does not override the entry with default values.
router(config-route-map)#do sh run | sec route-map TES
route-map TEST1 deny 1
match ip address prefix-list ALL-PREFIXES
route-map TEST1 permit 10
match ip address prefix-list ALL-VPN-FIX
推薦的實施方法
此處提到供參考的配置輸出。命令列為反映了正確定義的序列號的重要性,以及允許/拒絕的插入順序如何不會影響運行配置中序列號的上行排列。
示例1. CLI使用不正確導致預設允許
ASR1002-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ASR1002-1(config)#route-map TEST deny 1
ASR1002-1(config-route-map)#$dress prefix-list ALL-PREFIXES
ASR1002-1(config-route-map)#exit
ASR1002-1(config)#route-map TEST permit 10
ASR1002-1(config-route-map)#$dress prefix-list ALL-VPN-FIX
ASR1002-1(config-route-map)#exit
ASR1002-1(config)#do sh run | sec TEST
route-map TEST deny 1
match ip address prefix-list ALL-PREFIXES
route-map TEST permit 10
match ip address prefix-list ALL-VPN-FIX
ASR1002-1(config)#exit
ASR1002-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ASR1002-1(config)#route-map TEST
ASR1002-1(config-route-map)#do sh run | sec route-map TES
route-map TEST permit 1
match ip address prefix-list ALL-PREFIXES
route-map TEST permit 10
match ip address prefix-list ALL-VPN-FIX
ASR1002-1(config-route-map)#exit
請注意deny 1如何變為permit 1。請改為包含操作以及序列號,以便維護路由對映的正確配置:
ASR1002-1(config)#route-map TEST deny 1
ASR1002-1(config-route-map)#do sh run | sec route-map TES
route-map TEST deny 1
match ip address prefix-list ALL-PREFIXES
route-map TEST permit 10
match ip address prefix-list ALL-VPN-FIX
例項2.不考慮進貨單而維護的序列訂單
ASR1001-1(config)#route-map test deny 50
ASR1001-1(config-route-map)#^Z
ASR1001-1#show running-config | sec route-map
route-map test deny 50
ASR1001-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ASR1001-1(config)#route-map test permit 40
ASR1001-1(config-route-map)#^Z
ASR1001-1#show running-config | sec route-map
route-map test permit 40
route-map test deny 50
ASR1001-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
ASR1001-1#show running-config | sec route-map
route-map test permit 40
route-map test deny 50
雖然首先輸入了deny語句,但CLI按升序序列號而不是按配置順序排序。
結論
在Cisco IOS-XE中配置路由對映時,請始終定義:
否則,由於CLI預設值,可能會導致意外行為。瞭解這些細微差別對於維護準確的路由策略配置至關重要。