我正在设置一台运行 CentOS 6.4 的服务器(准确地说是虚拟机)。我eth0
在 CentOS 机器上有一个适配器,可以连接到 Internet(通过主机上的桥接网络)。eth0 适配器是通过 DHCP 配置的。到目前为止一切顺利。
我还想在服务器上运行 VPN 客户端,通过适配器连接tun0
到互联网。VPN 客户端使用 OpenVPN 成功连接。它生成一个default
度量为 0 的路由。
那么,首先,这是可能的,对吧?其次,据我所知,有两种方法可以解决这个问题:增加route
贯穿的度量或减少贯穿的eth0
度量。route
tun0
我尝试过这两种方法,但目前还没有成功。我尝试过以下方法:METRIC=100
在 中添加一条线/etc/sysconfig/network-scripts/ifcfg-eth0
,但它并没有改变路线的度量。
我也尝试过metric
在client.conf
文件中添加 OpenVPN 选项。这也没有效果(我认为这是因为pull
这个文件中有一个选项)。
我最激进的想法是手动删除route
foreth0
并将其替换为相同的路由,但使用更高的度量。不幸的是,我也无法做到这一点,因为重新启动网络将重置设置,并且让守护进程一直运行似乎不是一个好的解决方案。
我愿意接受建议和想法。谢谢。
答案1
因此,如果我正确理解了这个问题,那么你基本上有一台设置为 DHCP 接口的计算机,并且你想要连接到 VPN 并通过 VPN 传递所有流量。
当 DHCP 服务器更新租约时,您会遇到问题,它会重新添加 DHCP 服务器提供的网关。
我建议您更新您的client.conf
并将redirect-gateway
选项替换为redirect-gateway def1
。这指示 OpenVPN 添加两个比默认网关更具体的路由,而不是删除预先存在的默认网关并添加新的网关。
使用时,redirect-gateway def1
您将获得如下所示的路由表。由于最具体的匹配路由是所使用的路由,因此0.0.0.0/1
、和128.0.0.0/1
的路由优先于默认路由,但无需删除/替换默认路由。它还消除了确保没有其他软件更改默认路由的要求。
# 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
如果redirect-gateway
您的中没有设置该设置client.conf
,那么您可能还需要添加"route-nopull
忽略从 VPN 服务器拉取的路由的选项。