我正在尝试重新路由特定 IP 上的端口。有没有不使用 iptables 的方法可以解决这个问题?
背景
我使用 node.js 和 socket.io 作为实时服务器。为了确保此服务器在所有网络(对端口流量有严格的安全控制)上都可用,它有专用 IP。这意味着它可以使用大多数网络允许的端口 80。
这导致了第二个问题。一些防病毒软件会阻止端口 80 上的此流量。我发现最佳端口是 4000。
我希望客户端有两个连接选项。端口 80 将是默认端口,如果失败,它将使用 4000。然后我需要能够将端口 4000 重新路由回端口 80,以便两个端口使用相同的 node.js 服务器。
我曾尝试使用 iptable 重新路由此端口,但我的 VPS 提供商不支持 iptables 的 NAT 模块。他们也无法更改内核来支持此功能。
还有什么其他可用选项?
答案1
我正在寻找新的 VPS 提供商...听起来你使用的是 Virtuozzo 系统,这绝对不是一个愉快的体验。
我认为你唯一的选择是让某种代理监听你想要的任何端口,并将请求转发到正确的地方。我倾向于使用 haproxy,因为它的简单性和稳健性恰到好处。如果你不需要客户端 IP 地址数据,你可以只在 TCP 连接模式下运行它,否则将其作为 HTTP 代理运行并让它插入适当的标头来记录客户端 IP。你可以运行一个成熟的 HTTP 服务器并将其作为反向代理运行,但这是过度的做法,而且只会导致复杂情况,特别是考虑到你将把它用于非主流的用途。
答案2
您可以使用 xinetd 或 netcat 的重定向功能,甚至可以使用它们的组合。或者,您也可以(但我不推荐这样做)使用 ssh 端口转发功能。
检查上面提到的手册页...
高血压
答案3
您可以尝试 nginx;它比 [x]inetd 和 co 更有效。