最近一直都在折腾这方面的东西,没办法,有需求;所以这几篇博文都系真实案例;全部测试通过;这么做的目地也是和之前的一样;节省成本,节省无限制啊;

这次的在上次需求的基础上建设的;这里演示的话进行了精剪;

需求就是;国内一台机器(其实真实是多台)2块网卡:eth0(网通cnc)eth1(电信tel)还有一条隧道(ip隧道)看过我前面的博文的朋友知道,这条隧道连接的是海外的一台机器;

拓扑见下:

vpn之ip隧道应用策略路由实现走向分流_ip隧道

实现目地:目的地是网通的话就从网通网卡出去,目的地是海外的话就去往隧道;其他的话都从电信网卡出去;

路由匹配顺序:网通路由(cnc)>>>>>海外路由(ipip)>>>>其他路由<默认路由>(tel)

ip分配情况(老规矩,后面两位我就隐藏了,见谅)

ServerA:eth0:58.247.A.A   gw:58.247.a.a  (网通链路)

        eth1:180.153.B.B  gw:180.153.b.b (电信链路)

        ethn:10.0.0.1                     (ip隧道)

ServerB: eth0:60.251.C.C   gw:60.251.c.c   (海外链路)

        ethn:10.0.0.2                     (ip隧道)

下面开始操作了:

Server A:

本机你会发现有两条默认路由的;

route -n 查看即可

安装pptpd服务;实现正常拨号;

yum install pptpd
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -o eth1 -j MASQUERADE

添加路由表

vim /etc/iproute2/rt_tables
240 cnc
250 ipip
260 tel

配置隧道:

ip tunnel add ethn mode ipip local 180.153.B.B remote 60.251.C.C
ifconfig ethn 10.0.0.1
route add -host 10.0.0.2 dev ethn
echo 1 > /proc/sys/net/ipv4/ip_forward

配置电信默认路由添加到260表中:

ip route add 0/0 via 180.153.b.b  dev eth1 table 260


配置网通默认路由添加到240表中:

ip route add 0/0 via 58.247.a.a  dev eth0 table 240

配置海外默认路由添加到250表中:

ip route add 0/0 via 10.0.0.2 dev ethn table 250

在table 250中添加规则:如

ip rule add to 103.4.172.0/22 table 250
......继续;此处省略~

在table 240中添加规则:如

ip rule add to 58.16.0.0/16 table 240
......继续;此处省略~

Server B:

配置隧道:

ip tunnel add ethn mode ipip local 60.251.C.C remote 180.153.B.B
ifconfig ethn 10.0.0.2
route add -host 10.0.0.1 dev ethn
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -o eth0 -j MASQUERADE

这样你去测试的时候;针对去往不同的目地地实现了分流;

可以将myip.cn或123cha.com解析的网段添加进去进行测试;