当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"
。