Ciscoのスイッチやルータの設定の勉強をしたくて、DynamipsというCisco IOSエミュレータを使ってみた。
まずはdynamips-0.2.8rc2とその周辺ツールdynagen-0.11.0をダウンロードして解凍。IOSは別途入手する必要があります。
dynagenのディレクトリに以下の設定ファイル(config.net)を作成。
[localhost] Autostart = true Workingdir = /root/cisco/tmp/ Console = 2000 UDP = 11000 Debug = 0 7200 image = /root/cisco/images/c7200-jk9s-mz.124-13b.bin npe = npe-400 ram = 160 ROUTER R1 s1/0 = R2 s1/0 model = 7200 router R2 model = 7200
一つめコンソールでdynamipsを起動
# ./dynamips-0.2.8-RC2-x86.bin -H 7200 Cisco Router Simulation Platform (version 0.2.8-RC2-x86) Copyright (c) 2005-2007 Christophe Fillot. Build date: Oct 14 2007 10:41:26 ILT: loaded table "mips64j" from cache. ILT: loaded table "mips64e" from cache. ILT: loaded table "ppc32j" from cache. ILT: loaded table "ppc32e" from cache. Hypervisor TCP control server started (port 7200).
二つめのコンソールでdynagenを起動
# ./dynagen config.net Reading configuration file... Network successfully loaded Dynagen management console for Dynamips and Pemuwrapper 0.11.0 Copyright (c) 2005-2007 Greg Anuzelli, contributions Pavel Skovajsa =>
この時、dynamipsには以下のようなログが出力されます。
Shutdown in progress... Shutdown completed. CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb. NVRAM is empty, setting config register to 0x2142 C7200 instance 'R1' (id 0): VM Status : 0 RAM size : 160 Mb IOMEM size : 0 Mb NVRAM size : 128 Kb NPE model : npe-400 Midplane : vxr IOS image : /root/cisco/images/c7200-jk9s-mz.124-13b.bin Loading ELF file '/root/cisco/images/c7200-jk9s-mz.124-13b.bin'... ELF entry point: 0x80008000 C7200 'R1': starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled. CPU0: carved JIT exec zone of 64 Mb into 2048 pages of 32 Kb. NVRAM is empty, setting config register to 0x2142 C7200 instance 'R2' (id 1): VM Status : 0 RAM size : 160 Mb IOMEM size : 0 Mb NVRAM size : 128 Kb NPE model : npe-400 Midplane : vxr IOS image : /root/cisco/images/c7200-jk9s-mz.124-13b.bin Loading ELF file '/root/cisco/images/c7200-jk9s-mz.124-13b.bin'... ELF entry point: 0x80008000 C7200 'R2': starting simulation (CPU0 PC=0xffffffffbfc00000), JIT enabled.
さらに他のコンソールを開いて、telnetで接続します。ここでは他のコンピュータから接続しているので、接続先にdynamipsを実行しているサーバのIPを指定します。
# telnet 192.168.0.1 2000 Trying 192.168.0.1... Connected to 192.168.0.1. Escape character is '^]'. Connected to Dynamips VM "R1" (ID 0, type c7200) - Console port
リターンを押すと、以下ようにcisco 7200の初期設定画面になりますので、適切に設定していきます。
% Please answer 'yes' or 'no'. Would you like to enter the initial configuration dialog? [yes/no]:
同様にtelnetで2001に接続するとルータR2に接続できます。maznはciscoのルータを使用したことないので、ここには何も書きません、ではなく書けません。
ちなみに、config.netに書いたネットワーク構成を動的に変更することも可能のようです。R1のs1/0ポートに接続しているケーブルを抜くにはdynagenのコンソールで以下のようにします。
=> conf localhost
=>(config-localhost:7200)
=>(config-localhost:7200-router R1) no s1/0 = R2 s1/0
この時、R0に接続したtelnetにはいろいろとログが流れます。再接続するにはnoを省きます。
=>(config-localhost:7200-router R1) s1/0 = R2 s1/0
ちょっと使用しただけなので、どこまでできるかわかりませんが、いろいろと遊べそうです。しかし、残念ながらCatalystのL2スイッチはエミュレーションできないようです。というのもL2スイッチングはASICでのハードウェア処理が基本だからそうです。NM-16ESWというモジュールを使えばそれなりにL2スイッチを使うこともできるようですが、できないことも多々あるようですし、バグもあるようです。もっと気軽に勉強できる環境がどこかにないでしょうか。
参考 : dynagenのチュートリアル
pyIOSちょっとサイトを覗いてみました。2001年から全然バージョンアップされていないようですし、あまり完成度も高くないみたいですね。
http://sourceforge.net/projects/pyios/
mazn
がしました