首页 > 解决方案 > 您如何通过相同的网关路由返回数据包进行端口转发?

问题描述

描述 我有 HTTP 和 SMTP Linux 服务器以及我在同一个 LAN 上使用 firewalld 创建的两个 Linux 路由器。两个路由器都非常适合作为 Internet 网关。一个非常适合处理将公共传入端口转发到 LAN 中的服务器。我使用移动设备不是在 wifi 上,而是仅在单元上使用,来测试外部流量,加载页面。

但是,我试图让第二个路由器成为冗余备份,并使用不同的公共 IP 指向相同的服务器。问题是每台服务器只能使用来自其默认网关 IP 的端口转发。如果我将 HTTP 服务器网关 IP 切换到另一个路由器,那么它只适用于另一个路由器的端口转发,但不能同时使用两者,尽管将两个网关都添加到具有不同指标的 HTTP 服务器的路由表中。

需要明确的是,它总是从两个路由器接收数据包,并尝试将数据包返回到公共客户端 IP(测试时为移动 IP)。

我可以从 TCPDUMP 中看到它会将数据包返回到启动它的公共 IP。但是,客户端,无论是 Web 浏览器还是 SMTP 客户端,都无法完成会话,例如加载页面。我怀疑它会看到来自具有不同公共 IP 的不同服务器的数据包,并且不会将它们与会话相关联,从而丢弃它们。我必须使用手机在外面进行测试,所以不能使用 TCPDUMP。但是,当我切换网关时的行为是非常有力的证据,这就是正在发生的事情。

问题:我怎样才能让它从它接收端口转发的网关返回数据包,而不是使用它的默认网关,或者以其他方式解决这个问题?

注意:如果我允许所有源在路由器的内部区域伪装,客户端加载页面没有问题。但是,这不是一个选项,因为它是一个巨大的安全问题,因为服务器只能看到路由器的 IP,而不是客户端的公共 IP,将 SMTP 服务器变成开放中继并且无法通过 IP 保护。这有助于确认路由困境。它可以理解地解决它,因为它总是会路由回进行端口转发的路由器,因为无论它使用哪个网关,它都会成为目标 IP。

这也可以通过所有公共 IP 在内部正常工作,可能是因为当源是内部时我允许在内部区域上伪装。

标签: linuxnetworkingtcproutesip

解决方案


推荐阅读