我发现了类似的问题,但没有提供我正在寻找的答案。
我为有两个不同的互联网连接的学校工作,连接到两个独立的NAT路由器。 在我的networking上,我configuration了一个使用其中一个作为默认网关的Linux服务器。 但是,默认路由器没有直接连接到Internet,我不能在其上configuration端口转发。 另一个是,但是只保留给特定的用途,因为连接要慢得多。
两台路由器在同一个networking中,一台IP地址为192.168.1.1,另一台IP地址为192.168.1.20。 没有直接连接到互联网的默认的是192.168.1.1。
我的问题是,如果默认网关是192.168.1.1,我该如何使linux服务器使用192.168.1.20作为网关来响应连接到特定的端口,当他们来到一个networking接口(一个做NAT ),就像SSH一样,没有将永久路由设置为192.168.1.20?
我提前谢谢你。
您将需要使用连接跟踪和连接标记,多个路由表,并根据mac地址识别“上游”路由器。
如果可以的话,将2台路由器分成不同的networking,即使它们仍然在同一个第2层。这样会更容易一些(见下文)。
基本上,你需要:
throw iptables规则来正确标记每个连接:
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -m mac --mac aa:aa:aa:aa:aa:aa -j CONNMARK --set-mark 100 iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -m mac --mac bb:bb:bb:bb:bb:bb -j CONNMARK --set-mark 200
这是未经testing的; 我总是使用单独的接口,所以我可以使用-i eth1和-i eth2而不是-m mac --mac语法。
完整的信息和所有血淋淋的细节都太大了,但是这个答案在这里是一个很好的指导,一旦你了解了这个问题: http : //www.cyber.com.au/~twb/doc/dual-uplink。文本