Linux多网卡配置高级策略路由---"原路来原路回!"
程序员文章站
2024-02-14 16:43:34
...
场景:多运营商线路,或者多出口等
实际案例:一台香港linux服务器上面有三条专线,分别去往深圳、上海、北京,需要实现大陆客户从不同地点访问香港linux服务器,数据回程时分别会走对应专线返回。
Linux服务器信息:CentOS6.9,有三个专线网卡分别去往深圳,上海,北京
网卡名称 | IP | 网关 | 备注 |
---|---|---|---|
eth3 | 172.16.2.254 | 172.16.2.1 | 上海专线 |
eth2 | 172.16.1.254 | 172.16.1.1 | 深圳专线 |
eth4 | 172.16.3.254 | 172.16.3.1 | 北京专线 |
下面我们来看如何实现这样的需求(网卡IP配置这边就不讲):
注:在 Linux 下一台多网卡服务器不能同时配置两个及以上的默认网关,因为默认网关(Default Gateway)只能配置一个。
1. 先增加三个路由表
echo "200 sh" >> /etc/iproute2/rt_tables
echo "201 sz" >> /etc/iproute2/rt_tables
echo "202 bj" >> /etc/iproute2/rt_tables
2. 给每个路由表添加默认路由和直连路由
ip route add default via 172.16.2.1 dev eth3 table sh
ip route add 172.16.2.0/24 dev eth3 src 172.16.2.254 table sh
ip route add default via 172.16.1.1 dev eth2 table sz
ip route add 172.16.1.0/24 dev eth2 src 172.16.1.254 table sz
ip route add default via 172.16.3.1 dev eth4 table bj
ip route add 172.16.3.0/24 dev eth4 src 172.16.3.254 table bj
3. 配置策略路由,使数据原路返回
ip rule add from 172.16.1.254 table sh
ip rule add from 172.16.2.254 table sz
ip rule add from 172.16.3.254 table bj
这样,linux服务器即使不需要默认路由也能正常提供服务。