在 Arch GNU/Linux 上安裝 iptables 後 Ping: sendmsg: operation not allowed 錯誤
昨天我買了一台新電腦作為我的家庭伺服器,一台 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
在我以前的伺服器上,我使用 revsys 指南來設置 nat,就像一個魅力。
以前有人經歷過這樣的事情嗎?我究竟做錯了什麼?
錯誤資訊:
Ping: sendmsg: operation not permitted
表示您的伺服器不允許發送 ICMP 數據包。您需要允許您的伺服器通過一個或多個配置的介面發送流量。您可以通過以下方式做到這一點:
- 將
OUTPUT
鏈策略設置ACCEPT
為允許來自您的盒子的所有傳出流量:sudo iptables -P OUTPUT ACCEPT
- 將
OUTPUT
鏈策略設置為DROP
然後有選擇地允許您需要的流量類型。這適用於所有鏈,而不僅僅是
OUTPUT
鏈。INPUT
鏈控制您的盒子收到的流量。FORWARD
鏈處理通過盒子轉發的流量。