如何為需要該特定 IP 的應用程式欺騙 IP?

如何為需要該特定 IP 的應用程式欺騙 IP?

一般來說,出現這樣的問題,有一個系統RHEL 6.4 Server,有一對網路介面透過bonding合而為一。本系統IP位址:10.7.7.1。接下來在系統上運行需要連接到10.7.7.2連接埠 3306 上的MySQL 伺服器的應用程式。事實上,MySQL 運行在10.7.7.3.應用程式中的連接設定是硬編碼的,因此無法變更。可以透過這樣​​的方式聽到iptables做地址翻譯。如何使得當應用程式嘗試10.7.7.2:3306 iptables被攔截並向 發送請求10.7.7.3:3306,並收到回應,並將其提供給應用程式?

答案1

這可以透過 iptables 中的 NAT 規則來完成。

如果 MySQL 伺服器位於同一主機上,請使用 REDIRECT 規則。將所有到連接埠 3306 而非 10.7.7.3 的連線重新導向到所需的位址。

如果 MySQL 伺服器不在同一台主機上,請使用 DNAT 規則。

答案2

假如說

  • .1、.2 和 .3 是不同的機器
  • 您無法交換 .2 和 .3 的 IP 位址
  • .2 正在運行 Linux

以下是您需要在 .2 上新增的內容:

-t nat -A PREROUTING  -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3
-t nat -A POSTROUTING -d 10.7.7.3 -p tcp --dport 3306 -j SNAT --to-source      10.7.7.2

然而...

如果您因為某些原因無法在 .2 上建立 iptables 規則和/或您想攔截 .1 上的流量,則您需要在 .1 上執行下列操作:

-t nat -A POSTROUTING -d 10.7.7.2 -p tcp --dport 3306 -j DNAT --to-destination 10.7.7.3

相關內容