目錄

簡介

背景資訊

問題

觀察到的行為

預期的CLI行為

為什麼會發生這種情況

解決方案

推薦的實施方法

示例1. CLI使用不正確導致預設允許

例項2.不考慮進貨單而維護的序列訂單

結論

簡介

本文檔描述了在配置模式下配置和顯示路由對映的正確方法，尤其強調了指定操作（允許或拒絕）和序列號的重要性。

背景資訊

它解決了觀察到的以下行為：最初配置了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可以重新分配預設操作，無意中修改之前的條目。

解決方案

為了保留您的路由對映配置的預期行為，請始終包括兩者：

- action（允許或拒絕）

- 以及序列號

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預設值，可能會導致意外行為。瞭解這些細微差別對於維護準確的路由策略配置至關重要。