pingが通らない時

pingができなくなるのは、うっかりファイルシステムをコピーした際にcapabilityを落としてしまったことが原因であることもあるらしい。
rsyncやtarでファイルシステムごとコピーする際は、--xattrsを忘れずに。

pingが通らない。

$ ping str
ping: socket: Address family not supported by protocol
$ ping -4 str
ping: socket: Operation not permitted

capabilityの確認。何も付いてない。

$ sudo getcap /bin/ping

capabilityの付与と確認。

$ sudo setcap cap_net_raw=ep /bin/ping
$ sudo getcap /bin/ping
/bin/ping = cap_net_raw+ep

"cap_net_raw+ep"が付与された。

そしてping通るようになった。
   
$ ping str
PING stretch.h.ccmp.jp (192.168.60.3) 56(84) bytes of data.
64 bytes from stretch.h.ccmp.jp (192.168.60.3): icmp_seq=1 ttl=64 time=6.89 ms
64 bytes from stretch.h.ccmp.jp (192.168.60.3): icmp_seq=2 ttl=64 time=3.100 ms
64 bytes from stretch.h.ccmp.jp (192.168.60.3): icmp_seq=3 ttl=64 time=3.53 ms

以下ちょっと実験する際などに役立つコマンド達 

capability, xattrの確認コマンド、何もない時
   
# getcap /bin/ping
# getfattr -n security.capability /bin/ping
/bin/ping: security.capability: No such attribute
# sudo getfattr -d /bin/ping
# sudo attr -l  /bin/ping

capability, xattrの確認コマンド、権限がちゃんと付与されている時

# getcap /bin/ping
/bin/ping = cap_net_raw+ep

# attr -l  /bin/ping
Attribute "capability" has a 20 byte value for /bin/ping

# getfattr -n security.capability /bin/ping
getfattr: Removing leading '/' from absolute path names
# file: bin/ping
security.capability=0sAQAAAgAgAAAAAAAAAAAAAAAAAAA=

xattrごと削除するコマンド
   
# setfattr -x security.capability /bin/ping

参考文献

Comments