Skip to content

Blog

IOS / IOS-XE を意図的にクラッシュさせる隠しコマンド「test crash」

Cisco IOS / IOS-XE は意図的に「クラッシュしたように見せかけてルータを再起動する」為の隠しコマンドがあります。 これは実際にルータが再起動してしまう為、本番環境での利用は絶対に NG です。 「クラッシュ時のトラブルシューティング練習用」として、検証環境でのみ利用すべきです。 今回はこの「意図的なクラッシュ」の実行方法をメモしておきます。 今回は以下の環境で実行しました。

  • IOS 15.9(3)M4
  • IOS-XE 17.09.01a

尚、NX-OS や ASA に類似のコマンドは存在しないようです。

Traceroute で利用されるプロトコル

Traceroute で利用されるプロトコルは OS によって異なります。 各々、以下がデフォルトのようです。 大部分の OS は「UDP」ですが、Windows のみ「ICMP」ですのでトラブルシューティング時は注意が必要です。

OS Protocol
IOS UDP
IOS-XE UDP
NX-OS UDP
ASA UDP
Linux UDP
macOS UDP
Windows ICMP

Linux や macOS の場合、以下のように -I オプションを指定することで ICMP による Traceroute を実行することが可能です。

1
traceroute -I 10.0.0.1

IOS-XE 17.09.01a の GuestShell で「?」を含むコマンドが実行出来ず…

Cisco IOS XE 隠しコマンドを楽しむ を読んで GuestShell をいじっていたのですが、最近の IOS-XE に同梱されている python3 と cli モジュールでは「?」を含むコマンドを実行するとエラーになってしまいました… 解決していないのですが、実行したスクリプトとエラー内容をメモしておきます。 環境は Catalyst 8000V 17.09.01a を利用しました。

尚、GuestShell の有効化については以前に IOS-XE で GuestShell を有効化し、外部ネットワークと通信する というメモを書いています。

AT&T の Looking Glass に TELNET アクセスしてみる

インターネット上の経路を確認する際には Looking Glass を使います。 様々な ISP が Looking Glass を公開しており、Web UI で提供されるものが多いようです。 しかし、以前から AT&T の提供する route-server.ip.att.net は CLI でログインすることが出来ます。 余談ですが、以前は route-server.ip.att.net は Cisco ルータだったのですが、かなり以前から Junos に変更されています。

Streamlit でハンバーガーメニューを表示しない

Streamlit でアプリケーションを作成すると画面の右上にハンバーガーメニューが表示されます。 現時点では「標準機能 (設定) でこのメニューを非表示には出来ない」ようです。 但し、CSS を操作することにより非表示にすることは可能 です。 今回はハンバーガーメニューの非表示設定例をメモしておきます。

pyATS で Blitz を使い、YAML だけで自動化を定義する

pyATS を使うことでネットワーク機器の設定や確認を自動化することが出来ます。 PyATS には Quick Trigger (Blitz) という仕組みがあり、ソースコードを書くこと無く、YAML を書くだけでテストや確認を定義することが出来ます。 今回は Ubuntu 22.04LTS 上で Blitz を実行する手順をメモしておきます。

annotation で Batfish が処理出来なかった部分を把握する

Configuration file annotation によると Batfish は読み込んだコンフィグのうち、理解出来ないものは以下の 3 種類に分類するそうです。

  1. Batfish does not understand the content of the line (unrecognized syntax)
  2. Batfish does not support the feature mentioned in the line
  3. Batfish deems that the line is irrelevant to its network model

「実際に Batfish がコンフィグをどのように処理したか?」は annotation を使うことで確認することが出来ます。 確認結果は以下の 3 パターンに分類されるそうです。

  1. UNRECOGNIZED SYNTAX
  2. PARTIALLY UNSUPPORTED
  3. SILENTLY IGNORED

今回は実際に annotation の動作を試してみます。