如上图网络拓扑所示,将建立两条不同的路径使其接入网络,下面将使用ip命令在三层交换机中建立起两条路径,路由来自不同网络的数据包。
在三层交换机中建立两条WAN连接,分别标识为WAN1、WAN2。WAN1使用的虚拟网络接口eth0.3,配以静态IP地址172.16.100.254,经过网关172.16.100.253接入互联网,内网的网络接口为br0,使用IP地址172.16.1.254, WAN2链接中外网的网络接口为eth0.4,使用IP地址192.168.100.254,经过网关192.168.100.253接入互联网,对应的内网的网络接口br1,使用IP地址192.168.1.254。 现在我们要实现两点:
(1) 内网172.16.1.0/24网段主机的数据包通过eth0.3接口路由到外网;
(2) 内网192.168.1.0/24网段主机的数据包通过eth0.4接口路由到外网。
在linux的链接中,首先匹配策略路由的方式,其次是匹配静态路由,也就是我们的route命令显示的结果。所以我们通过配置策略路由的方式,经br0接收的包通过策略路由经eth0.3转发出去,经br1接收的包经过策略路由经eth0.4转发出去。
一.配置路由
1) 在rt_table 里面建立新的路由表wan1和wan2,表的编号分别为100和101
#echo "100 wan1" >> /etc/iproute/rt_tables
#echo "101 wan2" >>/etc/iproute/rt_tables
2) 为wan1表制定默认路由为eth0.3,网关172.16.100.253,为wan2表制定默认路由为eth0.4网关192.168.100.253
#ip route add default via 172.16.100.253 table wan1#ip route add default via 192.168.100.253 table wan2
3) 分别配置网段路由到高级路由表
#ip route add 172.16.1.254/32 dev br0 table wan1#ip route add 172.16.100.254/32 dev eth0.3 table wan1
#ip route add 192.168.1.254/32 dev br1 table wan2
#ip route add 192.168.100.254/32 dev eth0.4 table wan2
4) 强制LAN口的包查询每个WAN连接的高级路由表
#ip rule add from 172.16.1.0/24 iif br0 table wan1#ip rule add from 192.168.1.0/24 iif br1table wan2
5) 制定详细匹配,为每个WAN口上网配置策略路由
#ip rule add from 172.16.100.254/32 pref 100 tablewan1#ip rule add from 192.168.100.254/32 pref 100 tablewan2
匹配路由规则时,将按优先级pref值从低到高匹配,直到找到匹配的规则。如果pref值不指定,则将在已有规则最小序号前插入。
二.配置NAT
经路由之后,LAN口的使用NAT进行伪装,在之前的网段NAT后面增加下面,匹配所有的网段。
#iptables -t nat -A POSTROUTING -o eth0.3 -jMASQUERADE#iptables -t nat -A POSTROUTING -o eth0.4 -jMASQUERADE