萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 電腦故障排除 >  >> 電腦常見故障 >> 無法連上網路

解決 VPN 預設路由困擾:Windows Vista/7/10/11 強制分流上網與存取內網

問題現象:VPN 連上後「上網慢」或「完全上不了網」

Windows VPN Client 成功建立隧道後,路由表出現兩條預設路由:

  • 原有:0.0.0.0/0 → 本地閘道 (Metric 較大)
  • 新增:0.0.0.0/0 → VPN 虛擬介面閘道 169.254.x.x (Metric 較小/優先)

結果:所有流量(含網際網路)被強制塞進 VPN 隧道 → 經企業出口上網 → 受限於企業頻寬、防火牆政策,甚至企業無對外出口導致完全斷網。

核心對策:禁用 VPN 介面的「預設閘道」+ 手動加入內網靜態路由

步驟 1:取消 VPN 連線的「使用遠端網路的預設閘道」

  1. 控制台 → 網路和共用中心 → 變更介面卡設定。
  2. 右鍵 VPN 連線 → 內容 → 網路頁籤 → 「Internet 通訊協定 4 (TCP/IPv4)」 → 內容 → 進階。
  3. 取消勾選「在遠端網路上使用預設閘道」 → 全部確定。
  4. 效果:VPN 介面不再產生預設路由,網際網路流量走原有實體介面閘道。

步驟 2:手動加入內網網段靜態路由(永久生效)

管理員權限 PowerShell/CMD:

# 假設企業內網網段為 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16
# VPN 介面介面索引 (IF) 可用 `route print` 查詢,假設為 42
route -p add 10.0.0.0 mask 255.0.0.0 169.254.x.x metric 1 if 42
route -p add 172.16.0.0 mask 255.240.0.0 169.254.x.x metric 1 if 42
route -p add 192.168.0.0 mask 255.255.0.0 169.254.x.x metric 1 if 42
  • -p:持久化(重開機保留)。
  • 閘道 169.254.x.x 為 VPN 介面取得的 IP(連線後用 ipconfig 確認)。
  • if 42:指定 VPN 介面索引,避免多介面混淆。

進階:PowerShell 腳本自動化(登入腳本/Intune 部署)

$vpnIf = (Get-NetIPConfiguration -InterfaceAlias "*VPN*" | Select-Object -First 1).InterfaceIndex
$vpnGw = (Get-NetRoute -InterfaceIndex $vpnIf -DestinationPrefix "0.0.0.0/0").NextHop
$corpNets = @("10.0.0.0/8","172.16.0.0/12","192.168.0.0/16")
foreach ($net in $corpNets) {
  $ip,$mask = $net -split "/"
  $mask = ("255.0.0.0","255.240.0.0","255.255.0.0")[[array]::IndexOf(@("8","12","16"),$mask)]
  New-NetRoute -DestinationPrefix $ip -InterfaceIndex $vpnIf -NextHop $vpnGw -RouteMetric 1 -PolicyStore ActiveStore
}

驗證與測試

  1. 連線 VPN → route print 0.0.0.0 確認僅剩實體介面預設路由。
  2. ping 8.8.8.8 → 走本地出口,速度正常。
  3. ping 內網伺服器 IP → 走 VPN 隧道,成功通達。
  4. tracert 內網伺服器 → 第 1 跳為 VPN 閘道,後續進入企業核心。

適用版本與注意事項

  • Windows Vista/7/8/10/11 皆適用(介面微異,邏輯相同)。
  • 企業若下發 VPN 推送路由 (Classless Static Routes DHCP Option 249 / IPv6 RDNSS),客戶端會自動安裝,無需手動加路由。
  • 若企業策略強制全隧道(安全合規),請勿修改,改用企業提供的上網通道。
copyright © 萬盛學電腦網 all rights reserved