2025/05/28追記: proxmoxでのopenvz対応は 2016年4月リリースの proxmox 3.4までで現在は使うことができません。(proxmox wiki: openvz)
Debianベースの仮想化環境Proxmox VEは、KVM/qemuベースのハードウェア仮想と、OpenVZのコンテナ仮想の2種類が使用できる。
このうち、OpenVZのコンテナの方で、CentOS7を作ったところ、通信が行えないという現象が発生した。
元となるCentOS7のOpenVZテンプレートは、「OpenVZ公式 Download/template/precreated」から入手した。
で、普通に導入して起動してみると、IPアドレスが割り当てられていない。
root@proxmox:~# vzctl start 777<br />
Starting container ...<br />
Container is mounted<br />
Adding IP address(es): 192.168.35.20<br />
vSetting CPU units: 1000<br />
Setting CPUs: 2<br />
zContainer start in progress...<br />
root@proxmox:~# vzctl enter 777<br />
entered into CT 777<br />
[root@centos7 /]# ip addr show<br />
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN<br />
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
inet 127.0.0.1/8 scope host lo<br />
inet6 ::1/128 scope host<br />
valid_lft forever preferred_lft forever<br />
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN<br />
link/void<br />
inet 127.0.0.1/32 scope host venet0<br />
[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}<br />
if [ $? = 1 ] ; then
と2行に分けることで回避できるとのこと。
なので、起動しているコンテナ内の/etc/sysconfig/network-scripts/ifup-aliasesを書き換えることで対処できました。
[root@centos7 ~]# ip addr show<br />
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN<br />
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br />
inet 127.0.0.1/8 scope host lo<br />
inet6 ::1/128 scope host<br />
valid_lft forever preferred_lft forever<br />
2: venet0: <BROADCAST,POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN<br />
link/void<br />
inet 127.0.0.1/32 scope host venet0<br />
inet 192.168.35.20/32 brd 192.168.35.20 scope global venet0:0<br />
[root@centos7 ~]#