Ping:sendmsg:在Arch GNU / Linux上安装iptables后出现不允许的操作错误


15

昨天,我有一台新计算机作为家庭服务器,即HP Proliant Microserver。在其上安装了Arch Linux,内核版本为3.2.12。

安装iptables(1.4.12.2-当前版本AFAIK)并将net.ipv4.ip_forward密钥更改为1,并在iptables配置文件中启用转发(并重新引导)后,系统将无法使用其任何网络接口。ping失败

Ping: sendmsg: operation not permitted

如果我完全删除iptables,则可以建立网络,但是我需要共享与本地网络的Internet连接。

eth0的 -广域网网卡集成在主板上(博通的NetXtreme BCM5723)。

eth1 -pci-express插槽中的lan NIC(Intel 82574L千兆网络)

由于它可以在没有iptables的情况下工作(服务器可以访问Internet,并且我可以从内部网络使用ssh登录),因此我认为它与iptables有关。我对iptables没有太多的经验,所以我将它们用作参考(当然彼此分开...):

wiki.archlinux.org/index.php/Simple_stateful_firewall#Setting_up_a_NAT_gateway

revsys.com/writings/quicktips/nat.html

howtoforge.com/nat_iptables

在我以前的服务器上,我使用了revsys指南来设置nat,它的工作原理很像。

有人经历过这样的事情吗?我究竟做错了什么?

Answers:


23

错误信息:

Ping: sendmsg: operation not permitted

表示不允许您的服务器发送ICMP数据包。您需要允许您的服务器通过一个或多个已配置的接口发送流量。您可以通过以下方式做到这一点:

  1. OUTPUT链策略设置ACCEPT为允许您的设备中的所有传出流量:

    sudo iptables -P OUTPUT ACCEPT
    
  2. OUTPUT链策略设置为DROP,然后有选择地允许您需要的流量类型。

这不仅适用于所有链,还适用于所有OUTPUT链。INPUT连锁店控制您的盒子收到的流量。FORWARD链处理通过盒子转发的流量。


Ping只是一个例子,无法发送udp数据包,也无法发送tcp数据包...
estol 2012年

即使如此,同样的想法仍然适用
Khaled 2012年

试了你说的话,结果一样。从旧服务器上获得了规则,这部分起作用。任何客户端都可以查找域名,甚至能够ping通它们,但不能浏览Web。我安装了代理服务器作为变通方法(因为服务器上的连接很好,就像与服务器的连接一样),但是很多服务无法正常工作(Trillian,Skype)。
estol 2012年

将输出链策略设置为接受的命令是什么?
约瑟夫·阿斯特拉罕

4
@JosephAstrahan:sudo iptables -P OUTPUT ACCEPT
哈立德(Khaled)

2

对我来说,在Debian 9上,它只是重新安装就起作用了ping

apt-get install --reinstall iputils-ping 

yum upgrade iputils.x86_64在将“物理”操作系统克隆到VM之后,还可以在CentOS 7(实际上是软件包的升级)上工作-不确定是否重要。
yahol
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.