我已设置 OpenVPN 以通过 VPN 路由所有流量。我想知道是否有办法切换是路由所有流量还是仅路由每个客户端发往该网络的流量。
例如,如果我处于不受信任的网络上,我希望所有流量都通过 VPN 路由。但是,稍后当我处于受信任的网络上时,我可能只想通过 SSH 访问机器,但不希望路由所有流量,因为这样会不必要地变慢。
这可能吗?
答案1
如果服务器向您发布了默认路由,您可以忽略它,例如
route delete default tun0
并且您可以类似地恢复您的 VPN 连接前的默认路由。
另一方面,如果服务器没有发布这样的路由,您可以选择通过 VPN 路由所有流量,但在这种情况下,您需要确保 (a) VPN 服务器具备处理此类问题的功能,并且知道如何 NAT/路由您的流量到互联网,并处理回复,以及 (b) 确保您没有多个默认路由,并且您仍然可以到达 VPN 端点。
简而言之,假设你控制了你的客户,那么你就能控制除其他外它的路由表,你可以按照自己的喜好进行设置。路由较少的对服务器来说比想象的要容易;路由更多的比它所需要的合作或至少是它的能力要多;但两者都是可能的。
答案2
根据@MadHatter 提出的删除路线的想法,我创建了一个别名,其基本功能如下:
sudo openvpn --config /path/to/config --route-nopull
sudo ip route add x.x.x.x/24 dev tun0
x.x.x.x/24
您通过VPN连接的内部网络的路径在哪里。
--route-nopull
现在,当我只希望内部网络的流量通过 VPN 传输时,我可以使用此别名,如果我希望所有流量都通过 VPN 路由,则无需使用配置。