centos网关共享vpn

/ 0评 / 14

centos网关连接VPN后,局域网内一台机器需要走vpn。通过设置策略路由表达到需求

添加一条路由表

Linux 中支持 256 张路由表,编号为 0 到 255,可直接使用编号操作,也可使用编号的别名操作,编号和其别名的对应关系在 /etc/iproute2/rt_tables 文件中。
默认有 local,main,default 三个路由表,这三个路由表的名称命名就来自 /etc/iproute2/rt_tables

cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep

建立两条路由表

echo "101 hulue" >> /etc/iproute2/rt_tables
echo "102 vpn" >> /etc/iproute2/rt_tables

建立路由

ip route add default dev ppp0 table vpn
ip route add default via 192.168.1.1 dev eth0 table hulue

建立规则

ip rule add from 192.168.18.x table vpn //源192.168.18.x这个ip走vpn表
ip rule add to x.x.x.x table hulue pref 100 //目的地址x.x.x.x的走hulue表 pref 100优先级100在前面
ip ro flush cache

查看

ip rule
0: from all lookup local
100: from all to x.x.x.x lookup hulue
32765: from 192.168.18.x lookup vpn
32766: from all lookup main
32767: from all lookup default

如果要指定规则优先级,可以加上 pref 参数。pref 即路由表内序号,如果不加 pref,则将在已有的规则最小序号前插入。

这里注意优先级的顺序 优先级(pref)从低到高匹配 从0到32767顺序匹配 可手动加参数。默认是在已有的规则最小序号前插入

添加两条指定序号的规则

ip rule add from 192.168.18.x table vpn pref 3
ip rule add to x.x.x.x table hulue pref 2

我们需求是排除某个目的IP不走VPN 其余都走vpn 所以是排除规则在前,vpn规则在后 优先级已序号从低到高匹配

ip rule
0: from all lookup local
2: from all to x.x.x.x lookup hulue
3: from 192.168.18.x lookup vpn
32766: from all lookup main
32767: from all lookup default

删除规则

ip rule del prio 2
ip rule del prio 3 //指定序号即可

还需配置防火墙nat

-A POSTROUTING -s 192.168.18.x/32 -o ppp0 -j MASQUERADE
-A POSTROUTING -s 192.168.18.0/24 -o eth0 -j MASQUERADE

路由设置好还是不行,再单独设置了192.168.18.x 通过ppp0 进行SNAT,路由和iptables都得设置才能生效

网关可以设置所有的SNAT,还可以设置单网段,单网卡。

此问题原因是单独设置了18段ip的SNAT。把SNAT设置为默认  所有子网 特别注意不要指定网卡出口。不然限制死了。

iptables -t nat -I POSTROUTING -j MASQUERADE
-A POSTROUTING -j MASQUERADE   这样就不用另外设置iptables

发表评论

邮箱地址不会被公开。 必填项已用*标注