ping: sendmsg: Operation not permitted

1225阅读 0评论2010-03-06 greendays
分类:系统运维

[admin@server7 ~]$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.023 ms
ping: sendmsg: Operation not permitted
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.067 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.050 ms
ping: sendmsg: Operation not permitted
64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.046 ms
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.038 ms
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
64 bytes from 127.0.0.1: icmp_seq=15 ttl=64 time=0.036 ms
64 bytes from 127.0.0.1: icmp_seq=16 ttl=64 time=0.035 ms
64 bytes from 127.0.0.1: icmp_seq=17 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=18 ttl=64 time=0.044 ms

--- 127.0.0.1 ping statistics ---
18 packets transmitted, 10 received, 44% packet loss, time 16999ms
rtt min/avg/max/mdev = 0.023/0.042/0.067/0.011 ms

IP_conntrack表示连接跟踪数据库(conntrack database),代表NAT机器跟踪连接的数目,连接跟踪表能容纳多少记录是被一个变量控制的,它可由内核中的ip- sysctl函数设置。每一个跟踪连接表会占用350字节的内核存储空间,时间一长就会把默认的空间填满,那么默认空间是多少?在内存为64MB的机器上是4096,内存为128MB是 8192,内存为256MB是16384,那末就能在/proc/sys/net/ipv4/ip_conntrack_max里查看、设置。
例如:增加到81920,可以用以下命令:
echo “81920″ > /proc/sys/net/ipv4/ip_conntrack_max

那样设置是不会保存的,要重启后保存可以在/etc/sysctl.conf中加:
net.ipv4.ip_conntract_max =81920
按照此方法改变后一切正常,要是再满了可以加大其值.
不过增大表可能造成性能下降。不要设得太大哦。

echo 21600 >/proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

这个参数是连接超时,默认超时时间是5天,也就是432000秒,现在把它改成21600,就是6小时,在6小时后清除掉无效的连接
过几天就出现iptables full是说hash表已经被占满了,里面包括许多超时的连接,这其中基本100%已经是无效的了。
上面这行用来调整超时。
对已经建立的连接无效,已经建立的超时连接会在5天期满以后自动清除掉
所以你最好是在空闲的时候重新启动一下机器。
可以把上面这一句写在/etc/rc.d/rc.local文件里,每次启动自动执行一下

上一篇:VI 光标移动及常用编辑命令
下一篇:ping: sendmsg: Operation not permitted