我甚至不确定这是否可能...此外,请原谅我对这个问题的无知。
我正在寻找的是“某种东西”,它能够让我将到达主机 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
。
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。