超簡単!VMware Player上の仮想マシンをスイッチ・ルーターにする
本当のあらすじ
snmpしゃべれるルーターほしーなー、でもたけーなー
というか価格コムでもconeco.netでもBuffaloのサイトでも、snmpしゃべれるかどうかで絞込みできないじゃん。
もういい!とりあえず仮想マシン上に立てて作れること確認しちゃうもん!ひとりでできるもん!
仮想マシン上でできたら、実機でも動くっしょ
実機用意するのいつになるかわからないからメモっておこう
構成
すべてVMware上の仮想マシン(CentOS 6.4)で構成
- ルーター
- 192.168.11.0セグメントと192.168.22.0セグメントをルーティングする
- eth0 : 192.168.11.250
- eth1 : 192.168.22.250
- スイッチ
- 192.168.22.0セグメントに配置
- eth0, eth1, eth2の3つのNICを装備
- 管理用に192.168.22.2のIPアドレスを振っておく
- 試験用マシン
- 192.168.22.0セグメントに配置
- eth0 : 192.168.22.3
- スイッチを超えないとルーターにたどり着けないようにする
準備
ひたすら仮想マシンを作る
簡易インストールつかったらランレベル5で起動しやがってとってもとってもめんどかった
- ルーター用マシン
- 192.168.11.0セグメントと192.168.22.0セグメントの2つにつながるので、VM作成時にNICを二つつくっておく
- ひとつはブリッジ・・・外部につなぎたかったので、yumつかえないとめんどい!
- ひとつはLANセグメント(セグメント1)
- 192.168.11.0セグメントと192.168.22.0セグメントの2つにつながるので、VM作成時にNICを二つつくっておく
- スイッチ用マシン
- スイッチっぽくするために無駄にNICを3つ作っておいた
- すべてLANセグメントで、セグメントはすべて別のものを割り当てた(混信対策)
- スイッチっぽくするために無駄にNICを3つ作っておいた
- 試験用マシン
- スイッチを経由してルーターにアクセスできないと、スイッチの試験にならないのでスイッチが使ってるLANセグメントのうち、ルーターが使ってないセグメントを割り当てた
L3スイッチ化
天に祈りながら下記コマンドをおもむろに打ち込むだけ!
# echo 1 > /proc/sys/net/ipv4/ip_forward # route add -net 192.168.11.0 netmask 255.255.255.0 gw 192.168.11.250 # route add -net 192.168.22.0 netmask 255.255.255.0 gw 192.168.22.250
ね、簡単でしょう?
永続化するには設定ファイルに書かなきゃだめだけど、今回はよしとする
テスト
まだスイッチ化してないスイッチ用マシンから192.168.11.0セグメントの適当なマシンにping飛ばしてみた
帰ってきた!成功!
一応tracerouteしてみるとルーター経由してICMP飛んでることが確認できたのでよしとする
# traceroute 192.168.11.2 traceroute to 192.168.11.2 (192.168.11.2), 30 hops max, 60 byte packets 1 192.168.22.250 (192.168.22.250) 0.358 ms 0.206 ms 0.165 ms 2 192.168.11.2 (192.168.11.2) 1.477 ms 0.782 ms 2.790 ms
※ 192.168.11.0セグメントの宛先マシンのルーティングテーブルもいじって、192.168.22.0セグメントへのルータをきちんと指し示してやらないと返事が返ってこないので注意。わたしはそこではまりました
L2スイッチ化
/etc/sysconfig/network-scripts/ifcfg-eth0~2
/etc/sysconfig/network-scripts/ifcfg-vbr0
の4つのファイルを作成して、
# service network restart
するだけ!
ifcfg-eth0からifcfg-eth2の中身
DEVICE="eth0" BOOTPROTO=static ONBOOT="yes" TYPE="Ethernet" BRIDGE=vbr0
たぶんBRIDGE=vbr0が鳥獣用!あとIPADDR=ほげほげを書かないのも超重要!だと思う
ifcfg-vbr0の中身
DEVICE=vbr0 BOOTPROTO=static IPADDR=192.168.22.2 NETMASK=255.255.255.0 NETWORK=192.168.22.0 ONBOOT=yes TYPE=BRIDGE STP=OFF GATEWAY=192.168.22.250
複数のセグメントをL2ベースでルーティングするスイッチが完成したぞ!
試験
- 試験用PCから192.168.11.0セグメントのPCにpingする。設定がうまくいってたら届く。
- スイッチのネットワークを落とすと、pingが帰ってこなくなる。スイッチ経由してなかったらネットワーク落としてもping通り続ける
- # service network stop
- スイッチのネットワーク復活させると、再度pingが帰ってくる
たぶん、スイッチ経由してるからこんな挙動してるんだろう、よしとしよう。
ついでにフォワーディングテーブルを確認してみると・・・
# brctl showmacs vbr0 port no mac addr is local? ageing timer 1 00:0c:29:58:e4:8b yes 0.00 3 00:0c:29:58:e4:9f yes 0.00 1 00:0c:29:c3:f0:3f no 0.00 3 00:0c:29:fd:02:02 no 190.05 2 00:50:56:30:d8:19 yes 0.00
こんな感じで、各ポートのMACアドレスとポートの接続先のMACアドレスが出てくる!ついでにエージングタイマーも出てくる!すげー!