Xen ルーティングモード

Xen のルーティングモードで仮想ネットワークを構築しました。

192.168.1.111 のサーバ上に 192.168.2.0/24 の仮想ネットワークを
作成して、その仮想ネットワークに仮想サーバ vps1, vps2…を作成
しました。

イメージはこんな感じです。

Xen構成図

イロイロと試行錯誤をしたので、もう一度最初からやってみないと
どうやれば良いのか実は分かっていませんが 😎 記憶と
現状の結果を元に行った事をメモとして残します。

最初にまず、通常のブリッジモードで仮想サーバ vps1 を追加しました。
デフォルトの状態ですね。

# virt-install --name vps1 --nographics --prompt

次に仮想スイッチを作成しました。
以下のような定義ファイル yngsw1_def.xml を作成します。

<network>
  <name>yngsw1</name>
  <forward mode="route" dev="eth0" />
  <bridge name="yngsw1" />
  <ip address="192.168.2.1" netmask="255.255.255.0">
  </ip>
</network>

このファイルから仮想スイッチを作成します。

# virsh net-define yngsw1_def.xml
Network yngsw1 defined from yngsw1_def.xml

作成した yngsw1 をスタートさせます。

# virsh net-start yngsw1
Network yngsw1 started

そしてついでに、デフォルトの仮想ブリッジを削除しておきます。

# virsh net-destroy default
# rm /etc/libvirt/qemu/networks/autostart/default.xml

すると、以下のルーティングが追加されます 🙂

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.2.0     0.0.0.0         255.255.255.0   U         0 0          0 yngsw1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         192.168.1.254     0.0.0.0         UG        0 0          0 eth0

yngsw1 を自動的にスタートするようにします。

# virsh net-autostart yngsw1
Network yngsw1 marked as autostarted

そして、デフォルトのブリッジモードではなく、ルーティングモードで
起動するように /etc/xen/xend-config.sxp を変更します。

(network-script network-bridge)
↓コメントアウト
#(network-script network-bridge)
 
(vif-script vif-bridge)
↓コメントアウト
#(vif-script vif-bridge)
 
 
#(network-script network-route)
#(vif-script     vif-route)
↓コメントを外す
(network-script network-route)
(vif-script     vif-route)

vps1 を yngsw1 に接続します。
/etc/xen/vps1 の vif の bridge を変更します。

vif = [ "mac=00:16:36:02:e0:5d,bridge=xenbr0,script=vif-bridge" ]
↓変更
vif = [ "mac=00:16:36:02:e0:5d,bridge=yngsw1,script=vif-bridge" ]

vps1 の IP Address を yngsw1 上の IP Address に変更します。

vps1# vi /etc/sysconfig/network
vps1# /etc/sysconfig/network-scripts/ifcfg-eth0

ここまでやったらサーバを再起動すれば完成です。
もっとちゃんとした手順があると思うのですが見つける事が
できませんでした。。。 :mrgreen:

※外部のサーバから yngsw1 上の vps1 と通信する為には、
外部のサーバや、ルータなどで vps1 へのルーティングを
192.168.1.111 に向けないと通信できません。

※2 台目の仮想サーバ vps2 を追加する場合、
virt-install がエラーになってしまいます。
どうやら virbr0 や xenbr0 が無いとダメみたいです。
仕方がないので /etc/xen/scripts/network-bridge を起動して
から virt-install しました。