Networking

在 Arch GNU/Linux 上安裝 iptables 後 Ping: sendmsg: operation not allowed 錯誤

  • November 13, 2020

昨天我買了一台新電腦作為我的家庭伺服器,一台 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 - 集成在主機板上的 WAN NIC (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,就像一個魅力。

以前有人經歷過這樣的事情嗎?我究竟做錯了什麼?

錯誤資訊:

Ping: sendmsg: operation not permitted

表示您的伺服器不允許發送 ICMP 數據包。您需要允許您的伺服器通過一個或多個配置的介面發送流量。您可以通過以下方式做到這一點:

  1. OUTPUT鏈策略設置ACCEPT為允許來自您的盒子的所有傳出流量:
sudo iptables -P OUTPUT ACCEPT
  1. OUTPUT鏈策略設置為DROP然後有選擇地允許您需要的流量類型。

這適用於所有鏈,而不僅僅是OUTPUT鏈。INPUT鏈控制您的盒子收到的流量。FORWARD鏈處理通過盒子轉發的流量。

引用自:https://serverfault.com/questions/372975