Xen3.0で内部用仮想L2スイッチ(virbr1)とゲストeth1の追加
前回までにネットワーク構造を考えたので順に組み立てていこう!!今回はNFSサーバーのネットワーク周りについて。
(構築手順)
- ゲストOSを追加
- 内部用L2スイッチになるvirbr1を追加
- ゲストOSのeth1を追加
1. ゲストOSを追加
NFSサーバー用のゲストOSを追加する。XenのゲストOSのインストールと同様にインストール。ゲストを起動すると、ゲストOSのeth0が自動的にxenbrにリンクするようになっている。ゲストOSのeth0はそのままにしてeht1を新たに追加して、virbr(これも追加する)につなげる。
2.内部用L2スイッチになるvirbr1を追加
virbrを追加するためには/etc/libvirt/qemu/networks/以下に定義ファイルを追加する。しかしvirsh net-undefineを実行すると/etc/libvirt/qemu/networks/以下のファイルは消えてしまうらしく、原本の定義ファイルを別に作成しておいてそれを読み込むようにする。/etc/virnet/virnet1.xmlを作成する。
-
- /etc/virnet/virnet1.xml
libvirt にそれを認識させてる。これで/etc/libvirt/qemu/networks/にコピーされる。
virnet1
反映させるためにvirnet1を起動させる。
#virsh net-define /etc/virnet/virnet1.xml
以上でvirbr1は追加されたことになる。デフォルトで存在しているvirbr0はそのまましていてもいいが無駄なので切っておく。
#virsh net-start virnet1
上記で述べたようにこれをすると/etc/libvirt/qemu/networks/の定義ファイルは削除されてしまうので復活させたい場合はバックアップを取っておくように。(僕はとちってdefault.xmlを消してしまった。。。。。)
#virsh net-destroy virnet0
#virsh net-undefine virnet0
3-1. ゲストOSのeth1を追加(ホスト側の設定)
/etc/xen/scriptsにあるnetwork-bridgeを複製してnetwork-bridge.nfsを作っておく(バックアップのため)
次に/etc/xen/scripts/network-script-customを新規作成して以下のシェルスクリプトを書く。
cp /etc/xen/scripts/network-bridge /etc/xen/scripts/network-bridge-custom
network-bridge.nfsとnetwork-script-customに実行権限をあたえる。
# !/bin/sh
# Exit if anything goes wrong
set -e
# Some clean-up of iptables rules inserted by libvirtd.
iptables -D INPUT -i $libvirtbr -p udp -m udp --dport 53 -j ACCEPT &>/dev/null
iptables -D INPUT -i $libvirtbr -p tcp -m tcp --dport 53 -j ACCEPT &>/dev/null
iptables -D INPUT -i $libvirtbr -p udp -m udp --dport 67 -j ACCEPT &>/dev/null
iptables -D INPUT -i $libvirtbr -p tcp -m tcp --dport 67 -j ACCEPT &>/dev/null# First arg is operation.
OP=$1
shift
script=/etc/xen/scripts/network-bridge.nfs
case ${OP} in
start)
$script start vifnum=0 bridge=xenbr0 netdev=eth0
$script start vifnum=1 bridge=virbr1 netdev=eth1
;;
stop)
$script stop vifnum=0 bridge=xenbr0 netdev=eth0
$script stop vifnum=1 bridge=virbr1 netdev=eth1
;;
status)
$script status vifnum=0 bridge=xenbr0 netdev=eth0
$script status vifnum=1 bridge=virbr1 netdev=eth1
;;
"*)"
echo 'Unknown command: ' ${OP}
echo 'Valid commands are: start, stop, status'
exit 1
esac
次に/etc/xenにあるゲストOSの定義ファイルの(network-script network-bridge)を(network-script network-custom)にする
#chmod 755 network-bridge.nfs network-script-custom
これでホスト側の設定は完了です。マシンごと再起動してホストに入ってeth1と追加します。
3-2ゲストOSのeth1を追加(ゲスト側の設定)
/etc/sysconfig/network-scripts/ifcfg-eth1ファイルを新規作成します
ここではvirbr1はDHCPを持っていないのでIPアドレスを指定します。
あとはネットワークを再起動します。
# Xen Virtual Ethernet eth1
DEVICE=eth1
HWADDR=00:16:3e:2f:5d:03
BOOTPROTO=none
BROADCAST=192.168.100.255
IPADDR=192.168.100.2
NETMASK=255.255.255.0
NETWORK=192.168.100.0
GATEWAY=192.168.100.1
TYPE=Ethernet
ONBOOT=yes
これでifconfigしてみてeth1が希望通りのIPで追加されていれば成功です。
/etc/rc.d/init.d/network restart
(参考サイト)
(追記)
色々間違えていたので修正しました。ブリッジが断線していた。。。。。