Debian
debian - iptables 不適用於允許一個特定埠
我有三個虛擬機:A、B 和 C,它們都在 debian 上執行。我已經設置 C 來路由 A 和 B 之間的流量。C 也有兩個介面:
enp0s3
和enp0s8
,不確定在這種情況下它是否重要。路由工作正常。但是現在我想在路由器上設置 iptables 來阻止所有傳入的請求,除了那些發送到 8080 埠的請求。
這是我所做的:
iptables -P FORWARD DROP iptables -A FORWARD -p tcp --dport 8080 -j ACCEPT
但是,如果我嘗試使用 A 從 A 連接到 B 上的任何埠(包括 8080)
nc {host} {port}
,我的輸入不會從 A 轉換為 B。我也嘗試過,反之亦然:
iptables -P FORWARD ACCEPT iptables -A FORWARD -p tcp ! --dport 8080 -j DROP
但它也不起作用。
當我檢查輸出時,
iptables -L -v
有一些數據包被FORWARD
鏈中接受。
iptables -A FORWARD -p tcp --dport 8080 -j ACCEPT
此規則將允許轉發到埠 8080 的所有數據包但是來自埠 8080 的數據包(對 SYN 數據包的響應)不會被轉發,除非發出請求的埠也是埠 8080。正如在一條評論中提到的,這很可能不是這種情況!
你需要第二條規則:
iptables -A FORWARD -p tcp --sport 8080 -j ACCEPT
此規則允許所有來自埠 8080 的數據包轉發
作為建議,如果您在設置中需要更高的安全性,我會將機器的 IP 地址添加到規則中,因為有了這兩條規則,只要他的源埠是 8080,某人就可以與不同的埠通信。
所以我的最終規則是:
iptables -A FORWARD -p tcp --sport 8080 -s IPOFMACHINEA -j ACCEPT iptables -A FORWARD -p tcp --dport 8080 -d IPOFMACHINEA -j ACCEPT iptables -A FORWARD -p tcp --sport 8080 -s IPOFMACHINEB -j ACCEPT iptables -A FORWARD -p tcp --dport 8080 -d IPOFMACHINEB -j ACCEPT
由於您沒有提供 ips,因此您將不得不替換它們。