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

est*_*tol 19 networking nat iptables arch-linux

昨天我买了一台新电脑作为我的家庭服务器,HP Proliant 微服务器。在其上安装 Arch Linux,内核版本为 3.2.12。

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

Ping: sendmsg: operation not permitted
Run Code Online (Sandbox Code Playgroud)

如果我完全删除 iptables,网络就可以了,但是我需要将 Internet 连接共享到本地网络。

eth0 - 集成在主板上的 WAN 网卡(Broadcom NetXtreme BCM5723)。

eth1 - pci-express 插槽中的 LAN NIC(英特尔 82574L 千兆网络)

由于它在没有iptables的情况下工作(服务器可以访问互联网,并且我可以从内部网络使用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,效果很好。

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

Kha*_*led 32

错误信息:

Ping: sendmsg: operation not permitted
Run Code Online (Sandbox Code Playgroud)

表示您的服务器不允许发送 ICMP 数据包。您需要允许您的服务器通过一个或多个配置的接口发送流量。您可以通过以下方式执行此操作:

  1. OUTPUT链策略设置ACCEPT为允许来自您的盒子的所有传出流量:

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

这不仅适用于链条,而且适用于所有链条OUTPUTINPUT链控制您的盒子接收到的流量。FORWARD链处理通过盒子转发的流量。

  • @JosephAstrahan:`sudo iptables -P 输出接受` (4认同)

Dav*_*žan 7

对我来说,在 Debian 9 上,重新安装很有帮助ping

apt-get install --reinstall iputils-ping 
Run Code Online (Sandbox Code Playgroud)