vethをVE起動時に自動的にブリッジへ

1. "/usr/sbin/vznetcfg"に以下のパッチをあてる。

--- vznetcfg.org        2007-05-09 00:34:41.000000000 +0900
+++ vznetcfg    2007-05-07 11:59:15.000000000 +0900
@@ -26,10 +26,25 @@

 function init_veth()
 {
-       local dev=$1
+        local dev=$1

-       /sbin/ifconfig ${dev} up
+        /sbin/ifconfig ${dev} up
+        if [ "${VZNET_BRIDGE}" != "" ]; then
+                echo "/usr/sbin/brctl addif ${VZNET_BRIDGE} ${dev}"
+                /usr/sbin/brctl addif ${VZNET_BRIDGE} ${dev}
+        fi
+
+        i=0
+        while [ "${VZNET_MBRIDGE[$i]}" != "" -a "${VZNET_MBRIDGE_VETH_PREFIX[$i]}" != "" ]; do
+            R=`echo -n ${dev} | grep "^${VZNET_MBRIDGE_VETH_PREFIX[$i]}"`
+            if [ "$R" != "" ]; then
+                echo "/usr/sbin/brctl addif ${VZNET_MBRIDGE[$i]} ${dev}"
+                /usr/sbin/brctl addif ${VZNET_MBRIDGE[$i]} ${dev}
+            fi
+            i=$[$i+1]
+        done
 }
+
 # Call the external script if defined
 if [ -n "${EXTERNAL_SCRIPT}" -a -x "${EXTERNAL_SCRIPT}" ]; then
        export VEID

2. "/etc/vz/vznet.conf"を作成し、設定を記述する。

2-1. ブリッジデバイスがひとつの場合。

#
# /etc/vz/vznet.conf
#
VZNET_BRIDGE="br0" #// ブリッジデバイス

2-2. ブリッジデバイスが二つ以上の場合。

#
# /etc/vz/vznet.conf
#
VZNET_MBRIDGE[0]="br0"              #// 1番目のブリッジデバイス
VZNET_MBRIDGE_VETH_PREFIX[0]="vif0" #// 1番目のブリッジに入れるvethデバイス名の先頭文字列パタン ex. vif0.xxxx
VZNET_MBRIDGE[1]="br1"              #// 2番目のブリッジデバイス
VZNET_MBRIDGE_VETH_PREFIX[1]="vif1" #// 2番目のブリッジに入れるvethデバイス名の先頭文字列パタン ex. vif1.yyyy

余談だけど、vethのMACアドレスやvethデバイス名は、付与するIPアドレスを16進法値としたものに結びつけると、
管理しやすくなるかもしれない。

ex. 192.168.0.1 => ifname=eth0,mac=00:FF:C0:A8:00:01,host_ifname=vif0.C0A80001,host_mac=00:FE:C0:A8:00:01