(临时)手动解决方案:

(临时)手动解决方案:

连接到VPN 服务器(在这种情况下使用 OpenVPN 协议)在 Windows 10 机器上,某些应用程序可以访问互联网。Firefox、Edge 均可使用. 我甚至可以 ping 在线目的地。

然而,与 OneDrive 集成的 Outlook、Word、Excel 等办公应用程序无法访问互联网。Microsoft Store App 也是如此。有时这甚至会导致许可问题,因为 Office 无法再验证有效订阅。(令人困惑的一点是,OneDrive 应用程序本身(有时)在 Explorer 中编辑文件或文件夹时可以运行并同步文件,但 Office 中的 OneDrive 集成不起作用。)

语境:

  • 该机器配置为仅允许通过 VPN 网络进行通信。
  • VPN 服务器和某些 DNS 提供商的入口 IP 除外。
  • 这与 Office 365 有关,尽管我有理由相信版本并不重要。
  • VPN 连接是通过 OpenVPN 软件建立的。
  • IPv4

我花了一段时间才找到一个临时的解决方法,所以我在这里分享它,希望有人能找到更实用的解决方案。

阅读完以下临时解决方案后,后续问题是: 由于 IP 是由 DHCP 决定的,因此 OpenVPN 配置文件如何在不需要事先知道 IP 的情况下设置 VPN 适配器中的网关 IP?

如果发现问题,请随意从不同的角度重新解决问题;目标是建立 VPN 连接并让办公应用程序通过该连接工作。

答案1

经过长时间的搜索,我找到了这个文章

它解释了一些技术运作方式,考虑到

  • NLA——网络位置感知
  • NCSI——网络连接状态指示器

简而言之,问题与 VPN 适配器中的网关有关。NLA/NCSI 混淆了,错误地认为没有活动的互联网连接,因为 VPN 适配器没有明确的默认网关 IP 已定义。请注意,VPN 适配器的客户端 IP 由 VPN 服务器通过 DHCP 确定。通过路由规则隐式定义网关。这就是为什么不依赖 NCSI 的应用程序可以连接到互联网的原因。路由表包含该信息。

(临时)手动解决方案:

在 VPN 网络适配器的属性中,您可以定义 IP、子网、网关和 DNS 服务器。

  1. 为了实现这一点,首先确定你的 VPN 本地 IP可能类似于 10.100.5.25。

  2. 根据客户端 IP,导出网关 IP,我假设网关是 10.100.5.1。(您也可以查看路线打印桌子。)

  3. 将此 IP 填写到网关字段中。

在您调整后的概览中,VPN 连接现在将被标记为具有互联网访问权限。重新启动 Office 和 Windows 10 应用程序后,它们现在将能够连接。

下次连接到 OpenVPN 服务器时,您需要更新网关 IP,因为您很可能会收到另一个 IP,因此另一个网关将有效。

~目前我只知道如何通过 GUI 实现这一点。您可以通过命令行进行设置,但您需要定义一个 IP,每次重新连接时该 IP 都会发生变化,而且由于我可以通过 GUI 设置网关 IP,但将其余操作分配给 DHCP,因此我希望也可以通过 Powershell 或其他脚本语言实现这一点;我还没有找到这样的解决方案。~如果我找到了,我可以自动设置网关 IP。

(关于这一点,下一个问题可能是:*.ovpn 文件是否可以配置适配器以设置网关 IP?)


来源: https://blogs.technet.microsoft.com/the_microsoft_excel_support_team_blog/2014/03/24/office-2013-reports-no-internet-connectivity-with-vpn-connection/

其他一些信息来源可能会增加复杂性,但也会增加背景信息:

https://www.ryadel.com/en/yellow-triangle-over-network-connection-status-how-to-fix-it/

https://support.umbrella.com/hc/en-us/articles/230900948-Umbrella-Roaming-Client-Microsoft-Windows-Limited-Network-Connectivity-Warning-Yellow-Triangle-#7hotfix

https://www.interfacett.com/blogs/how-to-disable-network-connectivity-status-indicator-ncsi-with-group-policy/

https://community.spiceworks.com/topic/2131702-limited-connectivity-indicated-but-internet-works


脚本解决方案:

嗯,有点出乎意料,但我找到了一个命令行答案:

我想我之前搜索过“网关”,结果产生了很多噪音,但是当我搜索“默认网关”时,得到了更相关的结果。

在 PowerShell 中将默认网关添加到您的 VPN 适配器:

Set-Variable vpnadaptername -Value ENTER-NAME
Set-Variable vargateway (Get-NetRoute -DestinationPrefix 0.0.0.0/1 |Select-Object -expandproperty "NextHop"); Write-Host $vargateway 
New-NetRoute -InterfaceAlias $vpnadaptername -DestinationPrefix 0.0.0.0/0 -NextHop $vargateway
Get-NetIPConfiguration -InterfaceAlias $vpnadaptername

假设

  • 您在 VPN 配置中“路由拉取”,并将Get-NetRoute您的 VPN 网关 IP 列为 0.0.0.0/1 旁边的下一跳。
  • 运行顶部脚本时,VPN 连接处于活动状态,运行下面脚本时,VPN 连接处于关闭状态。
  • 尽管只有设置/删除路由命令实际上需要管理员权限,但命令是以管理员权限运行的。

不幸的是,重新启动或重新连接后,您的 VPN 适配器将被分配一个新的 IP,但旧的网关 IP 仍然在适配器中。

您可以通过用“Set-NetRoute”替换“New-NetRoute”来更新它,但我猜在 OpenVPN 建立连接之前清除它会更稳定。

因此你的VPN连接之前的脚本:

清除默认网关ip

Set-Variable vpnadaptername -Value ENTER-NAME
Set-Variable vargatewayold (Get-NetRoute -InterfaceAlias $vpnadapternam -DestinationPrefix 0.0.0.0/0 |Select-Object -ExpandProperty "NextHop")
Remove-NetRoute -InterfaceAlias $vpnadaptername -DestinationPrefix 0.0.0.0/0 -NextHop $vargatewayold Confirm:$false

最后说明。如您所见,route 命令用于编辑适配器的网关 IP,这意味着如果脚本的顺序不正确,您可能会弄乱路由表。例如,您的适配器可能会有两个网关。

始终可以通过网络适配器 -> 属性 -> IPv4 --> 属性 --> 选择网关 IP 并单击编辑或删除来手动删除 IP,从而恢复正常操作。重新连接 OpenVPN 将重置路由表。


找到的命令: https://richardspowershellblog.wordpress.com/2016/02/22/ip-default-gateways-by-cmdlet/

https://www.vexasoft.com/pages/set-networkadaptergateway (第三方,感觉不对,软件可能有效,但似乎过时了,尽管命令看起来很完美!)

相关内容