はじめに
このドキュメントでは、コンフィギュレーションモード内でルートマップを設定および表示するための正しい方法について説明し、特にアクション(許可または拒否)とシーケンス番号を指定することの重要性を強調しています。
背景説明
最初にdenyアクションで設定されたルートマップエントリが、予期せずpermitに変更されたように見える観察された動作に対処します。
問題
Cisco IOS® XEでは、アクション(permit/deny)とシーケンス番号を明示的に指定せずにルートマップが入力されると、CLIはアクションをデフォルトでpermitに設定します。管理者が構文に注意しないと、ルートマップの動作が誤って変更される可能性があります。
確認された動作
この設定を適用すると、次のようになります。
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
ただし、次に示すように、シーケンスまたはアクションを指定せずにルートマップ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エントリがpermit 1に変更されたことを示します。
予想されるCLIの動作
・ アクション(許可または拒否)とシーケンス番号を指定せずにrouter(config)# route-map TEST1 コマンドを入力すると、パーサーはデフォルトで「許可」を意味していると見なします。
・ そのサブモードを終了するとすぐに、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
推奨される実装方法
参照用の設定出力を次に示します。このコマンドの動作には、正しく定義されたシーケンス番号の重要性と、permit/denyの挿入順序が実行コンフィギュレーションでのシーケンス番号の昇順の配置に影響を与えないことが反映されています。
例 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のデフォルト設定が原因で予期しない動作が発生する可能性があります。これらのニュアンスを理解することは、正確なルーティングポリシー設定を維持するために不可欠です。