iptables MASQUERADE 僅選定端口

iptables MASQUERADE 僅選定端口

我按照本教程進行了連接埠轉送: http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111

iptables -t nat -A POSTROUTING -j MASQUERADE

但我只想偽裝一個有轉送的端口,因為在同一台伺服器中我有一個網頁伺服器,如果我偽裝所有流量,網路伺服器就會停止工作。

任何想法?

解決方案: iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j SNAT --to-source 2.2.2.1

答案1

如果你真的想做一個MASQUERADE那麼正確的方法是這樣的:

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111
iptables -t nat -A POSTROUTING -d 2.2.2.2 -p tcp --dport 1111 -j MASQUERADE

這種方式MASQUERADE僅適用於經過 DNAT 處理的資料包。

但請注意,這MASQUERADE主要用於動態 IP 情況(例如撥號),如果是靜態 IP,SNAT則應按照您建議的方式使用。從iptables手冊頁:

它只能用於動態分配的 IP(撥號)連線:如果您有靜態 IP 位址,則應該使用 SNAT 目標。偽裝相當於指定到封包發出的介面的 IP 位址的映射,但也會導致介面關閉時忘記連接。當下一次撥號不太可能具有相同的介面位址時(因此任何已建立的連線都會遺失),這是正確的行為。

MASQUERADE但對於和 ,有 1 個警告SNAT:如果 2.2.2.2 是同一台機器上的 VIP,則它將無法工作。

相關內容