旁注:事实证明我们的 OpenVPN 服务器确实是为分割隧道设置的,但我们的客户端正在推送他们自己的网关:
redirect-gateway def1 bypass-dhcp bypass-dns
这样做是为了访问一些无法从外部访问的内部服务。更合适的问题是:在不推动将整个流量路由到 VPN 的网关的情况下,访问 vpn 内部服务的正确方法是什么,尽管我认为这更像是另一个问题。
我在家办公,虽然我已经通过网络管理器建立了稳定的 VPN 连接,但其速度非常有限。我在家里有 1 GBit 的连接,而目前的 VPN 连接仅提供 10 MBit。
虽然某些服务必须通过 VPN 连接,但大多数流量都可以顺利绕过它,因为 VPN 所做的只是减慢速度。(我特别关注公共数据密集型服务,例如从官方 docker hub 或 npm 注册表下载图像。但只是为了设置它,让我们采用 fast.com 这样的服务。)
如何将某些网站列入白名单以使用 VPN 连接或将其他网站列入黑名单以不使用 VPN 连接?
答案1
与为您设置 VPN 的人员讨论。
这通常称为分割路由,其中 VPN 隧道将用于公司网络内的资源,而默认网关将用于其余资源。这通常比按服务进行过滤更容易。通常,公司将有一些一种网络内部计划,可以轻松提供分割路由。
您应该检查您的组织是否允许这样做。并非所有组织都允许拆分路由,因为他们希望对您的流量进行数据丢失预防。
答案2
以下是一些可以尝试的替代方案:
- 忽略更改默认网关:
在配置指令中将“redirect-gateway”选项更改为 redirect-private
- 仅通过 VPN 路由 VPN 流量:(
如果服务器向客户端推送显式路由则有效)
勾选 VPN 设置 -> IPV4 ->
“仅将此连接用于其网络上的资源”
如果他们推送明确的路线,那么只有那些流量才会通过 VPN。
- 推送非 VPN 流量外部隧道:
然后在终端连接到你的 VPN:
host www.sl.se # host you want outside tunnel
194.68.78.65 # the ip of the host above
sudo ip route add 194.68.78.65 dev eth0 # route traffic outside VPN
这会将流量路由到 VPN 之外的 www.sl.se
- 推送 VPN 流量里面主机到主机隧道
然后在终端连接到你的 VPN:
host your-vpn-onlyhost.com # host you want inside of tunnel
1.1.1.1.1 # the ip of the host above
sudo ip route add 1.1.1.1 dev tun0 # route traffic inside VPN
所有示例均假设 VPN 接口名称为 tun0,网卡名称为 eth0。并且 DNS 名称可在 Internet 上解析。
答案3
您想要的就是分割隧道。
您可以做什么取决于您在客户端计算机上的用户类型。如果您不是 sudoer,则必须由这样的用户(通常是系统管理员)来修复此问题。
如果你是 sudoer(并且假设你的组织允许你进行这样的更改;这取决于你自己),你可以按照本指南。
笔记:
16.04 和 18.04 之间发生了一些变化,因此旧指南可能不完整。
我不知道 18.04 和 19.10 之间是否存在任何变化导致该指南无法工作。
有关的: