双网卡同时上网配置说明

3 阅读5分钟

场景

电脑有两张无线网卡,同时连接两个不同的 WiFi 网络:

网卡连接的WiFi用途
网卡A(内置)WiFi_A默认上网,走默认网关
网卡B(USB)WiFi_B专门访问某个内网/特定服务器

需求:默认上网走 WiFi_A,访问特定 IP 时走 WiFi_B。


做了哪些改动

1. 导入 WiFi 配置文件到第二张网卡

将已保存的 WiFi 配置从网卡A复制到网卡B,这样两张网卡都能连接各自的网络。

# 导出配置(从网卡A导出 WiFi_B 的配置文件,包含密码)
netsh wlan export profile name="WiFi_B" interface="网卡A的名称" folder="C:\temp" key=clear

# 导入到网卡B
netsh wlan add profile filename="C:\temp\网卡A的名称-WiFi_B.xml" interface="网卡B的名称"

2. 用网卡B连接目标WiFi

netsh wlan connect name="WiFi_B" interface="网卡B的名称"

3. 添加静态路由(核心改动)

让访问目标IP的流量走网卡B的网关,而不是默认的网卡A。

# 临时路由(重启后失效,用于测试)
route add 目标IP mask 255.255.255.255 网卡B的网关 if 网卡B的接口编号 metric 1

# 永久路由(-p 参数,重启后仍然生效)
route -p add 目标IP mask 255.255.255.255 网卡B的网关 if 网卡B的接口编号 metric 1

if 接口编号 是网卡B的接口编号(ifIndex),每台电脑不一样,需要自己查。


原理说明

路由表是怎么工作的

Windows 有一张"路由表",决定每个数据包走哪条路(哪个网卡、哪个网关)。

当你要访问一个 IP 时,Windows 会按以下规则匹配路由表:

  1. 最精确匹配优先:子网掩码越长(越精确)的路由,优先级越高。
  2. 跃点数越低越优先:同样精确的路由,metric(跃点数)小的先走。

默认路由 vs 静态路由

路由类型目标说明
默认路由0.0.0.0/0所有没匹配到更具体路由的流量都走这里
静态路由x.x.x.x/32只针对这一个 IP,走指定的网卡和网关

因为单个 IP 的路由(32位掩码,精确到单个IP)比默认路由(0位掩码,所有地址)更精确,所以访问那个 IP 时会优先走静态路由那条路。

为什么不能直接靠默认网关

如果两张网卡都有默认网关,Windows 会选跃点数低的那个作为主网关,另一个的默认网关基本不会被用到。所以普通情况下虽然连了两个 WiFi,但实际流量只走其中一个。

要让特定地址走另一个网卡,就必须加静态路由明确告诉系统:“这个IP走那条路”。


操作步骤(完整流程)

第一步:确认网卡名称和接口编号

# 查看所有网卡及其接口编号(ifIndex)
Get-NetAdapter | Select-Object Name, ifIndex, Status

# 查看当前连接的 WiFi
netsh wlan show interfaces

记下两张网卡的名称和接口编号。

第二步:查看两张网卡的IP和网关

Get-NetIPConfiguration | Where-Object { $_.InterfaceAlias -match "WLAN" } | Select-Object InterfaceAlias, IPv4Address, IPv4DefaultGateway

记下:

  • 网卡B的网关地址(用来做静态路由的下一跳)

第三步:导出/导入 WiFi 配置(如果网卡B没连过目标WiFi)

# 从已连接过的网卡导出配置
netsh wlan export profile name="目标WiFi名称" interface="网卡A名称" folder="C:\temp" key=clear

# 导入到网卡B
netsh wlan add profile filename="C:\temp\导出的文件名.xml" interface="网卡B名称"

第四步:连接 WiFi

netsh wlan connect name="目标WiFi名称" interface="网卡B名称"

第五步:添加静态路由

先测试临时路由:

route add 目标IP mask 255.255.255.255 网卡B的网关 if 网卡B接口编号 metric 1

测试访问是否成功,成功后再加永久路由:

route -p add 目标IP mask 255.255.255.255 网卡B的网关 if 网卡B接口编号 metric 1

常用操作

查看当前路由表

# 查看所有路由
route print

# 只看永久路由
route print -p

# 查看某个特定IP的路由
route print 目标IP

删除路由

# 删除临时路由
route delete 目标IP

# 删除永久路由(同样的命令,永久路由也会一起删掉)
route delete 目标IP

测试连通性

# 测试端口是否通
Test-NetConnection -ComputerName 目标IP -Port 端口号

# 测试HTTP访问
Invoke-WebRequest -Uri "http://目标IP:端口号/" -UseBasicParsing

注意事项

  1. 网关 IP 可能变化:如果目标网络的路由器重启或 DHCP 重新分配,网关可能变。如果访问不了,先检查网关是否还是原来的地址。
  2. 接口编号可能变化:插拔 USB 网卡或重启电脑后,接口编号(ifIndex)可能变,路由就失效了,需要重新添加。
  3. metric(跃点数):数字越小优先级越高。静态路由 metric 设为 1 是为了确保它比默认路由优先。
  4. 永久路由保存在注册表route -p 添加的路由存在 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes
  5. 需要管理员权限:添加/删除路由需要以管理员身份运行 PowerShell。
  6. 网段路由:如果需要访问整个网段而不是单个 IP,把掩码改成对应的网段掩码即可(例如 mask 255.255.255.0 表示整个C段)。