如何为需要此特定 IP 的应用程序欺骗 IP?

如何为需要此特定 IP 的应用程序欺骗 IP?

一般来说,出现这样的问题,有一个系统 RHEL 6.4 Server,它有一对网络接口通过绑定合并成一个。该系统 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

相关内容