Debianベースの仮想化環境Proxmox VEは、KVM/qemuベースのハードウェア仮想と、OpenVZのコンテナ仮想の2種類が使用できる。
このうち、OpenVZのコンテナの方で、CentOS7を作ったところ、通信が行えないという現象が発生した。
元となるCentOS7のOpenVZテンプレートは、「OpenVZ公式 Download/template/precreated」から入手した。
で、普通に導入して起動してみると、IPアドレスが割り当てられていない。
root@proxmox:~# vzctl start 777 Starting container ... Container is mounted Adding IP address(es): 192.168.35.20 vSetting CPU units: 1000 Setting CPUs: 2 zContainer start in progress... root@proxmox:~# vzctl enter 777 entered into CT 777 [root@centos7 /]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/void inet 127.0.0.1/32 scope host venet0 [root@centos7 /]#
検索してみると、すぐに情報が出てきた。
「NO IP ADDRESS IN PROXMOX OPENVZ CENTOS 7 CONTAINER」
RHEL/CentOS 7.1におけるバグで、「Bug 1207975 – ifup-aliases does not proper catch arping failure」にて修正されているとのこと。
起動時にネットワークを有効化している /etc/sysconfig/network-scripts/ifup-aliases 内の
if ! /sbin/arping -q -c 2 -w ${ARPING_WAIT:-3} -D -I ${parent_device} ${IPADDR} ; then
という条件式の書き方に問題があるようで
/sbin/arping -q -c 2 -w ${ARPING_WAIT:-3} -D -I ${parent_device} ${IPADDR} if [ $? = 1 ] ; then
と2行に分けることで回避できるとのこと。
なので、起動しているコンテナ内の/etc/sysconfig/network-scripts/ifup-aliasesを書き換えることで対処できました。
[root@centos7 ~]# ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN link/void inet 127.0.0.1/32 scope host venet0 inet 192.168.35.20/32 brd 192.168.35.20 scope global venet0:0 [root@centos7 ~]#