bridge+epairで仮想HUBをvitochaで作ってみる
先日書いた記事
bridge+epairで仮想HUBを作ってみる=>できた -
を@tss_ontapさんが作成したvitochaを用いて作成します。
-
-
-
-
-
-
- -
-
-
-
-
-
vitochaについての情報はこちら。
公式サイト
VITOCHA
説明スライド
VIMAGE仮想ネットワーク構築クラスライブラリ VITOCHA (通称バーチャル◯もちゃ)
-
-
-
-
-
-
- -
-
-
-
-
-
ネットワーク図は前回とほぼ同じです。
今回はswitchにIPaddrを割り当てていません。
スクリプト
#!/usr/local/bin/ruby require './vitocha/vitocha.rb' tomocha=Operator.new #create switch switchNAME = "switch" switch=Bridge.new(switchNAME) switch.on #hostjail connect switch epaira, epairb = tomocha.createpair epairaIP = "192.168.20.1" epairaMASK = "255.255.255.0" ifconfig(epaira + " inet " + epairaIP + " netmask " + epairaMASK) ifconfig(epaira + " up") switch.connect(epairb) switch.up(epairb) #create server01 serverNAME = "server01" epairaIP = "192.168.20.11" epairaMASK = "255.255.255.0" server = Server.new(serverNAME) epaira, epairb = tomocha.createpair server.connect(epaira) server.assignip(epaira,epairaIP,epairaMASK) tomocha.register(epaira,serverNAME,epairaIP,epairaMASK) server.up(epaira) switch.connect(epairb) switch.up(epairb) #create server02 serverNAME = "server02" epairaIP = "192.168.20.12" epairaMASK = "255.255.255.0" server = Server.new(serverNAME) epaira, epairb = tomocha.createpair server.connect(epaira) server.assignip(epaira,epairaIP,epairaMASK) tomocha.register(epaira,serverNAME,epairaIP,epairaMASK) server.up(epaira) switch.connect(epairb) switch.up(epairb)
スクリプトを動かす
# ./test.rb Hi, I'll do your job. shell(#<Th:0x00000801d901a8>): /usr/sbin/jls host.hostname shell(#<Th:0x00000801d901a8>): /sbin/ifconfig bridge create shell(#<Th:0x00000801d901a8>): /sbin/ifconfig bridge0 vnet switch shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec switch ifconfig bridge0 name vbridge0 shell(#<Th:0x00000801d76f28>): /usr/sbin/jexec switch ifconfig vbridge0 up shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec switch ifconfig vbridge0 up shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair create shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair0a link 02:c0:e4:00:0:0a shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair0b link 02:c0:e4:00:0:0b shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair0a inet 192.168.20.1 netmask 255.255.255.0 shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair0a up shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair0b vnet switch shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec switch ifconfig vbridge0 addm epair0b shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec switch ifconfig epair0b up shell(#<Th:0x00000801d901a8>): /usr/sbin/jls host.hostname shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair create shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair1a link 02:c0:e4:00:1:0a shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair1b link 02:c0:e4:00:1:0b shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair1a vnet server01 shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec server01 ifconfig epair1a inet 192.168.20.11 netmask 255.255.255.0 shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec server01 ifconfig epair1a up shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair1b vnet switch shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec switch ifconfig vbridge0 addm epair1b shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec switch ifconfig epair1b up shell(#<Th:0x00000801d901a8>): /usr/sbin/jls host.hostname shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair create shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair2a link 02:c0:e4:00:2:0a shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair2b link 02:c0:e4:00:2:0b shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair2a vnet server02 shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec server02 ifconfig epair2a inet 192.168.20.12 netmask 255.255.255.0 shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec server02 ifconfig epair2a up shell(#<Th:0x00000801d901a8>): /sbin/ifconfig epair2b vnet switch shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec switch ifconfig vbridge0 addm epair2b shell(#<Th:0x00000801d901a8>): /usr/sbin/jexec switch ifconfig epair2b up
jail hostから192.168.20.11(server01)にpingを打ってみる。
# ping 192.168.20.11 PING 192.168.20.11 (192.168.20.11): 56 data bytes 64 bytes from 192.168.20.11: icmp_seq=0 ttl=64 time=0.293 ms 64 bytes from 192.168.20.11: icmp_seq=1 ttl=64 time=0.253 ms
jail hostから192.168.20.12(server02)にpingを打ってみる
# ping 192.168.20.12 PING 192.168.20.12 (192.168.20.12): 56 data bytes 64 bytes from 192.168.20.12: icmp_seq=0 ttl=64 time=0.328 ms 64 bytes from 192.168.20.12: icmp_seq=1 ttl=64 time=0.080 ms
server01から192.168.20.12(server02)にpingを打ってみる
# jexec server01 ping 192.168.20.12 PING 192.168.20.12 (192.168.20.12): 56 data bytes 64 bytes from 192.168.20.12: icmp_seq=0 ttl=64 time=0.124 ms 64 bytes from 192.168.20.12: icmp_seq=1 ttl=64 time=0.080 ms
全て疎通できてますね。
vitochaを使えばepairのMACaddrの重複を防ぐことができ、また別プログラムとの連携も可能になります。
以上。