Cisco 機器の設定変更は、コンフィグそのものがコマンド列になっているため、テキストとして扱いやすいという特徴があります。これは Cisco IOS の良いところです。
一方で、スタティックルートやアクセスリストのように似た行が大量にある場合、手で一行ずつ no を付けたり、値を置換したりする運用はかなり危険です。人間が頑張るところではなく、テキスト処理に任せるところです。
Cisco コンフィグ変更では、既存設定を抽出し、正規表現で投入用コンフィグに変換し、レビューしてから投入する流れが有効です。この記事では、スタティックルート削除用コンフィグを例に、行頭へ no を付ける正規表現処理を整理します。
手作業で no を付ける運用は危ない
Cisco IOS では、既存設定を削除する場合、基本的に設定行の先頭に no を付けます。数行であれば手作業でも問題ありませんが、数十行、数百行になると、入力漏れや余計な行の混入が起きやすくなります。
ネットワーク作業は、CLI の知識だけではなく、テキスト処理の知識もあるとかなり楽になります。正規表現、差分確認、バックアップ、投入前レビューを組み合わせるだけで、作業の正確性はかなり上がります。
元になる設定例
削除対象のスタティックルートを次のように用意します。実作業では、show running-config から対象行だけを抽出したものと考えると分かりやすいです。
ip route 192.168.0.0 255.255.255.0 10.0.0.200
ip route 192.168.1.0 255.255.255.0 10.0.1.200
ip route 192.168.2.0 255.255.255.0 10.0.2.200
ip route 192.168.3.0 255.255.255.0 10.0.3.200
ip route 192.168.4.0 255.255.255.0 10.0.4.200
ip route 192.168.5.0 255.255.255.0 10.0.5.200
ip route 192.168.6.0 255.255.255.0 10.0.6.200
ip route 192.168.7.0 255.255.255.0 10.0.7.200
ip route 192.168.8.0 255.255.255.0 10.0.8.200
ip route 192.168.9.0 255.255.255.0 10.0.9.200行頭に no を付ける
正規表現では、行頭を ^ で表します。そのため、行頭 ^ を no に置換すると、各行の先頭へ削除コマンドを付けられます。
重要なのは、no の後ろに半角スペースを入れることです。スペースがないと noip route のような無効なコマンドになります。
sed で変換する例
macOS や Linux であれば、次のように別ファイルへ出力する方が安全です。いきなり -i で元ファイルを上書きするより、変換後を確認してから使う方が事故を減らせます。
sed 's/^/no /' cisco-routes.txt > cisco-routes-delete.txtsedはストリームエディタです。s/^/no /は、行頭をnoに置換する指定です。cisco-routes.txtは元の設定行を入れたファイルです。cisco-routes-delete.txtは投入用の削除コンフィグです。
エディタで置換する場合
Windows 環境であれば、正規表現置換に対応したエディタでも同じことができます。検索文字列に ^、置換文字列に no を指定し、正規表現モードで置換します。
ツールは何でも構いません。大事なのは、正規表現で何を対象にして、どのような投入用コンフィグを作るのかを明確にすることです。
生成される削除用コンフィグ
変換後は次のようになります。
no ip route 192.168.0.0 255.255.255.0 10.0.0.200
no ip route 192.168.1.0 255.255.255.0 10.0.1.200
no ip route 192.168.2.0 255.255.255.0 10.0.2.200
no ip route 192.168.3.0 255.255.255.0 10.0.3.200
no ip route 192.168.4.0 255.255.255.0 10.0.4.200
no ip route 192.168.5.0 255.255.255.0 10.0.5.200
no ip route 192.168.6.0 255.255.255.0 10.0.6.200
no ip route 192.168.7.0 255.255.255.0 10.0.7.200
no ip route 192.168.8.0 255.255.255.0 10.0.8.200
no ip route 192.168.9.0 255.255.255.0 10.0.9.200投入前に確認すること
投入用コンフィグを作ったら、そのまま流し込む前に必ず確認します。
- 削除対象ではない行が混ざっていないか確認する。
noの後ろに半角スペースが入っているか確認する。- 対象行数が想定と一致しているか確認する。
- 作業前の running-config を保存しておく。
- バックアウト用に、元の設定行を戻せる形で残しておく。
show running-config | include ^ip route
show running-config | include 192.168.Cisco 機器上で確認する場合は、対象の行だけを抽出して、削除前後の差分を見ます。大量変更では、投入コマンドそのものより、投入前後の確認設計の方が重要です。
バックアウト用コンフィグも残す
削除用コンフィグを作る場合、元の設定行はそのままバックアウト用コンフィグになります。削除後に問題が起きた場合、元の設定行を再投入すれば戻せるためです。
つまり、作業ファイルは少なくとも次の 2 つに分けておくと分かりやすくなります。
cisco-routes-delete.txt:no ip route ...を並べた削除用コンフィグcisco-routes-rollback.txt: 元のip route ...を並べた復旧用コンフィグ
まとめ
Cisco の設定変更は CLI で完結するように見えますが、実際にはテキスト処理の能力が作業品質に直結します。大量のスタティックルートやアクセスリストを手で加工するより、正規表現で投入用コンフィグを作り、レビューしてから投入する方が正確です。
正規表現は難しい技術ではありません。行頭を表す ^、行末を表す $、置換の考え方を覚えるだけでも、ネットワーク運用の単純作業はかなり減らせます。Cisco の勉強だけに閉じず、テキスト処理や差分確認の道具を使えるようにしておくと、実作業の見え方が変わります。
参考書籍
書籍
TCP/IP、Ethernet、ルーティングなど、ネットワークの基礎を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
このリンクは Amazon アソシエイトリンクです。



