我有一个在成功登录后重定向的服务设置(Couchbase),但它传输到的 IP 是本地 IP,正在连接的客户端无法访问该 IP。
我如何设置 iptables 以便我可以将客户端本身生成的流量路由到另一个端口?
- 客户端连接到server1
- Server1 向 Client 发送要连接的 ip(这是 server1 的本地地址,而不是 Client)
- 客户端被重定向到 192.168.2.53:11210(无法访问)
- IPTables 将发送到 192.168.2.53:11210 的所有流量路由到 outside_ip:11210
HTTP 服务仅返回要连接的 IP,从而“重定向”客户端,但不使用 HTTP 重定向。
我对 IPTables 不满意,所以我不想尝试它/弄乱并失去我的 ssh 连接,我看过一些例子,但它们似乎都不起作用或完全符合我的要求。
如果您不能让 web 服务为客户端提供一个有效的可路由公共 IP 地址,它永远不会工作,除非您编写客户端以忽略 web 服务提供的 IP 地址。
iptables
无法修复此问题(无需编写像 的协议检查模块ip_masq_ftp
,然后假设您未使用 SSL)。如果您可以让网络服务为可以访问互联网和专用网络的计算机提供适当的公共 IP,那么最简单的做法就是
rinetd
在该计算机上运行,在互联网端监听并转发连接到专用端,但要使其正常工作,同一 IP 的端口必须保持一致(您可以重定向多个端口,但传入端口 11210 始终必须转到 192.168.2.53)(您可以重定向到不同的端口,所以如果你有 ...53:11210 和 ...54:11210,你可以使用 :11211 重定向到其中之一,但网络服务需要知道这一点)。