さて続けて…。
今度はこちらの記事の6枚目~9枚目(最後)の画像部分に挑戦。
現在、leo / virgo ともに起動していると思う。
leo 側の設定を変更したいので、leo を停止するが、virgo から leo に向けて ping を打ち続けよう。
(virgo) $ ping 192.168.57.138
virgo → leo の ping を打ち続けたまま、leo を停止させる。
(leo) $ sudo systemctl poweroff
leo が停止されたら、virgo → leo の ping も通信出来なくなるはず。ping はそのまま置いておく。
vlan10 に接続していた leo を、vlan20 に接続し直す。
(gemini) $ virsh edit leo
--ココから
<interface type='network'>~</interface> の間の1行を修正。
<source network='vlan10'/>
↓
<source network='vlan20'/>
--ココまで
更新が出来たら、leo を起動させよう。
(gemini) $ virsh start leo
leo が起動するまでの間、ping を打ち続けている virgo の方をチェック。
通信が回復しないはずだ。
異なる vlanスイッチなので、通信が回復しなくて当然、のはず。
今度は virgo を vlan20 のスイッチに繋ぎ替える。
leo から virgo へ ping を打ち続けよう。
(leo) $ ping 192.168.57.139
当然、通信は出来ていないはず。
このまま ping を放置して、virgo の接続先スイッチを切り替える。
virgo の停止
(virgo) $ sudo systemctl poweroff
virgo の接続先の切り替え
(cancer) $ virsh edit virgo
--ココから
<interface type='network'>~</interface> の間の1行を修正。
<source network='vlan10'/>
↓
<source network='vlan20'/>
--ココまで
そしたら virgo を起動。
(cancer) $ virsh start virgo
起動中、virgo に ping を打ち続けている leo の画面をチェックしよう。
期待した通りなら、通信が復旧するはずだ。
う~む。今回は全て、期待した通りの動きになった。
おかげで検証もスムーズに進んだ。
VLAN は恐らく、OpenStack 等を使う時に意識しておく必要があると思うから、検証がスムーズに出来てよかった。
さて、OpenvSwitch を使った VLAN の構築検証はココまでにして、次は何に着手しようかな?
主にUbuntuで実験した内容を書くかもしれない。 もしかしたら、つまらない時事ネタかも。 いつか、紙媒体の書籍にしたいので、このブログの内容の転載はお控え願います。引用は可。 まずは、「目指せ!電子書籍化!」です。
2017年6月13日火曜日
OpenvSwitch による VLAN 検証(その3)
やっと前回、vlan10 と vlan20 のスイッチが作られた。
今度は仮想マシン leo / virgo を vlan10 のスイッチに繋いでテストだ。
こちらの4枚目と5枚目の画像の作業になる。
まずは leo / virgo に追加した2枚目の NIC を、vlan10 のスイッチに繋ぎ替える。
virt-manager でもいいが、今回は virsh edit を使うことにする。
(gemini) $ virsh edit leo
(gemini) $ virsh edit virgo
--ココから
<interface type='network'>~</interface> が2セットある。この内の2つ目の方のセットを修正する。
<source network='ovsbridge'/>
↓
<source network='vlan10'/>
--ココまで
gemini 側で修正したら、 cancer 側にも反映させる。
(cancer) $ virsh dumpxml leo
(cancer) $ virsh dumpxml virgo
(cancer) $ sudo systemctl reload libvirt-bin.service
(cancer) $ virsh dumpxml leo
(cancer) $ virsh dumpxml virgo
反映されたことが確認できたら、それぞれ仮想マシンを起動しよう。
(gemini) $ virsh start leo
(cancer) $ virsh start virgo
起動したらそれぞれにログイン。
さて、ping による疎通が出来るのだろうか…?
(leo) $ ip address show ens10
(virgo) $ ip address show ens10
(leo) $ ping 192.168.57.139
(virgo) $ ping 192.168.57.138
どうやら通信できるようだ。
でも、通信出来るから OK というわけではなく、コチラの残りの部分(画像6枚目以降)も出来ることが確認できて、始めて VLAN が作動していることになるわけで。
まだ楽観視出来ないな…。
今度は仮想マシン leo / virgo を vlan10 のスイッチに繋いでテストだ。
こちらの4枚目と5枚目の画像の作業になる。
まずは leo / virgo に追加した2枚目の NIC を、vlan10 のスイッチに繋ぎ替える。
virt-manager でもいいが、今回は virsh edit を使うことにする。
(gemini) $ virsh edit leo
(gemini) $ virsh edit virgo
--ココから
<interface type='network'>~</interface> が2セットある。この内の2つ目の方のセットを修正する。
<source network='ovsbridge'/>
↓
<source network='vlan10'/>
--ココまで
gemini 側で修正したら、 cancer 側にも反映させる。
(cancer) $ virsh dumpxml leo
(cancer) $ virsh dumpxml virgo
(cancer) $ sudo systemctl reload libvirt-bin.service
(cancer) $ virsh dumpxml leo
(cancer) $ virsh dumpxml virgo
反映されたことが確認できたら、それぞれ仮想マシンを起動しよう。
(gemini) $ virsh start leo
(cancer) $ virsh start virgo
起動したらそれぞれにログイン。
さて、ping による疎通が出来るのだろうか…?
(leo) $ ip address show ens10
(virgo) $ ip address show ens10
(leo) $ ping 192.168.57.139
(virgo) $ ping 192.168.57.138
どうやら通信できるようだ。
でも、通信出来るから OK というわけではなく、コチラの残りの部分(画像6枚目以降)も出来ることが確認できて、始めて VLAN が作動していることになるわけで。
まだ楽観視出来ないな…。
OpenvSwitch による VLAN 検証(その2)
続いて、VLAN-ID を持った仮想スイッチってやつを作ってみたい。
このページの4枚目の図だ。
作成するのは gemini / cancer 上。
まずは、それぞれのネットワーク設定からだ。
(gemini) $ sudo vi /etc/network/interfaces.d/0020.vlan10
--ココから
auto vlan10
allow-extsw
iface vlan10 inet manual
ovs_bridge extsw
ovs_type OVSIntPort
ovs_options tag=10
--ココまで
(gemini) $ sudo vi /etc/network/interfaces.d/0030.vlan20
--ココから
auto vlan20
allow-extsw
iface vlan20 inet manual
ovs_bridge extsw
ovs_type OVSIntPort
ovs_options tag=20
--ココまで
(gemini) $ sudo vi /etc/network/interfaces.d/0010.extsw
--ovs_ports ens3 の下に2行追加
ovs_ports vlan10
ovs_ports vlan20
--ココまで
(gemini) $ sudo vi /etc/default/networking
--1行修正
EXCLUDE_INTERFACES=extsw
↓
EXCLUDE_INTERFACES="extsw vlan10 vlan20"
--
cancer でも同じ設定を。
(cancer) $ sudo vi /etc/network/interfaces.d/0020.vlan10
--ココから
auto vlan10
allow-extsw
iface vlan10 inet manual
ovs_bridge extsw
ovs_type OVSIntPort
ovs_options tag=10
--ココまで
(cancer) $ sudo vi /etc/network/interfaces.d/0030.vlan20
--ココから
auto vlan20
allow-extsw
iface vlan20 inet manual
ovs_bridge extsw
ovs_type OVSIntPort
ovs_options tag=20
--ココまで
(cancer) $ sudo vi /etc/network/interfaces.d/0010.extsw
--ovs_ports ens3 の下に2行追加
ovs_ports vlan10
ovs_ports vlan20
--ココまで
(cancer) $ sudo vi /etc/default/networking
--1行修正
EXCLUDE_INTERFACES=extsw
↓
EXCLUDE_INTERFACES="extsw vlan10 vlan20"
--
続いて、bridge の作成
(gemini) $ sudo ovs-vsctl show
(gemini) $ sudo ovs-vsctl add-br vlan10 extsw 10
(gemini) $ sudo ovs-vsctl add-br vlan20 extsw 20
(gemini) $ sudo ovs-vsctl show
(cancer) $ sudo ovs-vsctl show
(cancer) $ sudo ovs-vsctl add-br vlan10 extsw 10
(cancer) $ sudo ovs-vsctl add-br vlan20 extsw 20
(cancer) $ sudo ovs-vsctl show
これでいいのかな…?
leo / virgo を停止させ、gemini / cancer を再起動、反映されているか確認。
(leo) $ sudo systemctl poweroff
(virgo) $ sudo systemctl poweroff
(gemini) $ sudo systemctl reboot
(cancer) $ sudo systemctl reboot
(gemini) $ sudo ovs-vsctl show
(cancer) $ sudo ovs-vsctl show
これで、VLANタグ付きのスイッチが出来た…はず…。
作った VLANタグスイッチを、 libvirt に登録しよう。
(gemini) $ vi vlan10.xml
--ココから
<network>
<name>vlan10</name>
<forward mode='bridge'/>
<bridge name='vlan10'/>
<virtualport type='openvswitch'/>
</network>
--ココまで
(gemini) $ vi vlan20.xml
--ココから
<network>
<name>vlan20</name>
<forward mode='bridge'/>
<bridge name='vlan20'/>
<virtualport type='openvswitch'/>
</network>
--ココまで
(gemini) $ virsh net-list --all
(gemini) $ virsh net-define vlan10.xml
(gemini) $ virsh net-define vlan20.xml
(gemini) $ virsh net-list --all
(gemini) $ virsh net-autostart vlan10
(gemini) $ virsh net-autostart vlan20
(gemini) $ virsh net-start vlan10
(gemini) $ virsh net-start vlan20
(gemini) $ virsh net-list --all
cancer 側で取り込む。(libvirt 関連の情報は共有ディスク上にあるはずなので、cancer 側は再読込でOKのはず。)
(cancer) $ virsh net-list --all
(cancer) $ sudo systemctl reload libvirt-bin.service
(cancer) $ virsh net-list --all
これで VLAN付きスイッチの libvirt への登録も完了だ。
次は leo / virgo のネットワーク設定を変更して起動する流れだが、これは次回に。
このページの4枚目の図だ。
作成するのは gemini / cancer 上。
まずは、それぞれのネットワーク設定からだ。
(gemini) $ sudo vi /etc/network/interfaces.d/0020.vlan10
--ココから
auto vlan10
allow-extsw
iface vlan10 inet manual
ovs_bridge extsw
ovs_type OVSIntPort
ovs_options tag=10
--ココまで
(gemini) $ sudo vi /etc/network/interfaces.d/0030.vlan20
--ココから
auto vlan20
allow-extsw
iface vlan20 inet manual
ovs_bridge extsw
ovs_type OVSIntPort
ovs_options tag=20
--ココまで
(gemini) $ sudo vi /etc/network/interfaces.d/0010.extsw
--ovs_ports ens3 の下に2行追加
ovs_ports vlan10
ovs_ports vlan20
--ココまで
(gemini) $ sudo vi /etc/default/networking
--1行修正
EXCLUDE_INTERFACES=extsw
↓
EXCLUDE_INTERFACES="extsw vlan10 vlan20"
--
cancer でも同じ設定を。
(cancer) $ sudo vi /etc/network/interfaces.d/0020.vlan10
--ココから
auto vlan10
allow-extsw
iface vlan10 inet manual
ovs_bridge extsw
ovs_type OVSIntPort
ovs_options tag=10
--ココまで
(cancer) $ sudo vi /etc/network/interfaces.d/0030.vlan20
--ココから
auto vlan20
allow-extsw
iface vlan20 inet manual
ovs_bridge extsw
ovs_type OVSIntPort
ovs_options tag=20
--ココまで
(cancer) $ sudo vi /etc/network/interfaces.d/0010.extsw
--ovs_ports ens3 の下に2行追加
ovs_ports vlan10
ovs_ports vlan20
--ココまで
(cancer) $ sudo vi /etc/default/networking
--1行修正
EXCLUDE_INTERFACES=extsw
↓
EXCLUDE_INTERFACES="extsw vlan10 vlan20"
--
続いて、bridge の作成
(gemini) $ sudo ovs-vsctl show
(gemini) $ sudo ovs-vsctl add-br vlan10 extsw 10
(gemini) $ sudo ovs-vsctl add-br vlan20 extsw 20
(gemini) $ sudo ovs-vsctl show
(cancer) $ sudo ovs-vsctl show
(cancer) $ sudo ovs-vsctl add-br vlan10 extsw 10
(cancer) $ sudo ovs-vsctl add-br vlan20 extsw 20
(cancer) $ sudo ovs-vsctl show
これでいいのかな…?
leo / virgo を停止させ、gemini / cancer を再起動、反映されているか確認。
(leo) $ sudo systemctl poweroff
(virgo) $ sudo systemctl poweroff
(gemini) $ sudo systemctl reboot
(cancer) $ sudo systemctl reboot
(gemini) $ sudo ovs-vsctl show
(cancer) $ sudo ovs-vsctl show
これで、VLANタグ付きのスイッチが出来た…はず…。
作った VLANタグスイッチを、 libvirt に登録しよう。
(gemini) $ vi vlan10.xml
--ココから
<network>
<name>vlan10</name>
<forward mode='bridge'/>
<bridge name='vlan10'/>
<virtualport type='openvswitch'/>
</network>
--ココまで
(gemini) $ vi vlan20.xml
--ココから
<network>
<name>vlan20</name>
<forward mode='bridge'/>
<bridge name='vlan20'/>
<virtualport type='openvswitch'/>
</network>
--ココまで
(gemini) $ virsh net-list --all
(gemini) $ virsh net-define vlan10.xml
(gemini) $ virsh net-define vlan20.xml
(gemini) $ virsh net-list --all
(gemini) $ virsh net-autostart vlan10
(gemini) $ virsh net-autostart vlan20
(gemini) $ virsh net-start vlan10
(gemini) $ virsh net-start vlan20
(gemini) $ virsh net-list --all
cancer 側で取り込む。(libvirt 関連の情報は共有ディスク上にあるはずなので、cancer 側は再読込でOKのはず。)
(cancer) $ virsh net-list --all
(cancer) $ sudo systemctl reload libvirt-bin.service
(cancer) $ virsh net-list --all
これで VLAN付きスイッチの libvirt への登録も完了だ。
次は leo / virgo のネットワーク設定を変更して起動する流れだが、これは次回に。
OpenvSwitch による VLAN 検証(その1)
とりあえず、前述の図の3枚目までを実施してみる。
まずは leo / virgo を停止させよう。
(leo) $ sudo systemctl poweroff
(virgo) $ sudo systemctl poweroff
停止の確認が出来たら、gemini で virt-manager を起動し、leo / virgo に NIC を追加させる。
(gemini) $ virt-manager
NIC追加したら、一度構成を見直してみよう。
(gemini) $ virsh edit leo
(gemini) $ virsh edit virgo
<interface type='network'>タグが2つあると思う。
2つ目の<interface ...>タグの<address ...>タグ、slot='0xNN'を見てみて欲しい。
0x0a になっていると思うけど、異なる値になっているかもしれない。
ココは leo / virgo で値を合わせておこう。(ここの値を 0x0a にした場合、ゲストOS leo / virgo の追加NICのデバイス名は ens10 になる)
仮想マシンの設定変更が完了したら、cancer 側にも反映させよう。
(cancer) $ sudo systemctl reload libvirt-bin.service
(cancer) $ virsh dumpxml leo
(cancer) $ virsh dumpxml virgo
(もし反映されてなかったら、 sudo systemctl restart libvirt-bin.service で再起動だ。)
設定反映が確認できたら、gemini 上で leo を、cancer 上で virgo をそれぞれ起動しよう。
(gemini) $ virsh start leo
(cancer) $ virsh start virgo
起動が完了したら、ネットワークインターフェースを確認。
(leo) $ ip link show
(virgo) $ ip link show
ens10 というネットワークインターフェース(NIC)が出来ているのが確認できるはずだ。
この NIC に IP アドレスを付与しよう。
今回は
leo : 192.168.57.138/24
virgo : 192.168.57.139/24
を充てる。
(普段使っている ens3 には、192.168.55.x/24 のIPアドレスが付与されている。ens10 には ens3 とは異なるネットワークアドレスを充てるように。)
(leo) $ sudo vi /etc/network/interfaces.d/ens10
--ココから
auto ens10
iface ens10 inet static
address 192.168.57.138
network 192.168.57.0
netmask 255.255.255.0
broadcast 192.168.57.255
--ココまで
(virgo) $ sudo vi /etc/network/interfaces.d/ens10
--ココから
auto ens10
iface ens10 inet static
address 192.168.57.139
network 192.168.57.0
netmask 255.255.255.0
broadcast 192.168.57.255
--ココまで
IPアドレスが付与されるか確認。(leo / virgo ともに同じ操作だ)
(leo) $ ip address show ens10
(leo) $ sudo ifup ens10
(leo) $ ip address show ens10
(virgo) $ ip address show ens10
(virgo) $ sudo ifup ens10
(virgo) $ ip address show ens10
OS 再起動して確認しよう。
(leo) $ sudo systemctl reboot
(virgo) $ sudo systemctl reboot
(leo) $ ip address show ens10
(virgo) $ ip address show ens10
IP アドレスの付与が出来たら、相互に ping を打って、疎通が取れることも確認しておく。
(leo) $ ping 192.168.57.139
(virgo) $ ping 192.168.57.138
今回はココまで。
次回は gemini / cancer に VLAN-ID 付きの仮想スイッチを作ってみる。
まずは leo / virgo を停止させよう。
(leo) $ sudo systemctl poweroff
(virgo) $ sudo systemctl poweroff
停止の確認が出来たら、gemini で virt-manager を起動し、leo / virgo に NIC を追加させる。
(gemini) $ virt-manager
| NICを追加し、今まで使用していたものと 同じスイッチに繋ぐ |
NIC追加したら、一度構成を見直してみよう。
(gemini) $ virsh edit leo
(gemini) $ virsh edit virgo
<interface type='network'>タグが2つあると思う。
2つ目の<interface ...>タグの<address ...>タグ、slot='0xNN'を見てみて欲しい。
0x0a になっていると思うけど、異なる値になっているかもしれない。
ココは leo / virgo で値を合わせておこう。(ここの値を 0x0a にした場合、ゲストOS leo / virgo の追加NICのデバイス名は ens10 になる)
仮想マシンの設定変更が完了したら、cancer 側にも反映させよう。
(cancer) $ sudo systemctl reload libvirt-bin.service
(cancer) $ virsh dumpxml leo
(cancer) $ virsh dumpxml virgo
(もし反映されてなかったら、 sudo systemctl restart libvirt-bin.service で再起動だ。)
設定反映が確認できたら、gemini 上で leo を、cancer 上で virgo をそれぞれ起動しよう。
(gemini) $ virsh start leo
(cancer) $ virsh start virgo
起動が完了したら、ネットワークインターフェースを確認。
(leo) $ ip link show
(virgo) $ ip link show
ens10 というネットワークインターフェース(NIC)が出来ているのが確認できるはずだ。
この NIC に IP アドレスを付与しよう。
今回は
leo : 192.168.57.138/24
virgo : 192.168.57.139/24
を充てる。
(普段使っている ens3 には、192.168.55.x/24 のIPアドレスが付与されている。ens10 には ens3 とは異なるネットワークアドレスを充てるように。)
(leo) $ sudo vi /etc/network/interfaces.d/ens10
--ココから
auto ens10
iface ens10 inet static
address 192.168.57.138
network 192.168.57.0
netmask 255.255.255.0
broadcast 192.168.57.255
--ココまで
(virgo) $ sudo vi /etc/network/interfaces.d/ens10
--ココから
auto ens10
iface ens10 inet static
address 192.168.57.139
network 192.168.57.0
netmask 255.255.255.0
broadcast 192.168.57.255
--ココまで
IPアドレスが付与されるか確認。(leo / virgo ともに同じ操作だ)
(leo) $ ip address show ens10
(leo) $ sudo ifup ens10
(leo) $ ip address show ens10
(virgo) $ ip address show ens10
(virgo) $ sudo ifup ens10
(virgo) $ ip address show ens10
OS 再起動して確認しよう。
(leo) $ sudo systemctl reboot
(virgo) $ sudo systemctl reboot
(leo) $ ip address show ens10
(virgo) $ ip address show ens10
IP アドレスの付与が出来たら、相互に ping を打って、疎通が取れることも確認しておく。
(leo) $ ping 192.168.57.139
(virgo) $ ping 192.168.57.138
今回はココまで。
次回は gemini / cancer に VLAN-ID 付きの仮想スイッチを作ってみる。
2017年6月12日月曜日
OpenvSwitch による VLAN 検証(概要)
さて、leo / virgo という仮想マシンが出来上がったところで、OpenvSwitch を用いた VLAN の検証をしてみたい。
と言っても、OpenvSwitch の癖がまだ掴めていないし、そもそも出来るのかどうかも不明。
イメージとしては、以下の図のように実装出来ると考えている。
実は既に、最初の3枚分は実施している。
そんなに難しいことはやっていないので、次回から順番に書いていくことにする。
と言っても、OpenvSwitch の癖がまだ掴めていないし、そもそも出来るのかどうかも不明。
イメージとしては、以下の図のように実装出来ると考えている。
![]() |
| スタート時の状態 (NIC は1つずつ) |
![]() |
| 仮想マシンに NIC を追加し、IPを付与。 これまで使っていた仮想スイッチにそのまま繋ぐ。 |
![]() |
| 新しいIPアドレスで、仮想マシン同士の通信が可能 |
![]() |
| VLAN10 / VLAN20 のスイッチを作成し、既存スイッチへ接続 仮想マシンを VLAN10 経由に繋ぎ替える |
![]() |
| 同じ VLAN 同士なので通信できるはず |
![]() |
| leo を VLAN10 から VLAN20 へ繋ぎ替える |
![]() |
| 異なる VLAN なので通信できないはず |
![]() |
| virgo を VLAN20 へ繋ぎ替える |
![]() |
| 同じVLANになったので、また通信可能になる はず |
実は既に、最初の3枚分は実施している。
そんなに難しいことはやっていないので、次回から順番に書いていくことにする。
登録:
投稿 (Atom)








