我有一个服务设置,在成功登录(Couchbase)后重定向,但它传输到的IP是本地IP,连接的客户端无法访问。
我如何设置 iptables 以便我可以将客户端本身生成的流量路由到另一个端口?
- 客户端连接到server1
- 服务器 1 向客户端发送要连接的 IP(该 IP 是服务器 1 的本地 IP,而不是客户端的本地 IP)
- 客户端被重定向至 192.168.2.53:11210(无法访问)
- IPTables 将发送到 192.168.2.53:11210 的所有流量路由到 outside_ip:11210
HTTP 服务仅返回要连接的 IP,从而“重定向”客户端,但不是通过 HTTP 重定向。
我对 IPTables 不太熟悉,所以我并不急于尝试它/弄乱它并丢失我的 ssh 连接,我已经看到了一些示例,但它们似乎都不起作用或完全按照我想要的方式做。
答案1
如果您无法让 web 服务向客户端提供有效的可路由公共 IP 地址,那么它就永远不会工作,除非您编写客户端来忽略 web 服务提供的 IP 地址。 iptables
无法修复此问题(如果不编写类似的协议检查模块ip_masq_ftp
,然后假设您不使用 SSL)。
如果您可以让 Web 服务提供可以访问互联网和私有网络的计算机的正确公共 IP,那么最简单的事情就是rinetd
在该机器上运行、在互联网端监听并将连接转发到私有端,但为了使其正常工作,同一 IP 的端口必须一致(您可以重定向多个端口,但传入端口 11210 始终必须转到 192.168.2.53)(您可以重定向到不同的端口,因此如果您有 ...53:11210 和 ...54:11210,则可以使用:11211 重定向到其中一个,但 Web 服务需要知道这一点)。