場景:成功建立 VPN 連線(顯示「已連線」),能訪問公司內網資源(如內網網站、文件伺服器、ERP),但無法訪問公網(打不開百度、Google、微信網頁版、郵箱)。這是經典的 「預設閘道爭奪」 問題。本文深度解析原理並提供多平台解決方案。
核心原理:預設路由被劫持
- VPN 客戶端建立虛擬網卡(TAP/TUN),並向系統推送一條預設路由 (0.0.0.0/0),指向 VPN 隧道介面,且跃点数更低(優先級更高)。
- 所有外發流量(含公網流量)被強制導入 VPN 隧道,送達公司 VPN 伺服器/防火牆。
- 若公司 VPN 策略未開啟「分流」/「全隧道」模式且無公網出口 NAT,或防火牆策略禁止 VPN 用戶訪問公網,流量即被丟棄/阻斷 → 上不了網。
解決方案:啟用「本地預設閘道」/ 禁用「使用遠程網絡的預設閘道」
核心邏輯:保留本地物理介面的預設路由,僅將目標為公司內網網段的流量導入 VPN 隧道(分流模式 / Split Tunneling)。
Windows 10/11 圖形介面設置(最常用)
- 「設定」→「網路和網際網路」→「VPN」→ 選中目標 VPN 連線 → 「編輯」/「進階選項」。
- 或「控制台」→「網路和共用中心」→「更改介面卡設定」→ 右鍵 VPN 介面卡(通常名為「WAN 微型埠 (IPPTP/SSTP/L2TP/IKEv2)」或自訂名稱)→ 「內容」→ 「網路」頁籤。
- 雙擊「網際網路通訊協定第 4 版 (TCP/IPv4)」→ 「進階」→ 取消勾選「在遠程網路上使用預設閘道」 → 確定層層退出。
- 重新連線 VPN 生效。

Windows 命令列/腳本自動化(批量部署/登入腳本)
# 獲取 VPN 介面介面索引 (ifIndex)
Get-NetIPInterface -InterfaceAlias "VPN連線名稱" | Select-Object ifIndex, InterfaceAlias
# 禁用該介面的預設路由發布/學習(PowerShell 管理員)
Set-NetIPInterface -InterfaceAlias "VPN連線名稱" -Dhcp Disabled -Force
# 關鍵:移除 VPN 介面上的預設路由
Remove-NetRoute -InterfaceAlias "VPN連線名稱" -DestinationPrefix "0.0.0.0/0" -Confirm:$false
# 或針對 IPv6
Remove-NetRoute -InterfaceAlias "VPN連線名稱" -DestinationPrefix "::/0" -Confirm:$false
macOS / Linux (NetworkManager / OpenVPN / WireGuard)
- NetworkManager (GUI/CLI): 編輯 VPN 連線 → IPv4 設定 → 路由 → 勾選「僅將此連線用於其網路上的資源」/ `nmcli connection modify "VPN名" ipv4.never-default yes`。
- OpenVPN 客戶端配置 (.ovpn): 添加 `route-nopull`(忽略伺服器推送的路由),手動添加內網路由 `route 10.0.0.0 255.0.0.0 vpn_gateway`(或具體網段)。
- WireGuard: 配置文件 `[Interface]` 下 `AllowedIPs = 10.0.0.0/8, 192.168.1.0/24`(僅內網段),不包含 0.0.0.0/0。
移動端 (iOS / Android)
- iOS (內建/第三方 App): 設置 → VPN → 點擊 (i) → 關閉「按需連接」/ 部分 App 支援「分流」開關(如 Shadowrocket、Quantumult X、Surge 等規則分流)。
- Android: 設置 → 網路和網際網路 → VPN → 齒輪圖標 → 「永遠啟用 VPN」/「阻斷非 VPN 流量」關閉;或使用支援分流的客戶端(如 SagerNet、Clash for Android、v2rayNG)。
企業級最佳實踐:VPN 伺服器端配置分流
根治在伺服器端,由管理員統一推送策略,客戶端無感:
- Windows RRAS / Cisco ASA / FortiGate / SonicWall / OpenVPN Server / WireGuard Server: 配置僅推送內網路由(如 `10.0.0.0/8`、`192.168.10.0/24`),不推送預設路由 (0.0.0.0/0)。
- 啟用 Split Tunneling (分隧道/分流) 功能。
- 配置 DNS 分配:推送公司內網 DNS(解析內網域名),公網域名由本地 DNS 解析。
- 策略檢查:確保防火牆允許 VPN 客戶端訪問內網資源,且不強制毛髮 NAT 出公網(除非業務需要)。
驗證分流生效
- 連接 VPN 後,`route print` (Win) / `netstat -rn` (Mac/Linux) / `ip route`,確認預設路由 (0.0.0.0/0) 指向物理網卡閘道,而非 VPN 介面。
- 內網段路由指向 VPN 介面。
- 瀏覽器訪問公網站點(百度/Google)正常,同時訪問內網站點正常。
- `tracert 8.8.8.8` 路徑不經 VPN 伺服器 IP。
常見誤區與避坑
- 誤以為「不勾選預設閘道」就不能訪問內網: 錯。只要內網路由推送正確,內網照常訪問。
- 公司策略強制全隧道: 部分企業為合規/審計/防洩密,強制所有流量走 VPN(全隧道),客戶端無法改。需申請權限或使用跳板機/虛擬桌面 (VDI) 替代。
- DNS 洩漏: 分流後公網域名解析走本地 DNS,內網域名需走公司 DNS。Windows 可能優先用 VPN 介面 DNS 導致內網域名解析失敗 → 需配置 NRPT (Name Resolution Policy Table) 或手動指定內網 DNS 後綴。
- IPv6 預設路由: 同理需檢查並移除 VPN 介面的 `::/0` 路由。
總結:VPN 連上卻上不了網,90% 是預設路由被 VPN 劫持且公司無公網出口。客戶端取消「使用遠程預設閘道」/ 伺服器端配置分流 是標準解法。掌握路由表檢視與分流原理,讓 VPN 既安全連內網,又自由上公網。