我的centos盒中运行着openvpn客户端,我将其用作内部网络的路由器。我有两个接触外界的接口。
eth0 - normal internet
tun0 - openvpn tunnel
我通过放置“ route-noexec”选项禁用了opevpn自动路由提取,现在我手动处理所有路由。在打开openvpn隧道后,我的路由表就是这样。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
192.168.44.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.11.0 0.0.0.0 255.255.255.0 U 0 0 0 dummy0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 192.168.44.1 0.0.0.0 UG 0 0 0 eth0
现在,我有一个内部主机,该主机连接到我的centos盒子上的接口192.168.80.0
192.168.80.50
我需要通过接口tun0路由来自此用户的所有流量,并通过eth0路由所有其他流量
我试图添加像这样的POSTROUTING规则
iptables -t nat -A POSTROUTING -s 192.168.80.50 -o tun0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
但所有客户端仅通过eth0(包括192.168.80.50)。我怎样才能做到这一点?
为某些IP创建路由表:
ip rule add from <sourceIP>/<mask> table <name>
然后声明一个新路由以匹配路由表<name>
:
ip route add default via <router> dev tun0 table <name>
对于需要使用VPN的人来说,拥有一个子网会更容易,因为使用此配置,您需要在表中指定所有IP <name>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句