C 发送到:不允许的操作:netsnmp

C 发送到:不允许的操作:netsnmp,c,linux,snmp,net-snmp,C,Linux,Snmp,Net Snmp,我从网络snmp库中得到一个错误,执行snmp get时显示 发送到的操作不允许出错。 我想知道是什么原因导致sendto(2)系统调用因此错误而失败 请注意,这是一个间歇性错误,因此我认为它不是由防火墙问题引起的,除非防火墙可能会间歇性导致此错误。如果错误代码为EPERM,则您使用的是特权端口作为非根用户 使用端口>1024今天发生在我身上,在我的情况下,问题是由于conntrack表已满 其他症状是系统日志中出现大量“nf\u conntrack:table full,丢包”。如果是这种情

我从网络snmp库中得到一个错误,执行snmp get时显示

发送到的操作不允许出错。
我想知道是什么原因导致
sendto(2)
系统调用因此错误而失败


请注意,这是一个间歇性错误,因此我认为它不是由防火墙问题引起的,除非防火墙可能会间歇性导致此错误。

如果错误代码为EPERM,则您使用的是特权端口作为非根用户


使用端口>1024

今天发生在我身上,在我的情况下,问题是由于conntrack表已满

其他症状是系统日志中出现大量“
nf\u conntrack:table full,丢包”。如果是这种情况,解决方案是将
net.ipv4.netfilter.ip\u conntrack\u max
(又称
net.netfilter.nf\u conntrack\u max
)设置为更高的值,例如:

# sysctl net.ipv4.netfilter.ip_conntrack_max
net.ipv4.netfilter.ip_conntrack_max = 65536
# sysctl net.ipv4.netfilter.ip_conntrack_max=1548576
net.ipv4.netfilter.ip_conntrack_max = 1548576

正如其他人所说,可能还有其他原因,如SELinux或AppArmor政策。YMMV.

SElinux和SMACK都为
socket\u sendmsg
内核安全调用提供了安全挂钩。您是否使用可能禁止此呼叫的SELinux或SMACK策略运行?SELinux会导致间歇性故障还是总是失败?我遇到间歇性故障。如果您的策略允许发送到的套接字,它可能看起来是间歇性的。至少,它会在您的
/var/log/audit/audit.log
/var/log/messages
dmesg(1)
输出中留下AVC消息。。。