DynagenでCCIEを目指す
DynamipsとcoLinuxの接続設定例
最終更新:
it_certification
-
view
1. 履歴
- 2010/07/30 初稿
2. はじめに
- coLinuxとDynamipsを接続する設定例を記します。
- 前提条件
- トップページ/手順書 サーバ系に記された手順書を元に、coLinux上にFedoraが構築されているものとします。
- トップページ/手順書 ネットワーク系を元に、Loopback Adaputerがインストールされているものとします。
3. OS間の疎通確認
3.1. ホストOSの設定
ホストOSのIPアドレスを以下の通り設定します。
Loopback Adapter IP アドレス 192.168.200.100 サブネット マスク 255.255.255.0 デフォルト ゲートウェイ 空欄 優先 DNSサーバ 空欄 代替 DNSサーバ 空欄 TAP Adapter IP アドレス 192.168.201.100 サブネット マスク 255.255.255.0 デフォルト ゲートウェイ 空欄 優先 DNSサーバ 空欄 代替 DNSサーバ 空欄
3.2. coLinuxの設定
coLinuxのネットワーク設定を以下の通り編集します。以下に設定ファイルの一部を記します。
# Slirp for internet connection (outgoing) # Inside running coLinux configure eth0 with this static settings: # ipaddress 10.0.2.15 broadcast 10.0.2.255 netmask 255.255.255.0 # gateway 10.0.2.2 nameserver 10.0.2.3 eth0=slirp # Tuntap as private network between guest and host on second linux device eth1=tuntap
3.3. Linuxの設定
ゲストOSは以下の通り設定します。eth0はDHCPによる設定でeth1は静的な設定です。Redhat系以外ディストリビューションを使用する方は、適宜設定ファイルを読み替えて下さい。
ゲストOSは以下の通り設定します。eth0はDHCPによる設定でeth1は静的な設定です。Redhat系以外ディストリビューションを使用する方は、適宜設定ファイルを読み替えて下さい。
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 # Realtek Semiconductor Co., Ltd. RTL-8029(AS) DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes TYPE=Ethernet [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 BROADCAST=192.168.201.255 IPADDR=192.168.201.101 NETMASK=255.255.255.0 NETWORK=192.168.200.0 [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# cat /etc/sysconfig/network NETWORKING=yes HOSTNAME=localhost.localdomain [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# cat /etc/resolv.conf ; generated by /sbin/dhclient-script nameserver 10.0.2.3 [root@localhost ~]#
3.4. Firewallの確認
OSのパーソナルファイアウォール機能により、疎通が阻害される事があります。Windowsの場合デフォルトではpingが許可されていないので、Windows Firewallの設定を変更します。(Linuxでもiptablesと呼ばれる同様の機能がありますが、coLinux上にFedoraを構築した場合はデフォルトでiptablesが無効になっているので、iptablesの説明は割愛します。)
「コントロールパネル」→「Windows ファイアウォール」を開きます。「詳細設定」タブを押下します。
「コントロールパネル」→「Windows ファイアウォール」を開きます。「詳細設定」タブを押下します。

「ICMP」という欄の「設定」を押下します。

「エコー着信要求を許可する」にチェックを入れ、「OK」を押下します。

3.5. 疎通確認
ホストOS(Windows)とcoLinux上ゲストOS(Linux)間でpingによる疎通確認が可能かどうかを確認します。
ホストOSからゲストOSへpingを送信します。
ホストOSからゲストOSへpingを送信します。
C:\>ping 192.168.201.101 Pinging 192.168.201.101 with 32 bytes of data: Reply from 192.168.201.101: bytes=32 time<1ms TTL=64 Reply from 192.168.201.101: bytes=32 time<1ms TTL=64 Reply from 192.168.201.101: bytes=32 time<1ms TTL=64 Reply from 192.168.201.101: bytes=32 time<1ms TTL=64 Ping statistics for 192.168.201.101: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\>
ゲストOSからホストOSへpingを送信します。
[root@localhost ~]# ping 192.168.201.100 PING 192.168.201.100 (192.168.201.100) 56(84) bytes of data. 64 bytes from 192.168.201.100: icmp_seq=1 ttl=128 time=0.000 ms 64 bytes from 192.168.201.100: icmp_seq=2 ttl=128 time=0.000 ms ^C --- 192.168.201.100 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1980ms rtt min/avg/max/mdev = 0.000/0.000/0.000/0.000 ms [root@localhost ~]#
4. Dynamipsを介した疎通確認
4.1. ネットワーク構成の確認
最終的に構築したいネットワーク構成は以下の通りです。このような構成にすれば、マルチキャストやQoSなど複数ホストが必要となる動作検証も可能となります。

4.2. Dynampisの設定
netファイルを以下の通り編集します。
model = 3620 [localhost] [[3620]] image = C:\Program Files\Dynamips\images\c3620-j1s3-mz.123-18.bin ram = 128 [[ROUTER R1]] f0/0 = NIO_gen_eth:\Device\NPF_{8B89D910-5ED3-4A43-9DE9-6A272A3D7592} <- Loopbackと接続 f1/0 = NIO_gen_eth:\Device\NPF_{5933302A-7AAA-475C-A8FE-A6B82B0C0F98} <- TAPと接続
4.3. ルータの設定
ルータを以下の通り設定します。構成図に記したIPアドレス以外の特別な設定は施していません。
! version 12.3 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R1 ! boot-start-marker boot-end-marker ! ! no aaa new-model ip subnet-zero ! ! no ip domain lookup ! ip cef ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! interface FastEthernet0/0 ip address 192.168.200.1 255.255.255.0 duplex auto speed auto ! interface FastEthernet1/0 ip address 192.168.201.1 255.255.255.0 duplex auto speed auto ! ip http server ip classless ! ! no cdp run ! ! ! ! ! ! line con 0 line aux 0 line vty 0 4 ! ! end
4.4. 現状構成の把握
現状の構成を把握します。実は現状の構成は以下の通りになっています。
この状態ではTAP adapterを介して直接ゲストOS, ホストOSが通信してしまいます(Router R1を経由しません)。そこで、TAP adapterを介さない特別な工夫が必要になります。
この状態ではTAP adapterを介して直接ゲストOS, ホストOSが通信してしまいます(Router R1を経由しません)。そこで、TAP adapterを介さない特別な工夫が必要になります。

4.5. TAP adapterのIPアドレス変更
Windows TAP adapterとLinux eth1が通信しないようにするため、Windows TAP adapterとLinux eth1のIPアドレスを別サブネットに属すIPアドレスに変更します。
Windows TAP adaputerのネットワーク設定を以下の通り変更します。
Windows TAP adaputerのネットワーク設定を以下の通り変更します。
TAP Adapter IP アドレス 192.168.202.100 <- 192.168.201.0/24から192.168.202.0/24へ変更 サブネット マスク 255.255.255.0 デフォルト ゲートウェイ 空欄 優先 DNSサーバ 空欄 代替 DNSサーバ 空欄
無糖さんのマルチキャスト検証例によると、TAP adapterを無効化する方法もとる事が可能です。(しかし、私の環境ではTAP adapterを無効化する方法ではうまくいきませんでした。恐らく、私の環境と無糖さんの環境とで差異があるからかと思われます。)
4.6. ホストのルーティング設定
ゲストOS, ホストOS間で疎通できるよう、ホスト側のルーティングを設定します。
Windows側では以下の通りルーティングを設定します。
Windows側では以下の通りルーティングを設定します。
C:\>route add 192.168.201.0 mask 255.255.255.0 192.168.200.1 C:\>netstat -r Route Table =========================================================================== Interface List 0x1 ........................... MS TCP Loopback interface 0x2 ...02 00 4c 4f 4f 50 ...... Microsoft Loopback Adapter 0x3 ...00 23 14 4c ec 68 ...... Intel(R) Centrino(R) Advanced-N 6200 AGN - パケ ット スケジューラ ミニポート 0x4 ...00 1b d3 8b 54 35 ...... Intel(R) 82577LM Gigabit Network Connection - パ ケット スケジューラ ミニポート 0x5 ...00 ff 59 33 30 2a ...... TAP-Win32 Adapter V8 (coLinux) - パケット スケジ ューラ ミニポート =========================================================================== =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.200.1 192.168.200.100 30 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 192.168.200.0 255.255.255.0 192.168.200.100 192.168.200.100 30 192.168.200.100 255.255.255.255 127.0.0.1 127.0.0.1 30 192.168.200.255 255.255.255.255 192.168.200.100 192.168.200.100 30 192.168.201.0 255.255.255.0 192.168.200.1 192.168.200.100 1 <- 設定が加わった事を確認 192.168.202.0 255.255.255.0 192.168.202.100 192.168.202.100 20 192.168.202.100 255.255.255.255 127.0.0.1 127.0.0.1 20 192.168.202.255 255.255.255.255 192.168.202.100 192.168.202.100 20 224.0.0.0 240.0.0.0 192.168.200.100 192.168.200.100 30 224.0.0.0 240.0.0.0 192.168.202.100 192.168.202.100 20 255.255.255.255 255.255.255.255 192.168.200.100 4 1 255.255.255.255 255.255.255.255 192.168.200.100 3 1 255.255.255.255 255.255.255.255 192.168.200.100 192.168.200.100 1 255.255.255.255 255.255.255.255 192.168.202.100 192.168.202.100 1 Default Gateway: 192.168.200.1 =========================================================================== Persistent Routes: None C:\>
Linux側では以下の通りルーティングを設定します。
[root@localhost ~]# route add -net 192.168.200.0 netmask 255.255.255.0 gw 192.168.201.1 [root@localhost ~]# [root@localhost ~]# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.0.2.0 * 255.255.255.0 U 0 0 0 eth0 192.168.201.0 * 255.255.255.0 U 0 0 0 eth1 192.168.200.0 192.168.201.1 255.255.255.0 UG 0 0 0 eth1 <- 設定が加わった事を確認 link-local * 255.255.0.0 U 0 0 0 eth0 link-local * 255.255.0.0 U 0 0 0 eth1 default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0 [root@localhost ~]#
4.7. 疎通確認
ホストOS, ゲストOSで互いに疎通可能である事を確認します。
ホストOSからゲストOSへpingを送信します。
ホストOSからゲストOSへpingを送信します。
C:\>ping 192.168.201.101 Pinging 192.168.201.101 with 32 bytes of data: Reply from 192.168.201.101: bytes=32 time<1ms TTL=64 Reply from 192.168.201.101: bytes=32 time<1ms TTL=64 Reply from 192.168.201.101: bytes=32 time<1ms TTL=64 Reply from 192.168.201.101: bytes=32 time<1ms TTL=64 Ping statistics for 192.168.201.101: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms C:\>
ゲストOSからホストOSへpingを送信します。
[root@localhost ~]# ping 192.168.200.100 PING 192.168.200.100 (192.168.200.100) 56(84) bytes of data. 64 bytes from 192.168.200.100: icmp_seq=1 ttl=127 time=50.0 ms 64 bytes from 192.168.200.100: icmp_seq=2 ttl=127 time=10.0 ms 64 bytes from 192.168.200.100: icmp_seq=3 ttl=127 time=10.0 ms 64 bytes from 192.168.200.100: icmp_seq=4 ttl=127 time=10.0 ms ^C --- 192.168.200.100 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3240ms rtt min/avg/max/mdev = 10.000/20.000/50.000/17.320 ms [root@localhost ~]#
ルータ経由での通信になっている事を確認するため、ExPingなどを用いてやや多めのパケットをホストOS, ゲストOS間で通信させます。その後、show interface summaryなどのコマンドでカウンタが増大した事を確認します。(通常のping程度では、カウンタが上昇しない可能性があるためExPingを使用します)
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (colinux_exping_001.jpg)
R1#show int summary *: interface is up IHQ: pkts in input hold queue IQD: pkts dropped from input queue OHQ: pkts in output hold queue OQD: pkts dropped from output queue RXBS: rx rate (bits/sec) RXPS: rx rate (pkts/sec) TXBS: tx rate (bits/sec) TXPS: tx rate (pkts/sec) TRTL: throttle count Interface IHQ IQD OHQ OQD RXBS RXPS TXBS TXPS TRTL ------------------------------------------------------------------------ * FastEthernet0/0 0 0 0 0 2000 2 2000 2 0 * FastEthernet1/0 0 0 0 0 2000 2 2000 2 0 NOTE:No separate counters are maintained for subinterfaces Hence Details of subinterface are not shown R1#