1、首先先定义自定义的路由表,不然写路由条目的时候会写到主路由表,那就会导致选路错乱了。
vi /etc/iproute2/rt_tables
100 tab1
2、添加静态默认路由。
ip route add default via 172.16.60.1 dev ppp0 table tab1
这里是在tab1这张路由表里面添加一个默认路由,默认网关出口是ppp0的接口。
查看tab1的路由表命令
ip route list table tab1
3、给用户接入进来的地址打上标记,然后强制打上标记的数据使用tab1这张路由表。
数字3是打标记的名称。
iptables -A PREROUTING -t mangle -s 172.16.131.0/24 -j MARK --set-mark 3
查看上述命令的生效:
iptables -t mangle -L
ip rule add fwmark 3 table tab1
4、使用ip rule来根据源地址来使用路由表。
ip rule add from 172.16.131.0/24 table tab1
查看ip rule,可以查看上面两条命令是否生效
ip rule
0: from all lookup local
32764: from 172.16.131.0/24 lookup tab1
32765: from all fwmark 0x3 lookup tab1
32766: from all lookup main
32767: from all lookup default
5、最后一步,设置iptables转发。
iptables -A POSTROUTING -s 172.16.131.0/24 -o ppp0 -j MASQUERADE
查看上述命令生效
cat /etc/sysconfig/iptables
service iptables restart
6、设置开机启动
chmod +x /etc/rc.d/rc.local
vi /etc/rc.d/rc.local
pon pptpvpn
sleep 10
ip route add default via 172.16.60.1 dev ppp0 table tab1
iptables -A PREROUTING -t mangle -s 172.16.131.0/24 -j MARK --set-mark 3
ip rule add fwmark 3 table tab1
ip rule add from 172.16.131.0/24 table tab1
route add -net 172.16.60.0 netmask 255.255.255.0 gw 172.16.60.1