
我按照本教程進行了連接埠轉送: 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,則它將無法工作。