我的ISP给了我一个187.xx224 / 29子网。 网关是187.xx225我有一个6个以太网端口的Ubuntu服务器。 服务器做NAT路由,也作为一个networking服务器。 我的计划是eth1和eth2具有WAN ips:187.xx226和187.xx227。 我想要NATstream量通过187.xx226和networking服务器和其他本地应用程序应该听取187.xx227。 但两者的门户将是相同的,这是187.xx225。 eth0 , eth3和eth4面对3个不同的NATnetworking。 到目前为止,NAT正常工作,但NATnetworking和networking服务器stream量的stream量仅通过eth1转发。 所以我的问题是如何设置路由和defualt网关,以便通过eth2路由networking服务器的stream量。
编辑1:我做eth1,这充当NATnetworking的上行链路的stream量大。 我不希望networking服务器受到影响。 我的用户做繁重的bittorrent下载,并总是访问狡猾的网站。 由于eth1 ip有一个与之相关的域名,我觉得它非常危险。 我打算将连接的域名移动到eth2并给eth1 (NATnetworking的WAN链接)提供匿名IP。 我正在寻找的解决scheme是,如果通过eth2请求Web服务器,应答应该从相同的接口。
如前所述,唯一能够完成你想要做的事情的方法是使用策略路由 – 它将允许你设置多个路由表。 如果没有对路由表进行“虚拟化”,本身就无法真正得到预期的结果,因为在同一个路由表的同一子网上,实际上不能有两个具有IP的NIC。 您一次只能在路由表中拥有一个活动的默认网关,并且会一直尝试从此处指定的接口出去。
这将要求您的Linux内核支持策略路由。 您还需要iproute2实用程序(可能包含在您的发行版中或通过包pipe理安装)。
这里有几个像样的参考资料我发现:
如何自动启动所有的启动取决于正在使用的Linux发行版。
充分披露 – 我从我张贴的第一个链接撕下了大部分。 我在虚拟机中testing了一下,似乎可行,但你的里程可能会有所不同,特别是因为你已经在做NAT和stream量整形。
如果系统上有iproute2实用程序,则可以设置新的路由表。 在/ etc / iproute2 / rt_tables中,您可以添加类似于以下行的内容:
1 servers
这有效地创build了一个名为“servers”的新路由表(至less在这个例子中)。 要设置路由表,您需要定义本地子网路由和默认路由。
ip route add 187.xx224/29 dev eth2 src 187.xx227 table servers ip route add default via 187.xx225 dev eth2 table servers
应该设置它,但是您需要使用ip rule命令将其添加到策略路由:
ip rule add from 187.xx227/32 table servers ip rule add to 187.xx227/32 table servers
一旦你完成了这一切,你应该能够执行IP规则显示,并看到默认路由表规则上方的策略路由规则集。 然后,您可以执行ip规则刷新caching,以确保更改提交。
将eth1上的度量值设置为高于eth2上的度量值。 你可以用ifconfig eth1 metric XX来做到这一点。
目前还不清楚您的目的是为了做到这一点,所以请注意,这将使系统对所有传出stream量使用eth2 而不是 eth1 。 两个接口之间的负载均衡和链路聚合比较复杂。 此外,AFAIK,除非你的应用程序可以绑定到特定的地址,你将无法控制的水平,给定的应用程序将在给定的地址回应。
我想要做你想做的,你需要创build2个独立的路由表。 一个路由表(针对NATstream量)指定到达网关的最优选接口eth1; 您可以使用策略路由来使用第二个路由表来处理源服务器IP的stream量。 第二个表与第一个表相同,但是有一个更喜欢eth2接口的指标到达网关。