挖掘输出中的“ net.c:577:sendmsg()失败:不允许操作”


8

我在CentOS 6.6机器上运行Bind 9.10.2版本。运行dig命令时,我收到了“ net.c:577: sendmsg() failed: Operation not permitted"通知。

dig实用工具给了我一个答案,但在最上方,它显示了此通知。

$dig nkn.in +short   
**net.c:577: sendmsg() failed: Operation not permitted**  
164.100.129.98

System Information :-  
cat /etc/*-release   
CentOS release 6.6 (Final)   
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch    
CentOS release 6.6 (Final)   
CentOS release 6.6 (Final)

有人可以帮我解决为什么收到此通知吗?

IPv6防火墙规则集:

*filter  
:INPUT DROP [0:0]  
:FORWARD DROP [0:0]  
:OUTPUT DROP [0:0]  
:LOGGING - [0:0]  
-A INPUT -i lo -j ACCEPT  
-A INPUT -p icmpv6 -j ACCEPT   
-A INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT  
-A INPUT -p udp -m udp --dport 631 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 631 -j ACCEPT  
-A INPUT -p udp -m udp --dport 53 -j ACCEPT  
-A INPUT -p tcp -m tcp --dport 53 -j ACCEPT  
-A OUTPUT -p icmpv6 --icmpv6-type echo-reply -j ACCEPT  
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
-A INPUT -m udp -p udp --sport 1812 -j ACCEPT  
-A INPUT -m udp -p udp --sport 1813 -j ACCEPT 
-A INPUT -s fe80::/64 -j ACCEPT  
-A INPUT -s ff02::/64 -j ACCEPT  
-A INPUT -j LOG --log-prefix "IP6Tables:INPUT " --log-level 7  
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT  
-A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT  
-A OUTPUT -p icmpv6 -j ACCEPT  
-A OUTPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT  
-A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT  
-A OUTPUT -d 2001:db8::/32 -j ACCEPT  
-A OUTPUT -d fe80::/64 -j ACCEPT  
-A OUTPUT -d ff02::/64 -j ACCEPT  
-A OUTPUT -j LOG --log-prefix "IP6Tables:OUTPUT " --log-level 7  
-A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IP6Tables-Dropped: "  
-A LOGGING -j DROP  
COMMIT  

可能是网络/路由问题。您可以联系您所有的名称服务器/etc/resolv.conf吗?
珍妮D

@JennyD ...它是一个dns服务器。并且具有“ nameserver 127.0.0.1”之类的条目,并且我能够解析域。
Gaurav Kansal 2015年

1
@kayess ...我的防火墙规则集已在问题部分更新。请帮我找出问题所在。
Gaurav Kansal

Answers:


8

在我的arch linux中,它有助于添加ip6tables防火墙规则,以允许从本地主机向本地主机发送本地udp数据包:

ip6tables -I OUTPUT 1 -p udp -s 0000:0000:0000:0000:0000:0000:0000:0001 \ 
-d 0000:0000:0000:0000:0000:0000:0000:0001 -j ACCEPT

2
不知道为什么IP6tables在没有上述规则的情况下会生成警报吗?
Gaurav Kansal

1
@GauravKansal,当您使用诸如之类的功能检索IP地址时getaddrinfo(),会获得一个可能性列表,并且当IPv6启用时,响应中将包括这些内容,并且它们现在就成为第一个。这意味着工具,如dighost将第一IPv6地址尝试,未来将与IPv4的尝试。
亚历克西斯威尔克

1

您是否尝试过使用其他协议到达该目的地?像ICMP吗?

该错误可能表明您无权执行该操作,或者被防火墙规则阻止。


您可以尝试以root身份运行相同的命令。如果失败,则可以尝试暂时禁用iptables防火墙(如果有),然后重试。
2015年

1
@basos禁用防火墙不是一种好的故障排除方法。正确的做法是查看防火墙日志,以查看是否有任何东西被捕获。
珍妮D

我相信这个答案很有用。我已经看到当进程尝试发送UDP数据包时该错误消息正在生成,该消息正被链中的iptables规则阻止OUTPUT
卡巴斯德(Kasperd),2015年

1
@basos ....是的,我也从根本上尝试过..但是同样的问题....禁用ipv6防火墙后,我没有收到dis通知。
Gaurav Kansal,2015年

1
@kansal,您能解释一下“ dis通知”是什么意思吗?
basos
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.