tapデバイスを利用してdynagen/dynamips 上のcisco routerとIPで直接接続する

dynagenでcisco routerを動かすのはいいけど、アクセスするにはコンソール用のポートに接続しないといけなくてポート番号忘れたりするしやきもきするので、直接接続したくなったのでやった。


dynagenのrouterの設定で、F1/0 = NIO_tap:tap0 のように記述すれば、ホストのtap0に接続できる。

tap デバイスの作成

tunctl でtap0 デバイスを作成して、適当にIPを割り当てる。

# tunctl
# ifconfig tap0 10.0.0.254 netmask 255.255.255.0 up

dynagen

適当に繋ぐ。dynagenにはcatalyst がないので、ルータ r1上にslot1 = NM-16ESW のモジュールを追加してそこをL2 switchの代わりにした。

接続元 接続先
ホスト tap0 (10.0.0.254) r1 fa1/0
ルータ r1 fa0/0 (10.0.0.1) r1 fa1/1
ルータ r2 fa0/0 (10.0.0.2) r1 fa1/2
  • dynagen.net
[localhost:2691]
		
  [[2691]]
    image = /path/to/ios/c2691.bin
    ram = 128
		
  [[ROUTER R1]]
    model = 2691
    console = 2001
    F1/0  = NIO_tap:tap0
    F1/1  = R1 F0/0
    F1/2  = R2 F0/0
    slot1 = NM-16ESW
    idlepc = 0x61475998
	
  [[ROUTER R2]]
    model = 2691
    console = 2002
    slot1 = NM-16ESW
    idlepc = 0x61475998

あとはdynamipsとdynagenを起動する。
ただし、tap を利用している関係か、rootで起動する必要があるようだ。

routerの設定

各接続間のinterfaceのduplex, speed をあわせてno shut する。switchとして使っているFa1/0,1,2 はportfastも入れておくと良い。

$ telnet localhost 2001
r1>
r1>en
Password: 
r1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
r1(config)#int range fa1/0 - 2
r1(config-if-range)#duplex full
r1(config-if-range)#speed 100
r1(config-if-range)#no shutdown
r1(config-if-range)#spanning-tree portfast
r1(config-if-range)#end
r1#copy run start

r1#ping 10.0.0.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/4/8 ms
r1#ping 10.0.0.254

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.254, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/4 ms

ping通った。

ホストからrouter のIPにtelnetしてみる。

$ ping -c 4 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=255 time=2.84 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=255 time=3.24 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=255 time=3.47 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=255 time=2.01 ms

--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 2.016/2.893/3.470/0.558 ms

$ telnet 10.0.0.1
Trying 10.0.0.1...
Connected to 10.0.0.1.
Escape character is '^]'.


User Access Verification

Password: 
r1>

入れた。