menu

开发进行时...

crazy coder

Avatar

双线双网双IP路由配置总结

有多网口接入的好处,可以解决网络的吞能力,解决网通电信教育网等互联的瓶颈 等问题。

在两个网卡上分别配置对应线路的IP...并不意味着正确的实现双网的接入。

整个网络上的数据包转发都是由路由表决定的。
路由表是由一系列静态路由与动态路由的数据组成。

Linux提供了一个"Advanced IP routing and network device configuration tools"路由套件iproute2
iproute2的常见命令ip,ro,ls (ip就是ip命令,ro就是route,ls 是list)
#ip ro ls 与route -n显示的差不多
#增加默认路由ip ro add default via 192.168.0.1 table 200
(具体的路由表在/etc/iproute2/rt_tables中)
#ip ro ls table 200 显示该路由表中的路由
(注:不能在同一个路由表中有相同的网关)

解决“从哪个接口来,就从哪个接口出”的问题,这解决从外访问的问题,(感觉不需要设置,默认也能达到效果)
ip route flush table net2
ip route add default via 192.168.0.1 dev eth0 src 192.168.0.10 table net2
ip rule add from 192.168.0.10 table net2

ip route flush table net3
ip route add default via 192.168.1.1 dev eth1 src 192.168.1.10 table net3
ip rule add from 192.168.1.10 table net3

设置默认网关
route add default gw 192.168.1.1

实例配置的脚本

IP0=
GW0=
NET0=
DEV0=eth0

IP1=
GW1=
NET1=
DEV1=eth1

if ! [ grep "220 cernet" /etc/iproute2/rt_tables > /dev/null 2>&1 ]; then echo "220 cernet" >> /etc/iproute2/rt_tables ; fi
if ! [ grep "230 ctc" /etc/iproute2/rt_tables > /dev/null 2>&1 ]; then echo "230 ctc" >> /etc/iproute2/rt_tables ; fi

ip route flush table cernet
ip route add default via ${GW0} dev ${DEV0} src ${IP0} table cernet
ip rule add from ${IP0} table cernet

ip route flush table ctc
ip route add default via ${GW1} dev ${DEV1} src ${IP1} table ctc
ip rule add from ${IP1} table ctc

以上解决了进来的路由,大多服务器是提供服务的,所以有了从哪里来回哪里去就解决了所有的问题。
如果是邮件服务器或自己上网,需要主动向外请求这样还不够,因为出去的包只会走默认路由,
目标就是: 请求的目的主机在电信让它走电信的接入线路、请求的教育网主机让它走教育网线路、请求的主机在网通让它走网通的接入线路....

似乎没有更好的办法,只有根据IP段预先设置好路由规则

实现这个目标就很简单了,找到各运营商的IP段
教育网的就简单了https://www.nic.edu.cn/RS/ipstat/cernet-ipv4.txt 上面全有了...
(不能wget,只能自己拷贝,郁闷)

变成命令行加在上面的脚本中:
(以vim内可以参考命令%s/^/ip rule add to /g与:%s/$/ table cernet/g)
ip rule add to 58.154.0.0/15 table cernet
ip rule add to 58.192.0.0/12 table cernet
....

将默认路由设为电信网接入的网关,这样解决了出去的路由。

同样的办法可以解决三网接入的问题。


除非用BGP协议,否则没办法,只能手工维护策略路由。

嗯,了解BGP...