route-在连接VPN的同时保持对互联网的访问


  1. win+R 输入 ncpa.cpl,按回车
  2. 右键需要操作的 VPN 设备,点击属性
  3. 点击网络选项卡,双击 TCP/IPv4,点击高级
  4. 取消勾选:在远程网络上使用默认网关
  5. 连接VPN
  6. 管理员模式打开 powershellcmd
  7. 输入命令 ipconfig /all 回车,查看需要操作的VPN(如PPP连接)的IP地址,如192.168.33.19
  8. 添加永久静态路由:route add 172.16.0.0 mask 255.255.0.0 192.168.33.19 -p

这条命令的意思是:将 172.16.0.0 网段,子网掩码为 255.255.0.0 的所有流量通过 192.168.33.19 接口访问,而 192.168.33.19 正是该VPN的接口


可以使用以下 powershell 脚本,在连接VPN的时候自动更新路由表
下载脚本:https://github.com/jxch/Shell-Tools/blob/main/auto-vpn-route.ps1

# auto-vpn-route.ps1

param([String]$vpn, [String]$ip, [String]$mask)

$vpn_ipv4 = (Get-NetIPAddress | Where-Object {$_.InterfaceAlias -eq $vpn}).IPAddress

Write-Host "vpn: $vpn; vpn-ipv4: $vpn_ipv4"
If([String]::IsNullOrEmpty($vpn_ipv4)) {
    Write-Warning "请连接 VPN:$vpn"
} Else {
    Write-Host "route delete $ip" -ForegroundColor DarkGray
    route delete $ip
    Write-Host "route add $ip mask $mask $vpn_ipv4" -ForegroundColor DarkGray
    route add $ip mask $mask $vpn_ipv4

    If([String]::IsNullOrEmpty((route print | Select-String -Pattern "\s0.0.0.0" | Select-String $vpn_ipv4))) {
        Write-Host "操作完成!可使用 route print | select-string $ip 查询路由表是否修改。"
    } Else {
        Write-Host "route delete $ip" -ForegroundColor DarkGray
        route delete $ip
        Write-Warning "请去控制面板关闭 $vpn 网卡的默认网关功能" 
        Write-Warning "参见:ncpa.cpl -> $vpn -> 属性 -> 网络 -> (TCP/IPv4) -> 高级 -> 在远程网络上使用默认网关" 
        Write-Warning "重新连接 $vpn"
    }
}

使用方法:

.\auto-vpn-route.ps1 -vpn 云开发 -ip 172.0.0.0 -mask 255.0.0.0

文章作者: 钱不寒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 钱不寒 !
  目录