proxmox/openvzでCentOS7のコンテナを作ったけど通信ができない

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 ~]#

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください