web-dev-qa-db-ja.com

ping:sendmsg:操作は許可されていません(時々)

Haproxyを実行しているUbuntu 14.04では、service haproxy reloadの後で、Haproxyが背後にあるすべてのサーバーを突然停止していると報告します。

少し調べてみると、pingが正しく機能していないことに気付きました。場合によっては、正常にpingできる場合があり、数秒後にエラーping: sendmsg: Operation not permittedが発生します。

また、subdomain.domain.comを解決することもできません。

iptables -Lは適切なルールを表示しません。 iptables --flushは役に立ちません。

何か案は?

root@some-test:~# ping 107.1.1.1

PING 107.1.1.1 (107.1.1.1) 56(84) bytes of data.
64 bytes from 107.1.1.1: icmp_seq=1 ttl=63 time=0.425 ms
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
64 bytes from 107.1.1.1: icmp_seq=6 ttl=63 time=0.390 ms
64 bytes from 107.1.1.1: icmp_seq=7 ttl=63 time=0.533 ms
64 bytes from 107.1.1.1: icmp_seq=8 ttl=63 time=0.357 ms
64 bytes from 107.1.1.1: icmp_seq=9 ttl=63 time=0.343 ms
64 bytes from 107.1.1.1: icmp_seq=10 ttl=63 time=0.380 ms
64 bytes from 107.1.1.1: icmp_seq=11 ttl=63 time=0.398 ms
64 bytes from 107.1.1.1: icmp_seq=12 ttl=63 time=0.423 ms
64 bytes from 107.1.1.1: icmp_seq=13 ttl=63 time=0.293 ms
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
64 bytes from 107.1.1.1: icmp_seq=16 ttl=63 time=0.371 ms
64 bytes from 107.1.1.1: icmp_seq=17 ttl=63 time=0.374 ms
64 bytes from 107.1.1.1: icmp_seq=18 ttl=63 time=0.305 ms
64 bytes from 107.1.1.1: icmp_seq=19 ttl=63 time=0.259 ms
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
64 bytes from 107.1.1.1: icmp_seq=24 ttl=63 time=0.370 ms
64 bytes from 107.1.1.1: icmp_seq=25 ttl=63 time=0.316 ms
64 bytes from 107.1.1.1: icmp_seq=26 ttl=63 time=0.412 ms
64 bytes from 107.1.1.1: icmp_seq=27 ttl=63 time=0.512 ms
64 bytes from 107.1.1.1: icmp_seq=28 ttl=63 time=0.375 ms
64 bytes from 107.1.1.1: icmp_seq=29 ttl=63 time=0.352 ms
64 bytes from 107.1.1.1: icmp_seq=30 ttl=63 time=0.331 ms
64 bytes from 107.1.1.1: icmp_seq=31 ttl=63 time=0.290 ms
64 bytes from 107.1.1.1: icmp_seq=32 ttl=63 time=0.353 ms
64 bytes from 107.1.1.1: icmp_seq=33 ttl=63 time=0.378 ms
64 bytes from 107.1.1.1: icmp_seq=34 ttl=63 time=0.523 ms
64 bytes from 107.1.1.1: icmp_seq=35 ttl=63 time=0.351 ms
64 bytes from 107.1.1.1: icmp_seq=36 ttl=63 time=0.302 ms
64 bytes from 107.1.1.1: icmp_seq=37 ttl=63 time=0.496 ms
64 bytes from 107.1.1.1: icmp_seq=38 ttl=63 time=0.377 ms
64 bytes from 107.1.1.1: icmp_seq=39 ttl=63 time=0.357 ms
64 bytes from 107.1.1.1: icmp_seq=40 ttl=63 time=0.396 ms
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
64 bytes from 107.1.1.1: icmp_seq=52 ttl=63 time=0.372 ms
64 bytes from 107.1.1.1: icmp_seq=53 ttl=63 time=0.412 ms
64 bytes from 107.1.1.1: icmp_seq=54 ttl=63 time=0.321 ms
64 bytes from 107.1.1.1: icmp_seq=55 ttl=63 time=0.366 ms
64 bytes from 107.1.1.1: icmp_seq=56 ttl=63 time=0.379 ms
64 bytes from 107.1.1.1: icmp_seq=57 ttl=63 time=0.395 ms
64 bytes from 107.1.1.1: icmp_seq=58 ttl=63 time=0.488 ms
64 bytes from 107.1.1.1: icmp_seq=59 ttl=63 time=0.513 ms
64 bytes from 107.1.1.1: icmp_seq=60 ttl=63 time=0.435 ms
^C
--- 107.1.1.1 ping statistics ---
60 packets transmitted, 39 received, 35% packet loss, time 59008ms
rtt min/avg/max/mdev = 0.259/0.385/0.533/0.067 ms
5
Nyxynyx

問題は、conntrackの接続数が超過しているためだと思います。古い接続が期限切れになるまで、新しい接続を確立できません。おそらく、dmesgで次のように表示されます。

[1824447.285257] nf_conntrack: table full, dropping packet.
[1824447.522502] nf_conntrack: table full, dropping packet.

あなたが見ることができるconntrackの現在の最大:

undefine@uml:~$ Sudo sysctl net.nf_conntrack_max
net.nf_conntrack_max = 65536

および現在のconntrackカウント:

undefine@uml:~$ sysctl net.netfilter.nf_conntrack_count
net.netfilter.nf_conntrack_count = 157

Conntrack -L(conntrackパッケージのツール)を使用して表示できる現在の接続。そこを見て、それらがどのタイプであるかを確認すると便利です-いくつかは不要である可能性があります。

あなたには3つの可能性があります:

  1. conntrackを使用しないでください(単に-natテーブルを使用せず、nf_conntrackモジュールをアンロードしないでください
  2. アウトゴイント接続のconntrackを無効にします(rawテーブルでは、問題のある接続には-jNOTRACKを使用します
  3. 接続数を次のように増やします。

    undefine @ uml:〜$ Sudo sysctl net.nf_conntrack_max = 512000 net.nf_conntrack_max = 512000または、net.nf_conntrack_max = 512000を/etc/sysctl.confに配置し、sysctl-wを呼び出して再読み込みします。

4
undefine