linux 路由问题

linux 路由问题

我有 2 个 linksys 路由器,上面运行着 linux 并使用 tomato 固件。两台路由器都插上了互联网线路,但只有 1 台充当 DHCP 服务器(路由器 1)。我要实现的是,所有从内部 IP 发往路由器 1 并想要访问互联网的数据包都将通过该互联网线路但从 1 个特定端口发出,如果路由器 1 检测到来自特定源端口的数据包(例如:http 端口:80),它会将该数据包重定向到路由器 2,然后从那里发出到互联网。我找到了一些文档,它们给出了解决方案,我需要一台带有 2 个以太网卡的 linux 服务器,然后我们在该服务器上插上两条互联网线路并在其上进行路由,但我不想这样做,因为我的老板不想为维护该服务器增加额外的工作,此外,他说路由器本身已经是 linux 了,所以为什么...我倾向于同意他的观点。可以做到吗,或者必须有一个单独的 linux 服务器充当路由器?提前感谢大家,真诚期待您的回复。我是 Linux 网络新手,这似乎是我能力范围之外的问题 :(

谨致问候!Duc To

答案1

如果不知道固件或其他限制,很难给出好的答案。使用完整的 Linux 系统当然可以做到这一点,但这是一个复杂的路由设置,可能会有有趣的错误。如果可能的话,我建议避免这种设置。

只要你的内核支持策略路由,你就应该能够或多或少地遵循说明这里. 可以找到更完整的说明这里

请注意,您必须重新配置辅助网关以不使用 DHCP。让路由器运行 DHCP 迟早会给您带来麻烦。

答案2

这是一个复杂的设置。您可能会发现将两个 Internet 连接移至一个路由器并为第二个 Internet 连接添加额外的 VLAN 和区域更简单。

我会查看文档多个ISPS岸墙站点。我相信 Tomato 应该运行 Shorewall-lite(这将需要另一台能够构建规则的服务器。如果不是,我相信文档解释了正在设置的规则。您可能能够使用两个路由器运行拆分连接,使用第二个路由器的网关地址作为第二个路由目的地。如果我理解您的要求,我认为您只需要配置路由器 1。

答案3

根据您的描述(源端口为 80 的数据包几乎总是响应 HTTP 查询),听起来好像您有一个 HTTP 服务器,您希望它出现在路由器 2 后面。换句话说,数据包通过路由器 2(或可能是路由器 1,但那是一个错误)进入服务器,服务器将通过路由器 2 进行响应。您希望所有其他 Internet 流量都通过路由器 1。

我的建议是在服务器上做一个小的路由更改:

  • 将服务器的默认路由更改为router2。
  • 为您的内部网络创建一条静态路由以路由到路由器 1。(注意:如果您的服务器位于内部网络内,则可以省略此步骤;IP 堆栈将默认处理此问题)

如果您担心这个问题,那么您只需使用服务器中的一张以太网卡即可完成此操作,假设路由器 1 和路由器 2 都在您的内部网络中具有接口。

我知道您不想在服务器上进行更改,但在那里进行配置比在两个边界路由器上进行配置要简单得多。

相关内容