あめも

初心者インフラエンジニアの仕事や日常の事をそれとなく書いていくブログです

CentOS7 systemd daemon-reload 実行時にIPv6のメッセージが出る

Ansibleを実行した時、systemd moduleが実行される時に /var/log/messages で下記エラーが出ていた

Mar 28 13:28:29 hoge systemd: Reloading.
Mar 28 13:28:29 hoge systemd: Binding to IPv6 address not available since kernel does not support IPv6.
Mar 28 13:28:29 hoge systemd: [/usr/lib/systemd/system/rpcbind.socket:6] Failed to parse address value, ignoring: [::]:111
Ansible実行時にエラーが出た理由

エラーが出るタイミングは、systemd moduleが実行された時
その際、systemd daemon-reloadが実行されている模様

手動でsystemd daemon-reloadを実行すると、/var/log/messagesに同じエラーログが出力された

メッセージを出していたサービス

rpcbind.socketだった

[root@hoge ~]# systemctl status rpcbind.socket
● rpcbind.socket - RPCbind Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; enabled; vendor preset: enabled)
   Active: active (listening) since Wed 2017-08-16 13:48:27 JST; 7 months 11 days ago
   Listen: /var/run/rpcbind.sock (Stream)
           0.0.0.0:111 (Stream)

Mar 28 13:28:29 hoge systemd[1]: [/usr/lib/systemd/system/rpcbind.socket:6] Failed to parse address value,...:]:111
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Warning: rpcbind.socket changed on disk. Run 'systemctl daemon-reload' to reload units.
Hint: Some lines were ellipsized, use -l to show in full.
原因

kernelの設定でIPv6を無効化していた為

[root@hoge ~]# sysctl -a | grep disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
net.ipv6.conf.eth1.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

kernelのIPv6を有効化するか、rpcbind.socketでIPv6設定をコメントアウトする事でエラーが出なくなりそう

対応

/usr/lib/systemd/system/rpcbind.socket のIPv6設定をコメントアウト

[Socket]
ListenStream=/var/run/rpcbind.sock
#ListenStream=[::]:111
ListenStream=0.0.0.0:111
BindIPv6Only=ipv6-only

設定変更後はsystemd daemon-reloadを実行する

[root@hoge ~]# systemctl daemon-reload

実行後に、/var/log/messages にエラーが出なければOK