只是好奇这是否可行。假设我在具有不同端口的系统上运行一对 irc 服务器(或其他任何东西)- 我想要让某个东西监听单个端口,并根据主机名转发数据包 - 任何到 A.foo.bar 的连接都应转发到一个端口,任何到 B.foo.bar 的连接都应转发到另一个端口。大多数代理似乎都是用于 http 的,嗯,这不是我想到的用例。
我目前正在运行 ubuntu 服务器 9.04 和 10.04,但我愿意切换到另一个免费的操作系统来执行此操作。
答案1
我假设 A.foo.bar 和 B.foo.bar 解析为同一个 IP。
如果没有某种应用层代理,就无法做到这一点。您可以在客户端上使用 HTTP 或 SOCKS 代理连接,这样您就可以根据主机名切换连接。您可能还可以设置一个 IRC MitM,以检测客户端尝试连接的主机名,然后切换到正确的服务器,但我不知道 IRC 协议是否会提供足够的信息来做到这一点。
答案2
您可以使用 SQUID 作为透明代理来实现这一点。它不必是 HTTP。
但实际上,您有两个不同的主机名。您可以将它们指向两个不同的 IP,并相应地对流量进行 DNAT。