![iptables:如何在没有服务器的情况下重定向/转发流量?](https://linux22.com/image/593579/iptables%EF%BC%9A%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E9%87%8D%E5%AE%9A%E5%90%91%2F%E8%BD%AC%E5%8F%91%E6%B5%81%E9%87%8F%EF%BC%9F.png)
我现在整天都在研究 iptables,以使我的规则发挥作用,但有一个问题……我重定向的所有流量都会通过我的服务器,然后再通过我的服务器返回。我们谈论的是高带宽。所以我希望有一个选项可以将用户重定向到外部全局 IP,这样它就可以直接与外部 IP 和用户 IP 通信。
我现在做的是:
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to-destination 11.111.11.111:25
iptables -t nat -A POSTROUTING -j MASQUERADE
*这只是一个例子,真正的项目不是端口 25,而是其他程序(我们正在研究......)
但现在所有流量都像这样:用户>我的服务器>外部服务器>我的服务器>用户
但我希望得到这样的结果:User>MyServer>ExternalServer>User
类似于 CNAME 或 htacces 重定向。这样的事情可能吗?
答案1
我思考您需要 xinetd 重定向,而不是 iptables 重定向(我从来不需要在愤怒中这样做)。尝试以下操作:
#/etc/xinetd.d/redirect25 服务重定向25 { 端口 = 25 类型 = 未列出 禁用 = 否 socket_type = 流 等待 = 不 用户 = root 重定向 = 11.111.11.111 25 }
然后重新启动 xinetd。由于这是邮件端口,您可能需要考虑中继问题。
答案2
你可能需要使用类似Linux 虚拟服务器与LVS/TUN或者远程监控/灾难恢复方法。这些方法在负载均衡器上创建虚拟 IP,然后通过隧道或直接将传入数据包路由到后端服务器,同时保留原始源 IP 和目标 IP(与 NAT 不同)。然后后端服务器可以将响应数据包直接路由到客户端,而不是通过负载均衡器。
我认为仅靠 iptables 无法做到这一点。