我正在设置一个运行CentOS 6.4的服务器(精确到VM)。 在连接到互联网的CentOS机器上有一个eth0适配器(通过主机上的桥接networking)。 eth0适配器通过DHCP进行configuration。 到现在为止还挺好。
我也想在服务器上运行VPN客户端,并通过tun0适配器连接到Internet 。 VPN客户端使用OpenVPN成功连接。 它生成一个度量为0的default路由。
所以,首先,这是可能的,对吧? 其次,据我所知,有两种方法可以解决这个问题:增加通过eth0的route的度量,或者减less通过tun0的route的度量。
我试图做到这一点,但迄今为止都没有成功。 我已经尝试了这些:在/etc/sysconfig/network-scripts/ifcfg-eth0添加METRIC=100行,但不会更改路由的度量标准。
我也尝试在OpenVPN的client.conf文件中添加一个metric选项。 这也没有效果(我相信这是由于在这个文件中有一个pull选项)。
我最激进的想法是手动删除eth0的route ,并用相同的路由replace它,但具有更高的指标。 不幸的是,我也做不到这一点,因为重新启动networking将重置设置,并有一个守护进程运行,它始终不是一个好的解决scheme。
我愿意提出build议和想法。 谢谢。
所以,如果我正确地理解了这个问题,那么你基本上有一个接口设置为DHCP的计算机,并且你想连接到一个VPN,并通过VPN传递所有的stream量。
当DHCP服务器更新它重新添加由DHCP服务器提供的网关的租约时,您遇到问题。
我build议你更新你的client.conf并用redirect-gateway def1replaceredirect-gateway选项。 这指示OpenVPN添加两个比默认网关更具体的路由,而不是删除预先存在的默认网关并添加一个新的路由。
当你使用redirect-gateway def1你会得到一个类似于下面的路由表。 由于最具体的匹配路由是使用的路由,所以0.0.0.0/1和128.0.0.0/1的路由128.0.0.0/1于缺省路由,而没有必须删除/replace默认路由的混乱业务。 它也消除了您确保没有其他软件更改默认路由的要求。
# ip route 10.3.195.17 dev tun_rem proto kernel scope link src 10.3.195.18 172.26.222.0/23 dev eth1 proto kernel scope link src 172.26.222.204 0.0.0.0/1 via 10.3.195.17 dev tun_rem 128.0.0.0/1 via 10.3.195.17 dev tun_rem default via 172.26.222.1 dev eth1
如果您的client.conf没有设置redirect-gateway设置,那么您可能还需要添加"route-nopull选项来忽略从VPN服务器拉出的路由。