yyhhyy's blog

yyhhyy

Winodws 双网卡实现内外网分流

28
2025-03-20

1. 缘由

公司在网络方面做了些许限制,因此有了这次的探索。刚好电脑有两张网卡。就通过路由表简单做一下分流即可实现一定突破。

2. 前置条件

  • 有线网卡(专门用来连通内网)

  • 无线网卡(专门用来连通外网)

3. 操作过程

Windows默认的流量出口优先级始终是 有线网卡 优先于 无线网卡 。因此呢,我们要尝试破坏这个优先级。

3.1 获取网卡ip及网关

打开cmd (Win + R input cmd)

ipconfig

输出结果大致如下:

以太网适配器 以太网:
​
   连接特定的 DNS 后缀 . . . . . . . : 
   本地链接 IPv6 地址. . . . . . . . : 
   IPv4 地址 . . . . . . . . . . . . : 192.168.1.8
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.1.254
   
无线局域网适配器 WLAN:
​
   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : 
   IPv4 地址 . . . . . . . . . . . . : 10.0.4.6
   子网掩码  . . . . . . . . . . . . : 255.255.248.0
   默认网关. . . . . . . . . . . . . : 10.0.0.254

核心信息:

需要拿到 IP地址 以及 网关 后续做路由表需要用到

3.2 修改路由表

cmd执行:

route print -4

输出结果大致如下:

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0     192.168.1.254    192.168.1.8     25
          0.0.0.0          0.0.0.0         10.0.0.254       10.0.4.6     30
         10.0.0.0    255.255.248.0            在链路上        10.0.4.213    286
       10.0.4.231  255.255.255.255            在链路上        10.0.4.213    286
===========================================================================
永久路由:
  无

重点其实就是看最上方的 0.0.0.0 , 可以看到路由表优先让 有线网卡排在无线网卡之前 (看跃点数 越小越优先)

因此我们需要在这里做下修改。

  1. 删除默认路由

    route delete 0.0.0.0
  2. 添加外网路由(走无线网卡)

    route add 0.0.0.0 mask 0.0.0.0 10.0.0.254 metric 10

    metric指代跃点数(优先级)

  3. 添加内网路由(走有线网卡)

    # 以192.168.0.0/16为例
    route add 192.168.0.0 mask 255.255.0.0 192.168.1.254 metric 5 -p

    -p指代永久路由,也就是重启也不会修改这份自己配置的路由表

    具体还有哪些内网需要走内网网卡的,请自行根据以上例子进行补充。

至此,就可以实现内外网分离了。但是如果每次都要输入这么一大坨命令,那可实在是太累了,因此贴一份bat脚本

请根据自己的实际网络环境进行修改!

@echo off
echo ============================================
echo     Windows内外网分流配置工具
echo     author:iyyh.net
echo     时间:%date% %time%
echo ============================================
echo.
​
:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo 错误: 请以管理员身份运行此批处理!
    echo 请右键点击此文件,选择"以管理员身份运行"。
    echo.
    pause
    exit /b 1
)
​
:: 确保备份目录存在
if not exist "D:\network\network_route_print" (
    echo [信息] 创建备份目录...
    mkdir "D:\network\network_route_print"
)
​
echo [信息] 开始配置内外网分流...
echo [信息] 正在备份当前路由表...
route print > "D:\network\network_route_print\route_backup_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
echo [信息] 路由表已备份到 D:\network\network_route_print
​
echo.
echo [步骤1] 删除现有默认路由...
route delete 0.0.0.0
if %errorlevel% equ 0 (
    echo [成功] 默认路由已删除
) else (
    echo [警告] 删除默认路由可能出现问题,继续执行...
)
​
echo.
echo [步骤2] 添加外网默认路由(走无线网卡)...
route add 0.0.0.0 mask 0.0.0.0 10.0.0.254 metric 10
if %errorlevel% equ 0 (
    echo [成功] 外网默认路由已添加
) else (
    echo [错误] 添加外网默认路由失败!
    goto error
)
​
echo.
echo [步骤3] 添加内网路由(走有线网卡)...
echo [信息] 添加192.168网段路由...
route add 192.168.0.0 mask 255.255.0.0 192.168.1.254 metric 5 -p
if %errorlevel% equ 0 (
    echo [成功] 192.168网段路由已添加
) else (
    echo [错误] 添加192.168网段路由失败!
    goto error
)
​
echo.
echo [步骤4] 验证路由配置...
echo [信息] 当前路由表配置如下:
echo.
route print | findstr /C:"0.0.0.0" /C:"192.168"
echo.
echo ============================================
echo [成功] 内外网分流配置已完成!
echo ============================================
goto end
​
:error
echo.
echo [错误] 配置过程中出现错误,请检查网络连接和账户权限!
echo [建议] 请确保有线网卡和无线网卡正常工作,并以管理员身份运行此批处理。
​
:end
echo.
echo 按任意键退出...
pause > nul

最后,请注意数据安全