Introduzione
Questo documento descrive il metodo corretto per configurare e visualizzare una mappa dei percorsi in modalità di configurazione, sottolineando in particolare l'importanza di specificare l'azione (autorizzazione o rifiuto) e il numero di sequenza.
Premesse
Risolve un comportamento osservato in cui una voce della mappa route originariamente configurata con un'azione di negazione sembra essere stata modificata per consentire l'esecuzione imprevista.
Problema
In Cisco IOS® XE, se si immette una route-map senza specificare in modo esplicito un'azione (autorizzazione/negazione) e un numero di sequenza, CLI imposta come predefinita l'azione da autorizzare. Ciò può inavvertitamente alterare il comportamento della route-map se gli amministratori non prestano attenzione alla sintassi.
Comportamento osservato
Quando viene applicata questa configurazione:
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
L'output previsto è:
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
Tuttavia, quando si riattiva la mappa dei percorsi TEST1 senza specificare una sequenza o un'azione, come mostrato di seguito:
router(config)#route-map TEST1
router(config-route-map)#do sh run | sec TEST1
L'output CLI mostra in modo imprevisto:
route-map TEST1 permit 1
match ip address prefix-list PREFIXES
route-map TEST1 permit 10
match ip address prefix-list FIX
Ciò indica che la voce deny 1 originariamente configurata è stata modificata per consentire 1.
Comportamento CLI previsto
· Quando si immette il comando router(config)# route-map TEST1 senza specificare un'azione (autorizzazione o negazione) e un numero di sequenza, il parser presume che il significato di 'autorizzazione' sia predefinito.
· Non appena si esce da questa modalità secondaria, Cisco IOS XE riscrive la prima sequenza e modifica l'azione da Nega a Permesso poiché non è stata fornita alcuna azione esplicita. Se si immette la route-map <nome> senza un numero di sequenza, per impostazione predefinita viene immessa la sequenza 10 come sequenza consentita. Questo comportamento può a volte ignorare le immissioni precedenti se non specificato con attenzione.
In altre parole, la modifica non viene attivata da un processo invisibile — è semplicemente la gestione predefinita da parte della CLI di un comando route-map incompleto.
Per mantenere il valore di negazione nella prima istruzione, includere sempre sia l'azione che il numero di sequenza, ad esempio:
router(config)# route-map TEST1 deny 1.
Perché ciò accade
Questo non è un bug, ma un comportamento previsto del parser Cisco IOS XE CLI. Essa rispetta le seguenti regole:
- Se una mappa dei percorsi viene chiamata senza un numero di sequenza, viene utilizzata la sequenza 10.
- Se non viene specificata alcuna azione, l'impostazione predefinita è allow.
- Se si reinserisce una mappa del percorso esistente senza dettagli, IOS può riassegnare le azioni predefinite, modificando involontariamente le immissioni precedenti.
Soluzione
Per mantenere il comportamento previsto della configurazione della mappa del percorso, includere sempre:
- l'azione (autorizzazione o rifiuto)
- e il numero progressivo
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
Metodo Consigliato Per L'Implementazione
Di seguito vengono menzionati gli output della configurazione come riferimento. Il comportamento del comando riflette l'importanza di numeri di sequenza definiti correttamente e il modo in cui l'ordine di inserimento di allow/deny non influisce sulla disposizione crescente dei numeri di sequenza nella configurazione corrente.
Esempio 1. Uso non corretto della CLI da parte dell'utente finale al permesso predefinito
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
Si noti come la negazione 1 diventi il permesso 1. Includere invece l'azione insieme al numero di sequenza per mantenere la configurazione corretta della route-map:
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
Esempio 2. Ordine sequenziale gestito indipendentemente dall'ordine di immissione
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
Sebbene l'istruzione deny sia stata immessa per prima, la CLI ordina in base al numero di sequenza crescente e non in base all'ordine di configurazione.
Conclusioni
Quando si configurano le route-map in Cisco IOS-XE, definire sempre:
- il numero progressivo
- e l'azione
In caso contrario, si potrebbe verificare un comportamento imprevisto a causa dei valori predefiniti della CLI. La comprensione di queste sfumature è essenziale per mantenere configurazioni accurate delle policy di routing.