iptables 将传入 IP 路由到另一个目标 IP 问题

RCG*_*RCG 8 networking routing iptables

我有一个测试设置:

  • 服务器1:1.1.1.1
  • 服务器2:2.2.2.2
  • 客户端:3.3.3.3

我正在尝试让客户端 IP 3.3.3.3 从 1.1.1.1 服务器执行 HTTP 请求。但是我希望 1.1.1.1 服务器将此请求传递到真正的 HTTPD 服务器 2.2.2.2。

我希望 2.2.2.2 使用 HTTP 响应直接与客户端 3.3.3.3 对话。

但是我想我需要 1.1.1.1 来接受 HTTP 请求,然后让它将请求转发到 2.2.2.2 并让 2.2.2.2 响应然后转发回 3.3.3.3 并解决这个问题?否则客户端 3.3.3.3 将从 2.2.2.2 得到响应,并且不知道为什么 2.2.2.2 响应而不是 1.1.1.1 并忽略它?

无论哪种方式,这都是我iptables在 1.1.1.1 上尝试过的:

iptables -t nat -A POSTROUTING -o venet0:0 -j SNAT --to-source 2.2.2.2
iptables -t nat -A PREROUTING -i venet0:0 -j DNAT --to-destination 2.2.2.2
iptables -t nat -A PREROUTING -d 3.3.3.3 -j DNAT --to-destination 2.2.2.2
iptables -t nat -A POSTROUTING -s 2.2.2.2 -j SNAT --to-source 3.3.3.3
Run Code Online (Sandbox Code Playgroud)

这似乎没有改变。

RCG*_*RCG 8

我已经想通了:

iptables -t nat -A PREROUTING -d 3.3.3.3 -j DNAT --to-destination 2.2.2.2
iptables -t nat -A POSTROUTING -s 2.2.2.2 -j SNAT --to-source 3.3.3.3
Run Code Online (Sandbox Code Playgroud)

  • 以上 2 行是否足以满足您的要求?你只更改了 1.1.1.1 中的 iptables 条目?为此需要启用哪些配置? (2认同)