openvpn 客户端覆盖 vpn 服务器的默认网关

openvpn 客户端覆盖 vpn 服务器的默认网关

openvpn客户端连接到 VPN 服务器时,它会使用旧的默认网关为服务器 IP 创建路由。我如何才能知道openvpn不要使用旧的默认网关,而是使用我提供的自定义网关 IP。

即当我在另一个 VPN 网络中拥有 VPN 服务器时,该 VPN 服务器不是我的机器上的默认路由。

答案1

我也不希望第一个 VPN 是默认网关。我只是需要它用于某个子网。

在客户端,你可以使用以下选项忽略来自 VPN 服务器的任何路由

script-security 2
route-noexec
route-up setup-routing.sh

并使用路由脚本配置你自己的路由,可以是这样的

$ cat setup-routing.sh 

#!/bin/bash

ip ro add 192.168.10.0/24 via ${route_vpn_gateway}

在哪里route_vpn_gateway是指向 --route 选项使用的默认网关的环境变量,如 --route-gateway 选项中所指定,或当指定 --dev tun 时 --ifconfig 的第二个参数中所指定。

答案2

添加这两行将Server Config File强制所有流量通过你的VPN

push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"

答案3

如果你想设置下一跳路由器对于特定子网两个 VPN 建立后,使用类似

ip -4 route add ${DESTINATION_SUBNET} via ${NEXT_HOP} dev ${INTERFACE_NAME}

例如

ip -4 route add 10.0.0.0/8 via 172.16.0.1 dev eth0

您无需修改默认网关;将选择更具体的路由而不是默认路由。

答案4

redirect-gateway选项可能会或可能不会更改到达 OpenVPN 服务器的网关,具体取决于提供给它的标志。

根据手册页openvpn

选项标志:

当地的-- 如果两个 OpenVPN 服务器通过公共子网直接连接,例如无线连接,则添加本地标志。本地标志将导致上述步骤 1(为- 偏僻的可以将一个或两个以上的 IP 地址(即,转发到预先存在的默认网关的地址)省略。

因此,只需redirect-gateway local在客户端配置文件中添加一个选项,即可覆盖推送的选项。这将导致openvpn只添加新的默认路由,而不是服务器的特定路由。因此,用于连接到服务器的当前路由将继续使用。

如果您希望所有客户端都采用这种行为,请编辑服务器配置文件并将选项更改push "redirect-gateway"push "redirect-gateway local"

相关内容