iptables連接埠映射從兩台PC到一台

iptables連接埠映射從兩台PC到一台

我們有 3 台 PC,其中兩台連接到網路(兩台都有 2 個網路卡)

電腦1:

eth0 - 1.0.0.1 (external IP)
eth1 - 172.16.0.1 (internal IP)

電腦2:

eth0 - 1.0.0.2 (external IP)
eth1 - 172.16.0.2 (internal IP)

電腦3:

eth0 - 172.16.0.3 (internal IP)

現在我們要將連接埠 80 從 PC1 和 PC2 轉送到 PC3。

但有一個問題:iptables 連接埠轉送在 PC1 或 PC2 上運作良好,但僅限於 PC3 將 PC1 或 PC2 作為網關的情況。

IPtables 規則(針對 PC1):

iptables -t nat -A PREROUTING  -p tcp -d 1.0.0.1 --dport 80 -j DNAT --to-destination 172.16.0.3:80
iptables -A FORWARD -p tcp -d 172.16.0.3 --dport 80 -j ACCEPT

因此,問題是:無論 PC3 上的網關設定如何,我們都可以從 PC1 和 PC2 進行連接埠映射嗎?

先感謝您。

答案1

您只是重寫了目的地。

需要將來源位址改為PC1或PC2,這樣回覆封包也可以進行NAT轉換。並且您需要更改目標位址,以便封包將發送至 PC3。重寫來源和目標稱為“雙 NAT”。

您需要在 PREROUTING 鏈中進行 DNAT,在 POSTROUTING 鏈中進行 SNAT。像這樣(對於 PC1):

iptables -t nat -A PREROUTING -p tcp -m tcp -d 1.0.0.1 --dport 80 -j DNAT \
  --to-destination 172.16.0.3:80
iptables -t nat -A POSTROUTING -p tcp -m tcp -d 172.16.0.3 --dport 80 \
   -j SNAT --to-source 172.16.0.1

答案2

為 PC3 提供另一個 IP 位址,並在 PC1 和 PC2 中使用 DNAT 規則到 PC3 的不同 IP 位址。

在PC3上使用「ip規則」按來源IP位址進行路由,如下所示:http://lartc.org/howto/lartc.rpdb.multiple-links.html

相關內容