是否可以根据规则将 TCP 流量重定向/反弹到外部目的地?

是否可以根据规则将 TCP 流量重定向/反弹到外部目的地?

我甚至不确定这是否可能...此外,请原谅我对这个问题的无知。

我正在寻找的是“某种东西”,它能够让我将到达主机 A 的所有 TCP 流量重定向到主机 B,但基于一些规则。

假设主机 A(中介)从域 X 的主机收到一个请求(比如说一个简单的 HTTP 请求)。在这种情况下,它会让该请求通过,并由主机 A 本身处理。

现在,假设主机 A 从域 Y 的主机收到另一个 HTTP 请求,但这一次,由于某些可自定义的规则,主机 A 将所有流量重定向到主机 B,并且主机 B 能够将其处理为直接来自域 Y 的流量。此时,主机 B 和域 Y 的主机都能够自由通信(当然,主机 A 是这么认为的)。

注意:所有这些主机都在互联网上,而不是在局域网内。

如果解释不够清楚,请告诉我。

答案1

您可以haproxy根据规则设置一个前端和多个后端来使用:

frontend my_front
    mode http
    bind <ip_address>:80
    option forwardfor
    use_backend backend1 if <condition>
    use_backend backend2 if <condition>

backend backend1
    mode http
    server server1 localhost:8000

backend backend2
    mode http
    server server2 remote_server:8000

你可以在 haproxy 网站上阅读更多相关信息:http://haproxy.1wt.eu/

答案2

你所描述的TCP 代理。如果您只想重定向 HTTP 连接,则只需要HTTP 代理

常用的 TCP 代理是rinetd

debian-administration.org

rinetd 软件包包含一个简单的工具,可以配置它来监听机器上的连接,并静默地将它们重定向到新目的地。简而言之,它充当一个易于配置的 TCP 代理。

无论您是在互联网上还是在局域网内都没有关系,只要您可以路由到新的 IP 并且没有防火墙阻碍您。

答案3

也许你可以使用 socat?

socat TCP-LISTEN:80,fork TCP:my.newservername.com:80

答案4

我正在寻找的是“某种东西”,它能够让我将到达主机 A 的所有 TCP 流量重定向到主机 B,但基于一些规则。

iptables 是最好的(尽管有人反对)

假设主机 A(中介)从域 X 的主机收到一个请求(比如说一个简单的 HTTP 请求)。在这种情况下,它会让该请求通过,并由主机 A 本身处理。

为了使这个说法有意义,我猜你的意思是主机 A 在 tcp/80 上运行 http。在互联网和主机 A 之间有另一台主机,并且你将 -s 0.0.0.0/0 路由到主机 A:80。如果你的意思是主机 A 在互联网上,那么不要那样做,直到你很了解 iptables :P

现在,假设主机 A 从域 Y 的主机收到另一个 HTTP 请求,但这一次,由于某些可自定义的规则,主机 A 将所有流量重定向到主机 B,并且主机 B 能够将其处理为直接来自域 Y 的流量。此时,主机 B 和域 Y 的主机都能够自由通信(当然,主机 A 是这么认为的)。

好的,所以现在我认为您不是在谈论第 3/4 层,而是第 7 层重写...在 apache 上尝试 .htacess 或更好的 nginx(还有其他选择吗?)

注意:所有这些主机都在互联网上,而不是在局域网内。

d00d 阅读我上面所说的内容。快速学习 iptables。保护自己。

如果解释不够清楚,请告诉我。

解释不够清楚。先试试 g00gle。

相关内容