UOS系统在对外ping一个IP地址时,出现“ping sendmsg 不允许的操作”错误的解决思路
UOS系统在对外ping一个IP地址时,出现“ping sendmsg 不允许的操作”错误的解决思路
应用场景
硬件/整机信息:所有版本和整机均可能会出现
CPU架构:所有CPU均可能出现
OS版本信息:所有
协作人:许川、曹庆华
问题现象
UOS系统在对外ping一个IP地址时,出现“ping sendmsg 不允许的操作”报错,且网络时断时续,如下图所示:
问题分析
一般情况下,出现此报错后,可以从以下两个方面进行排查:
- 查看Linux内核中连接追踪模块是否超过了nf_conntrack_max的数值;
- 检查UOS系统中是否安装有诸如奇安信等安全软件。
解决方案
- 针对于nf_conntrack_max解决方案
1、首先检查系统是加载了nf_conntrack模块,如果没有加载,则排除是由nf_conntrack模块引起,具体操作为,输入“lsmod | grep conntrack
”命令,查看是否能打印出对应模块,如果模块被加载则如下图所示,没有加载则不会有任何结果:
2、输入命令“sysctl net.netfilter.nf_conntrack_count
”查看当前连接追踪数,然后输入“sysctl net.netfilter.nf_conntrack_max
”查看允许最大连接追踪数,如果超出了最大连接追踪数,则可以考虑加大这个限制,不过需要注意的是,nf_conntrack_max不能无限制的加大,需要结合系统实际的运行内存来决定。
3、以将nf_conntrack_max修改为262114为例,永久加大nf_conntrack_max的方法为,在/etc/systctl.conf
文件中,添加“net.nf_conntrack_max=262114
”,然后保存退出,最后输入命令“sysctl -p
”即可生效。
4、需要注意的是,UOS系统默认并没有加载nf_conntrack模块,如果要加载该模块则输入“modprobe ip_conntrack
”命令,但如果并非特殊需要,不建议加载此模块。
- 针对于奇安信等安全软件解决方案
已知在项目侧已经遇到该问题,即使系统并未加载ip_conntrack模块,ping一个IP地址时仍旧会报错,此时需要检查系统是否运行有安全软件,如果有安全软件,将安全软件卸载后进行测试,注意是卸载而非退出。