iptables:如何在没有服务器的情况下重定向/转发流量?

iptables:如何在没有服务器的情况下重定向/转发流量?

我现在整天都在研究 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 无法做到这一点。

相关内容