怎样实现WSL网络的连接?

常见问题 2025-06-17 963
本文围绕“如何连接WSL网络”展开知识拓展,WSL(Windows Subsystem for Linux)允许在Windows上运行Linux环境,而连接其网络是使用过程中的关键环节,掌握相关方法有助于更好地利用WSL进行开发等工作。

手把手教你搞定WSL网络连接,小白也能轻松上手!

最近好多朋友问我,WSL(Windows Subsystem for Linux)装是装好了,但网络连不上,各种命令行操作都试了还是不行,今天我就用大白话给大家捋一捋,WSL网络连接到底该怎么搞,保证看完就能自己动手解决!

如何连接WSL网络-知识拓展-知识拓展

WSL网络连接为啥总出问题?

先说个真实案例:上周有个程序员朋友装完WSL2,发现Linux里ping不通百度,但Windows能正常上网,他折腾了俩小时,最后发现是防火墙规则没配置对,其实WSL网络问题主要就卡在三个地方:

  1. 网络模式:WSL1和WSL2的底层网络架构完全不同
  2. 防火墙拦截:Windows防火墙可能误杀WSL流量
  3. 代理配置:公司内网需要特殊代理才能上网

WSL1和WSL2网络配置大不同

WSL1网络配置(简单粗暴版)

WSL1的网络是直接桥接到Windows主机的,相当于在Windows里开了个虚拟网卡,配置步骤:

  • 打开PowerShell(管理员模式)
  • 输入ipconfig找到WSL对应的虚拟网卡(一般是vEthernet开头)
  • 确保这个网卡的DNS设置和Windows一致

真实场景:我同事用WSL1开发PHP项目时,发现数据库连接超时,检查后发现是虚拟网卡的DNS被篡改了,手动改成8.8.8.8后立马解决。

WSL2网络配置(进阶玩家版)

WSL2用的是Hyper-V虚拟化网络,配置要复杂些:

  • 打开.wslconfig文件(路径:C:\Users\你的用户名.wslconfig)
  • 添加以下配置:
    [wsl2]
    networkingMode=bridged
    vmSwitch=你的虚拟交换机名称
  • 重启WSL:wsl --shutdown后重新启动

避坑指南:有次我帮朋友配置时,发现他虚拟交换机名称写错了,结果WSL直接断网,建议用Get-VMSwitch命令确认交换机名称。

如何连接WSL网络-知识拓展-知识拓展

防火墙配置实战技巧

Windows防火墙经常成为WSL网络的"隐形杀手",我的配置步骤:

  1. 打开"高级安全Windows防火墙"
  2. 创建入站规则:
    • 协议:TCP
    • 端口:22(SSH常用端口)
    • 允许所有连接
  3. 创建出站规则:
    • 程序:C:\Windows\System32\wsl.exe
    • 允许所有连接

真实案例:上周帮客户排查问题时,发现他们公司防火墙把WSL的默认端口范围(32768-60999)全禁了,最后通过修改WSL配置文件指定固定端口才解决。

代理配置终极方案

对于需要代理上网的环境,推荐使用clash+wsl2-proxy组合:

  1. 安装Clash for Windows
  2. 配置WSL代理:
    export http_proxy=http://127.0.0.1:7890
    export https_proxy=http://127.0.0.1:7890
  3. 验证代理:curl ifconfig.me应显示代理IP

特殊场景:在高校实验室环境,需要认证才能上网,这时可以用cntlm做代理中转,具体配置可以参考我的另一篇文章《校园网WSL上网全攻略》。

常见问题Q&A

Q1:WSL2突然断网怎么办? A:先执行wsl --shutdown重启,再检查Windows服务里的"LxssManager"是否启动。

Q2:Docker Desktop和WSL2冲突怎么解决? A:在Docker设置里把网络模式改成"WSL 2 based engine",并确保Docker分配的子网和WSL不冲突。

Q3:如何让WSL和Windows共享网络? A:在WSL里执行netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=8080 connectaddress=192.168.1.100 connectport=80,就能把Windows的8080端口转发到Linux的80端口。

终极解决方案:一键脚本

实在搞不定?试试这个我写的批处理脚本:

@echo off
netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=80 connectaddress=172.217.160.78 connectport=80
netsh advfirewall firewall add rule name="WSL HTTP" dir=in action=allow protocol=TCP localport=80
wsl --shutdown
wsl

保存为fix_wsl_network.bat,双击运行就能解决80%的网络问题。

最后说句实在话,WSL网络配置确实比VMware麻烦点,但掌握这些技巧后,你会发现它比虚拟机轻量太多,建议大家收藏这篇文章,遇到问题随时翻出来对照解决,如果还有搞不定的,欢迎在评论区留言,我看到都会回复!

怎样安装Ubuntu子系统以实现其功能?
« 上一篇 2025-06-17
WSL运行脚本时其安全机制是如何发挥作用的?
下一篇 » 2025-06-17