我有 2 个 linksys 路由器,上面运行着 linux 并使用 tomato 固件。两台路由器都插上了互联网线路,但只有 1 台充当 DHCP 服务器(路由器 1)。我要实现的是,所有从内部 IP 发往路由器 1 并想要访问互联网的数据包都将通过该互联网线路但从 1 个特定端口发出,如果路由器 1 检测到来自特定源端口的数据包(例如:http 端口:80),它会将该数据包重定向到路由器 2,然后从那里发出到互联网。我找到了一些文档,它们给出了解决方案,我需要一台带有 2 个以太网卡的 linux 服务器,然后我们在该服务器上插上两条互联网线路并在其上进行路由,但我不想这样做,因为我的老板不想为维护该服务器增加额外的工作,此外,他说路由器本身已经是 linux 了,所以为什么...我倾向于同意他的观点。可以做到吗,或者必须有一个单独的 linux 服务器充当路由器?提前感谢大家,真诚期待您的回复。我是 Linux 网络新手,这似乎是我能力范围之外的问题 :(
谨致问候!Duc To
答案1
答案2
答案3
根据您的描述(源端口为 80 的数据包几乎总是响应 HTTP 查询),听起来好像您有一个 HTTP 服务器,您希望它出现在路由器 2 后面。换句话说,数据包通过路由器 2(或可能是路由器 1,但那是一个错误)进入服务器,服务器将通过路由器 2 进行响应。您希望所有其他 Internet 流量都通过路由器 1。
我的建议是在服务器上做一个小的路由更改:
- 将服务器的默认路由更改为router2。
- 为您的内部网络创建一条静态路由以路由到路由器 1。(注意:如果您的服务器位于内部网络内,则可以省略此步骤;IP 堆栈将默认处理此问题)
如果您担心这个问题,那么您只需使用服务器中的一张以太网卡即可完成此操作,假设路由器 1 和路由器 2 都在您的内部网络中具有接口。
我知道您不想在服务器上进行更改,但在那里进行配置比在两个边界路由器上进行配置要简单得多。