仅对特定域名/主机名使用 VPN

仅对特定域名/主机名使用 VPN

我在 Windows 上使用带有 TAP 适配器的 OpenVPN。

我知道您可以指定到特定 IP 地址的路由以访问本地互联网连接。但是它无法对主机名/域执行相同操作。

有没有办法让我的流量保持在 VPN 上,但将请求路由到 www.google.com,例如通过我家里的默认网关(在我的情况下是 192.168.1.1)?

我本来想在我的 HOSTS 文件中设置 127.0.0.1 www.google.com,然后运行本地 apache 并处理其中的规则集,但如果还有其他我不知道的方法,我宁愿不必运行本地网络服务器/代理。

答案1

--allow-pull-fqdn仅当您使用详细信息时,您才可以指定到主机名的路由OpenVPN 手册

答案2

您可以将其添加到 .ovpn 文件中:

allow-pull-fqdn
route www.google.com 255.255.255.255 net_gateway

然后在 openvpn 启动时,它将查找 www.google.com,获取其 IP 地址,然后使用网络(不是 VPN)为其添加路由。

问题是,谷歌使用多个 IP 地址,所以当您尝试访问谷歌时,它仍会使用 VPN,除非您碰巧点击了它启动时查找的相同 IP 地址。

一个技巧是获取 google 使用的 IP 地址之一并将其添加到您的 /etc/hosts,这样您的机器将始终使用相同的 google IP 地址,并且 openvpn route 命令将完成您想要的操作。

当然,问题是,如果 Google 停止使用该 IP 地址,或者出于某种原因,想要将您路由到其他 IP 地址,那么它就会失败。

答案3

我知道这个条目非常虽然我入行较晚,但最近我花了几个小时研究这个主题,并认为我可以帮助其他可能正在寻找同样东西的人。虽然最常见的用例是通过 VPN 路由所有内容,但对于 VPN 来说,有两种例外情况:

  1. 你要大部分流量必须通过 VPN,但有少数例外
  2. 你只有几个网站您希望通过 VPN 路由

除例外情况外,大多数路线 对于场景 # 1,David 的响应效果很好。要解决多个 IP 问题,请进行 WHOIS 查询并为 IP 地址创建路由堵塞,不仅仅是 IP 地址。请注意,您可能需要执行多次查找才能获得整个 IP 地址块集。

# if your build doesn't support "net_gateway," replace it with your own default gateway
# I added extra spacing for legibility, but a single space is fine
route  172.217.0.0   255.255.0.0    net_gateway  ;  google.com
route  216.239.32.0  255.255.224.0  net_gateway  ;  google.com
allow-pull-fqdn  ;  my config works *without* this option, so test on your build
route  google-public-dns-a.google.com  net_gateway  ;  8.8.8.8
route  google-public-dns-b.google.com  net_gateway  ;  8.8.4.4
route  ifconfig.co     net_gateway  ;  confirm at least one exception is routing properly
route  whatismyip.com  net_gateway

路线仅几 David 的回应也适用于场景#2;但是,您添加了route-nopull选项,以防止服务器为 VPN 发送默认路由。 我还没有测试过,但我想您可以添加自己的默认路由来指向您的 net_gateway。

route  1.2.3.0  255.255.255.0  vpn_gateway  ;  "vpn_gateway" is optional & 1.2.3.0 is fictitious
route  2.3.4.0  255.255.255.0  ;  another example - perhaps an IPTV provider
allow-pull-fqdn
route  ifconfig.me       vpn_gateway
route  myexternalip.com  vpn_gateway
route-nopull

测试配置 我喜欢为 ifconfig.co、ifconfig.me、whatismyip.com 和 myexternalip.com 添加路由,因为这样我可以快速测试我正在运行的配置文件:完整 VPN 或拆分隧道。当我运行完整 VPN 时,所有站点都会返回我的 VPN 地址;否则,ifconfig.co 和 whatismyip.com 将返回我的本地地址,而 ifconfig.me 和 myexternalip.com 将返回我的 VPN 地址。

C:\utils> for %f in (co me) do curl ifconfig.%f

- 或者 -

PS C:\utils> "whatismyip", "myexternalip" | % { Start-Process ("http://{0}.com" -f $_) }

我知道这没什么特别的,但我提供了一些细节,这些细节在我四处寻找时确实对我有帮助。我希望这至少能帮助一个人。

我很乐意听听其他有关 VPN 的提示或技巧。祝您安全上网愉快!

相关内容