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