iptables 規則 - 輸入與輸出

iptables 規則 - 輸入與輸出

我是 Linux 和iptables.我的 PC 上有一個 Ubuntu Server 發行版 (12.04),它有 2 個網路介面(eth0eth1)。我還有兩台筆記型電腦,一台已插入eth0,另一台已插入eth1

筆記型電腦1 ipconfig:172.16.221.120 - 255.255.252.0 筆記型電腦2 ipconfig:192.168.222.250 - 255.255.255.0

我想從laptop1成功ping到laptop2。

我必須建立INPUTOUTPUT規則嗎?還是FORWARD也有規定?

我嘗試過這個但沒有成功:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

答案1

您可以使用tcpdump以下命令來了解您的 ping 值:

tcpdump -i eth0 -n icmp
tcpdump -i eth1 -n icmp

此外,僅僅允許伺服器上的 ping 是不夠的;必須對筆記型電腦進行配置,以便它們知道可以透過伺服器(路由)到達另一台筆記型電腦。

也許您的防火牆有一條規則允許作為回應的資料包。如果沒有那麼你還需要

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

無論如何,這是有道理的,因為您可能希望兩台筆記型電腦都能 ping 另一台筆記型電腦。不過,您可以將其限制為 ping 和 pong:

iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-reply -j ACCEPT

最後一個問題是筆記型電腦本身:如果至少其中一台有自己的防火牆,那麼它可能會阻止 ping(通常或由於介面網路外部的來源位址)。

答案2

預設情況下,您不需要任何規則,因為帶有ACCEPT預設策略的 netfilter 鍊是空的。如果您已經新增了規則,那麼要允許 ping 通過,需要將規則新增至FORWARD鏈中。

您還需要將伺服器設定為路由器,並確保每台筆記型電腦都將伺服器作為預設路由(或至少具有另一台筆記型電腦子網路的路由)。

若要啟用路由(IP 轉送),需要設定/proc/sys/net/ipv4/ip_forward1。 Ubuntu 應該有/etc/sysctl.conf可以自動設定專案的地方/proc/sys

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

如果您確實更改了此設置,則需要將更改加載到核心中:

sudo sysctl -p /etc/sysctl.conf

更改將在下次啟動時自動加載,因此您只需在更改後手動執行此命令一次/etc/sysctl.conf

相關內容