You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL2双网卡(eth0/eth1)环境下,指定eth1访问外部网络失败的路由配置求助

WSL2双网卡(eth0/eth1)环境下,指定eth1访问外部网络失败的路由配置求助

嘿,我看了你的问题,核心原因很明确——当前系统的默认路由只绑定在了eth0上,所以所有对外的网络请求都会自动走WSL默认的虚拟网卡(eth0),而eth1虽然能通同网段设备,但没配置对外访问的路由规则,直接用它访问外部自然会提示“目标不可达”。不过好在你已经验证了eth1本身是能通外部的(用ping -I指定源IP就成功了),那只需要调整路由配置就能解决问题,我给你两种方案:


一、临时生效配置(重启WSL后失效,适合快速测试)

方法1:给eth1添加默认路由(优先级高于eth0)

首先确认eth1所在网段的网关,一般是192.168.1.1(你可以在Windows端看对应Hyper-V交换机的网络网关,或者在WSL里ping这个地址试试能不能通)。然后执行以下命令:

sudo ip route add default via 192.168.1.1 dev eth1 metric 50

这里的metric 50是设置路由优先级,数值越小优先级越高——eth0的默认路由metric一般是100,所以这条规则会让所有外部流量优先走eth1。如果之后想切回eth0默认,删掉这条路由就行:

sudo ip route del default via 192.168.1.1 dev eth1

方法2:给特定目标IP添加路由(仅指定流量走eth1)

如果你只想让访问某几个特定地址(比如8.8.8.8、1.1.1.1)的时候走eth1,不用全局切换,可以这样:

# 给8.8.8.8添加专属路由
sudo ip route add 8.8.8.8/32 via 192.168.1.1 dev eth1
# 给1.1.1.1添加专属路由
sudo ip route add 1.1.1.1/32 via 192.168.1.1 dev eth1

这样访问这两个地址时会自动走eth1,其他流量还是走eth0。

方法3:策略路由(让从eth1发出的请求自动走eth1)

这种方式更灵活,不管你访问什么地址,只要请求的源IP是eth1的192.168.1.8,就自动走eth1的路由:

# 新建一个编号为100的路由表,添加eth1的默认路由和本地网段路由
sudo ip route add default via 192.168.1.1 dev eth1 table 100
sudo ip route add 192.168.1.0/24 dev eth1 table 100
# 添加规则:源IP为192.168.1.8的请求,使用100号路由表
sudo ip rule add from 192.168.1.8 lookup 100

配置完后,你直接用ping 1.1.1.1的时候,如果系统选择了eth1的IP作为源,就会自动走eth1的路由,不用再手动加-I参数。


二、永久生效配置(重启WSL后依然保留)

WSL每次重启都会重置网络配置,所以要把规则写到配置文件里:

  1. 先创建/修改/etc/wsl.conf,禁用自动生成的网络配置:
[network]
generateResolvConf = false
  1. 创建/etc/network/interfaces.d/eth1文件,添加eth1的启动后脚本:
auto eth1
iface eth1 inet dhcp
    # 这里选你想要的配置方式,比如方法1的默认路由
    post-up ip route add default via 192.168.1.1 dev eth1 metric 50
    # 如果是方法3的策略路由,就替换成下面三行:
    # post-up ip route add default via 192.168.1.1 dev eth1 table 100
    # post-up ip route add 192.168.1.0/24 dev eth1 table 100
    # post-up ip rule add from 192.168.1.8 lookup 100
  1. 在Windows的命令提示符里执行wsl --shutdown,然后重新打开WSL,配置就会自动生效了。

最后再补充下为什么ping -I 192.168.1.8 1.1.1.1能成功:因为你强制指定了请求的源IP是eth1的,这时候系统会匹配到eth1的本地网段路由,然后通过192.168.1.1网关转发请求;但默认情况下,系统会优先用默认路由对应的网卡(eth0)的IP作为源,所以直接ping外部地址时走的是eth0,这就是问题所在啦。

备注:内容来源于stack exchange,提问作者Tiklyt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 12:07:58