如何使用 iptables 而不是路由将来自特定端口上的第二个路由器的数据包发送回路由器

如何使用 iptables 而不是路由将来自特定端口上的第二个路由器的数据包发送回路由器

我有一台 Linux 服务器,它运行一个监听单个 TCP 端口的特定服务。该 Linux 服务器使用 PPP 连接连接到互联网,同时还使用以太网连接充当本地网络的路由器。我在此服务器上运行防火墙,并使用 Shorewall 包对其进行管理。

最近我获得了另一个互联网链接,用作冗余 IP 地址,供我的客户连接和使用该服务。此 ISP 为我提供了一个调制解调器,该调制解调器应连接到我的 LAN 交换机,其 IP 地址为192.168.1.10。我配置了此调制解调器以将服务端口转发到我的服务器,该服务器位于192.168.1.2

问题是用户无法通过新的连接连接到服务器,新调制解调器上的路由配置有限(我无法告诉它执行 SNAT)并且我不知道需要在服务器防火墙上进行什么样的配置。

简单地说,我需要告诉服务器上的防火墙,当数据包来自192.168.1.10端口 1234 时,将回复发送回192.168.1.10,无论目标 IP 地址是什么。

到目前为止,我搜索到的最佳答案是http://www.shorewall.net/MultiISP.html这需要使用服务器路由。

有没有更简单的方法可以做到这一点,最好使用 iptables 和 shorewall?

编辑:

本地用户的 LAN 为192.168.1.0/24。如果有帮助的话,我可以更改新的路由器 IP 地址。

我希望新链接仅充当冗余 IP 地址,我会将其作为别名添加到 DNS,这样当旧 IP 地址出现故障时,客户端可以以循环方式尝试它,从而实现一定程度的冗余和容错。来自本地网络和服务器的传出互联网连接只需通过旧链接,即使出现故障也没关系。

不幸的是,服务器只有两个以太网端口,一个用于旧调制解调器,另一个用于本地网络交换机。因此没有空闲端口,但如果这是唯一的解决方案,我可以添加另一张网卡。

Linux 服务器充当路由器和防火墙。它还为本地网络运行透明的 Squid 代理(如果您指的是代理的话)。

答案1

为了使事情变得简单并避免任何冲突,您需要执行以下操作:

1- 将新路由器的 IP 范围更改为 172.20.1.0/24 2- 在服务器上添加新接口。为其分配路由器范围内的 IP。

Router 172.20.1.1  <----------> Linux Box 172.20.1.2

3-使用 iproute2 创建新的路由表。

On that table set the default gateway to 172.20.1.1
Use ip rule command to add all packets returning from new internet connection
to the new created table.

假设表名是NewLink ip rule add from 172.20.1.2 table NewLink

使用 ip rule add 将用户组添加到新的连接:

ip rule add from 192.168.1.0/28 table NewLink
[just a group of ips to allow them to use the new link]

4- 使用源 natting 而不是您最有可能使用的 MASQUARGE。将每组 IP 地址 natting 到其指定的互联网连接。

您需要按照我上面提到的步骤进行操作,并搜索更多信息,我花了一个多星期才让它发挥作用,但现在只需要 5 分钟就可以建立一个新的提供商。

相关内容