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
在我以前的服务器上,我使用 revsys 指南来设置 nat,效果很好。
有没有人经历过这样的事情?我究竟做错了什么?
Kha*_*led 32
错误信息:
Ping: sendmsg: operation not permitted
Run Code Online (Sandbox Code Playgroud)
表示您的服务器不允许发送 ICMP 数据包。您需要允许您的服务器通过一个或多个配置的接口发送流量。您可以通过以下方式执行此操作:
将OUTPUT链策略设置ACCEPT为允许来自您的盒子的所有传出流量:
sudo iptables -P OUTPUT ACCEPT
Run Code Online (Sandbox Code Playgroud)OUTPUT链策略设置为DROP,然后有选择地允许您需要的流量类型。这不仅适用于链条,而且适用于所有链条OUTPUT。INPUT链控制您的盒子接收到的流量。FORWARD链处理通过盒子转发的流量。
对我来说,在 Debian 9 上,重新安装很有帮助ping:
apt-get install --reinstall iputils-ping
Run Code Online (Sandbox Code Playgroud)