OpenVZ ブリッジの設定

ゲストOSをホストOS側NWに接続するための設定。


・bridge-utils のインストール

# apt-get install bridge-utils

・ブリッジの作成
ssh で作業している場合は接続が切れるので、シェルで設定する

# brctl addbr br0
# brctl addif br0 eth0
# ifconfig eth0 0.0.0.0
# ifconfig br0 192.168.0.100 netmask 255.255.255.0 up
# route add default gw 192.168.0.1 br0

・ブリッジが正常に動作することが確認できたら /etc/network/interfaces に設定追加する

# vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 0.0.0.0

auto br0
iface br0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
bridge_ports eth0

・/usr/sbin/vznetaddbr の設定

# vi /usr/sbin/vznetaddbr
※下記内容で上書き

#!/bin/sh
# /usr/sbin/vznetaddbr
# a script to add virtual network interfaces (veth's) in a CT to a bridge on CT0

CONFIGFILE=/etc/vz/conf/$VEID.conf
. $CONFIGFILE
VZHOSTIF=`echo $NETIF |sed 's/^.*host_ifname=\(.*\),.*$/\1/g'`

if [ ! -n "$VZHOSTIF" ]; then
   echo "According to $CONFIGFILE CT$VEID has no veth interface configured."
   exit 0
fi

if [ ! -n "$VZHOSTBR" ]; then
   echo "According to $CONFIGFILE CT$VEID has no bridge interface configured."
   exit 1
fi

echo "Adding interface $VZHOSTIF to bridge $VZHOSTBR on CT0 for CT$VEID"
/sbin/ifconfig $VZHOSTIF 0
echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/$VZHOSTIF/forwarding
/usr/sbin/brctl addif $VZHOSTBR $VZHOSTIF

exit 0

VPS設定ファイルに設定追加

# echo "CONFIG_CUSTOMIZED=\"yes\"" >> /etc/vz/conf/101.conf
# echo "VZHOSTBR=\"${BRIDGE:-br0}\"" >> /etc/vz/conf/101.conf

・ゲストOSにインターフェース追加

# vzctl set 101 --netif_add eth0,,,,br0 --save

・ゲストOSで eth0 の設定をする

# vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.0.101 
netmask 255.255.255.0
gateway 192.168.0.1

・ /etc/vz/vznet.conf の作成

# vi /etc/vz/vznet.conf 

#!/bin/bash
EXTERNAL_SCRIPT="/usr/sbin/vznetaddbr"

※ゲストOS起動時に /usr/sbin/vznetaddbr が実行され、ホストOSの br0 に ゲストOSのeth0が追加される

・動作確認

# vzctl start 101

・ブリッジの状態確認

# brctl show

ssmping を使えば unicast、multicastそれぞれの疎通確認が可能