Open vSwitchは、どうやらNetworkManagerでは管理出来ないっぽい。
まだNetworkManagerが対応していないようなのだ。
IPを付与している物理NICも、Network Managerではなく、旧来の管理方法(/etc/network/interfaces)を用いる必要があるようだ。
せっかく、IPアドレスの固定化でNetworkManagerを使用したのに、元に戻すことになってしまう。
大きな流れは以下の通りだ。
- Open vSwitchをインストールする。
- NetworkManagerから旧来の/etc/network/interfacesに切り替える。
- Open vSwitchのブリッジを作成する。
- /etc/network/interfacesの設定を書き換え、物理NICのIPアドレスを削除(ブリッジに接続)し、ブリッジにIPアドレスを付与する設定にする。
- KVMに新しいネットワークを作成する。(Open vSwitchで作成したブリッジを認識させる。既存のdefaultをOpen vSwitchに切り替えるやり方もアリ。)
- 既存の仮想マシンの接続先を、新しいネットワークに変更する。
この間、何度かOS再起動をしながら確認することになるため、コンソールから作業することになる。
以下、上記流れに沿って実施してみる。
- Open vSwitchをインストールする。
(aquarius)$ sudo apt-get update
(aquarius)$ sudo apt-get --simulate install openvswitch-switch
(aquarius)$ sudo apt-get install openvswitch-switch
- NetworkManagerから旧来の/etc/network/interfacesに切り替える。
今回は、interfacesに直接記載するのではなく、/etc/network/interfaces.dの下にNICの名前のファイルを作って、そちらに定義してみることにする。
(aquarius)$ sudo vi /etc/network/interfaces.d/enp0s25
----以下の内容で作成----
auto enp0s25
iface enp0s25 inet static
address 192.168.55.131
netmask 255.255.255.0
network 192.168.55.0
broadcast 192.168.55.255
gateway 192.168.55.1
dns-nameservers 192.168.55.1
#dns-nameservers 8.8.8.8
----ココまで----
あくまで、192.168.55.131/24のIPアドレスを付与する時の設定で、ルータのアドレスが192.168.55.1であることを想定して書いている。
各自、自分のネットワーク環境に合わせて欲しい。
また、最後の行は意味が無い行だ。ネームサーバを複数指定可能な環境の人向けのサンプルと思ってくれぃ。
これを設定したら、一度OSを再起動して、正しく反映されるか確認しておこう。
(aquarius)$ sudo shutdown -r now
(aquarius)$ ip address show
(aquarius)$ nmtui
nmtuiで「接続をアクティベートする」を選び、enp0s25にマーク(*)が付いていなければ、NetworkManager管理下に無い(interfaces管理下)ので成功だ。
ネームサーバの設定も行われているか確認しておこう。
(aquarius)$ dig www.yahoo.co.jp
- Open vSwitchのブリッジを作成する。
(ここでは、br-external という名前にしている)
(aquarius)$ sudo ovs-vsctl show
5070b377-4ad8-4ede-9ab5-d69ccfa820cb
ovs_version: "2.5.0"
(aquarius)$ sudo ovs-vsctl list-br
(aquarius)$ sudo ovs-vsctl add-br br-external
(aquarius)$ sudo ovs-vsctl show
5070b377-4ad8-4ede-9ab5-d69ccfa820cb
Bridge br-external
Port br-external
Interface br-external
type: internal
ovs_version: "2.5.0"
(aquarius)$ sudo ovs-vsctl list-br
br-external
(aquarius)$ sudo ovs-vsctl list-ports br-external
(aquarius)$ sudo ovs-vsctl list-ifaces br-external
(aquarius)$ sudo ovs-vsctl get-controller br-external
(aquarius)$ sudo ovs-vsctl get-aa-mapping br-external
(aquarius)$ sudo ovs-vsctl get-manager
こんなんでいいのかな…?
- /etc/network/interfacesの設定を書き換え、物理NICのIPアドレスを削除(ブリッジに接続)し、ブリッジにIPアドレスを付与する設定にする。
今度は、物理NIC(enp0s25)のIPアドレスを削除して、ブリッジI/Fを作成、IPアドレスをそちらに付与する。
よく分かっていないのだが、ブリッジ側にIPを付与しないと、ホストマシン(aquarius)のネットワークが使えなくなるのだ。
まずは、先に作成した設定ファイルを別の場所に移動しておく。(そのためのディレクトリも作っておく。)
(aquarius)$ sudo mkdir /etc/network/interfaces.d.old
(aquarius)$ ls -al /etc/network/interfaces.d.old
(aquarius)$ sudo mv /etc/network/interfaces.d/enp0s25 /etc/network/interfaces.d.old/
(aquarius)$ ls -al /etc/network/interfaces.d.old
続いて、物理NICのIPを削除。(IP未設定とする)
物理NIC設定と、ブリッジ設定で順番があるかもしれないので、ファイル名に数字を付与しておく。
(aquarius)$ sudo vi /etc/network/interfaces.d/0110.enp0s25
--ココから--
auto enp0s25
allow-br-external
iface enp0s25 inet manual
ovs_bridge br-external
ovs_type OVSPort
--ココまで--
ブリッジへのIP付与だ
(aquarius)$ sudo vi /etc/network/interfaces.d/0010.br-external
--ココから--
auto br-external
allow-ovs br-external
iface br-external inet static
address 192.168.55.131
network 192.168.55.0
netmask 255.255.255.0
broadcast 192.168.55.255
gateway 192.168.55.1
ovs_type OVSBridge
ovs_ports enp0s25
dns-nameservers 192.168.55.1
--ココまで--
ここまで出来たら、一度OSを再起動し、設定が反映されるか確認しよう。
(aquarius)$ sudo shutdown -r now
(aquarius)$ ip address show
(aquarius)$ dig www.blogger.com
(aquarius)$ sudo ovs-vsctl show
ip address showを実行したら、今までIPが付与されていたenp0s25には直接IPは付与されておらず、master ovs-sysytemとなっていることが確認できる。
(IPv6アドレスは特に変更していないため、リンクローカルアドレスは付与されているが…)
そして、br-externalにIPが付与されているはずだ。
- KVMに新しいネットワークを作成する。(Open vSwitchで作成したブリッジを認識させる。既存のdefaultをOpen vSwitchに切り替えるやり方もアリ。)
新しいネットワーク定義を作成するので、既存の定義を確認しておく。
(aquarius)$ virsh net-list --all
新しいネットワーク定義用のxmlファイルを作成する。
(aquarius)$ vi ovsbridge.xml
--ここから
<network>
<name>ovsbridge</name>
<forward mode='bridge'/>
<bridge name='br-external'/>
<virtualport type='openvswitch'/>
</network>
--ここまで
作成した定義ファイルを取り込もう。
(aquarius)$ virsh net-define ovsbridge.xml
(aquarius)$ virsh net-list --all
定義が取り込めたら、自動起動に設定する。
(aquarius)$ virsh net-autostart ovsbridge
(aquarius)$ virsh net-list --all
併せて、ネットワーク定義を起動しておこう。
(aquarius)$ virsh net-start ovsbridge
(aquarius)$ virsh net-list --all
- 既存の仮想マシンの接続先を、新しいネットワークに変更する。
piscesもariesも同じ作業なので、同じ手順で設定できる。
まずは、今の状態を出力しておく。
(aquarius)$ virsh dumpxml pisces
内容を確認したら、仮想マシンのネットワーク接続先をdefaultからovsbridgeに書き換える。
(aquarius)$ virsh edit pisces
<interface type='network'>という定義を探して、その中にある<source network='default'/>を<source network='ovsbridge'/>に書き換えよう。
終わったら、設定が反映されているか確認だ。
(aquarius)$ virsh dumpxml pisces
piscesやariesを起動、Remote Viewerからログインして、IPアドレスを確認してみて欲しい。
今までは、DHCPで192.168.122.xのIPアドレスが付与されていたと思うが、今はDHCPで192.168.55.xのアドレスが付与されているはずだ。
そのアドレスに向かって、aquarisや他の(192.168.55.xネットワーク上の)マシンからsshログインが出来ることも併せて確認して欲しい。
以後、仮想マシン作成時に、接続するネットワークをovsbridgeにすれば、ホストOS側と同じネットワークにフラットに接続できる。
本来、Open vSwitchは、SDN(Software Defined Network)に使うような高機能仮想スイッチだが、今回は単純スイッチとして使っている。(勿体無いが)
いずれ、SDNスイッチとして色々実験していくことになると思うが、当面やりたいことは実現出来た。
今回は以上。
0 件のコメント:
コメントを投稿