OpenVZのネットワーク(3) veth + vlan + bridge




異なるネットワークのVEをひとつのHNで共存させる際には、VZのデフォルトのネットワークインターフェースであるvenetではなくvethを使用します。実際には、既存のリアルサーバを仮想環境に集約するという場面があると思います。

以下のような条件の場合を取り上げて、実際に設定してみます。

もちろん、対抗側にはVLANスイッチがあると仮定します。

HNのインターフェース       eth0

VE100のVEID                 100
VE100のVLANのタグID         100
VE100のIPアドレス           192.168.100.2/24
VE100のVE内インターフェース eth0
VE100のveth                 veth100

VE200のVEID                 200
VE200のVLANのタグID         200
VE200のIPアドレス           192.168.200.2/24
VE200のVE内インターフェース eth0
VE200のveth                 veth200

まず、VLANインターフェースのコンフィグファイルを作成します。

VLANのカーネルモジュールをインストールします。

[root@node1 ~]# modprobe 8021q

/etc/sysconfig/network-scripts/ifcfg-eth0.100

DEVICE=eth0.100
BOOTPROTO=static
IPADDR=192.168.100.2
NETMASK=255.255.255.0
ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-eth0.200

DEVICE=eth0.200
BOOTPROTO=static
IPADDR=192.168.200.2
NETMASK=255.255.255.0
ONBOOT=yes

eth0はIPアドレスをつけずにインターフェースをアップだけしておきます。

(よって設定するHNにはリモートアクセス用のeth1が必要かもしれません。)

/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
IPADDR=0.0.0.0
ONBOOT=yes

ネットワークをリスタートします。

[root@node1 ~]# /etc/rc.d/init.d/network restart

最終的にVLANインターフェースとvethをブリッジさせる必要があるので、

ブリッジインターフェースを作成してVLANインターフェースを登録しておきます。

[root@node1 ~]# brctl addbr vzbr100
[root@node1 ~]# brctl addif vzbr100 eth0.0100
[root@node1 ~]# brctl addbr vzbr200
[root@node1 ~]# brctl addif vzbr200 eth0.0200

次にvethの設定をします。

まずはvethのカーネルモジュールをインストールします。

[root@node1 ~]# modprobe vzethdev

vethではHNのインターフェースにIPアドレスを設定していないので、IP forwardingの設定をします。また、proxy arpの設定をします。

[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/forwarding
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

venet用に設定していたIPアドレスをコメントアウトします。

「VETH」で設定されているMACアドレスは適当です。実MACアドレス・他のVEのveth設定とバッティングしないものを設定します。

/etc/sysconfig/vz-scripts/100.conf

#IP_ADDRESS="192.168.100.2"
VETH="veth100.0,00:12:34:56:78:9A,eth0,00:12:34:56:78:9B "

/etc/sysconfig/vz-scripts/200.conf

#IP_ADDRESS="192.168.200.2"
VETH="veth200.0,00:12:34:56:78:9C,eth0,00:12:34:56:78:9D "

VEを起動してvethインターフェースを立ち上げた後、forwardingと

proxy arpの設定をします。

[root@node1 ~]# vzctl start 100
[root@node1 ~]# ifconfig veth100.0 0

ブリッジに登録します。

「xx:xx:xx:xx:xx:xx」はHNのeth0のMACアドレスを入力します。

[root@node1 ~]# brctl addif vzbr100 veth100.0
[root@node1 ~]# ifconfig vzbr100 hw ether xx:xx:xx:xx:xx:xx
[root@node1 ~]# ifconfig vzbr100 0
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0.0100/forwarding
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0.0100/proxy_arp
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/veth100.0/forwarding
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/veth100.0/proxy_arp
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/vzbr100/forwarding
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/vzbr100/proxy_arp
[root@node1 ~]# ip route add 192.168.100.2 dev veth100.0

同じようにVE200も設定します。

[root@node1 ~]# vzctl start 200
[root@node1 ~]# ifconfig veth200.0 0
[root@node1 ~]# brctl addif vzbr200 veth200.0
[root@node1 ~]# ifconfig vzbr200 hw ether xx:xx:xx:xx:xx:xx
[root@node1 ~]# ifconfig vzbr200 0
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0.0200/forwarding
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0.0200/proxy_arp
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/veth200.0/forwarding
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/veth200.0/proxy_arp
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/vzbr200/forwarding
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/conf/vzbr200/proxy_arp
[root@node1 ~]# ip route add 192.168.200.2 dev veth200.0

これで、VE内でリアルサーバのようにネットワークの設定をすれば、通信できると思います。

参考

http://wiki.openvz.org/Virtual_Ethernet_device



コメント

Reader Comments

Be the first to leave a comment!