文章目录
- 一、前言
- 二、使用
- 2.1 需要的系统信息
- 2.2 添加 .wslconfig 文件
- 三、如何从局域网访问WSL中的服务
一、前言
最近在使用
Linux开发板
的环境下,由于使用的WSL
的子系统,并不是虚拟机,导致网络传输
这方面不是很方便,由于WSL
只有一个网卡,也就是说要么net要么桥接,如果作为桥接到开发板,那么 WSL 就不能上网了,如果作为 net 那么就不能个开发板通讯了,一般情况下都是需要三个设备能相互 ping。这样才不会在开发的过程中出现问题。
在 Windows11 23 H2 版本,Windows11更新了 WSL 的网络连接方法:镜像模式
- 什么是镜像模式?
WSL的"镜像模式"是指WSL 2中的一种网络模式,使得WSL 2与Windows共享同一个局域网IP,支持代理、IPv6以及直接的局域网连接。这种模式的优势包括IPv6和多播支持、改进的VPN网络兼容性,以及从局域网连接到WSL VM和从Linux VM内部连接到Windows服务器的能力。
二、使用
2.1 需要的系统信息
首先,这项特性需要22621.2359及以上版本的Windows 11以及2.0以上版本的WSL。使用 wsl --version
命令可以检查是否符合需求,wsl --update
命令可以更新WSL。
wsl --version
WSL 版本: 2.0.9.0
内核版本: 5.15.133.1-1
WSLg 版本: 1.0.59
MSRDC 版本: 1.2.4677
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.22631.2787
2.2 添加 .wslconfig 文件
在 %UserProfile%
目录下新建一个 .wslconfig
文件,写入如下配置:
[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
hostAddressLoopback=true
networkingMode
:镜像网络模式dnsTunneling
:更改将 DNS 请求从 WSL 代理到 Windows 的方式autoProxy
:强制 WSL 使用 Windows 的 HTTP 代理信息firewall
:Windows 防火墙规则以及特定于 Hyper-V 流量的规则可以筛选 WSL 网络流量
这样设置之后,重新启动 wsl
,在 wsl
中查看 ip
地址,可以看到 wsl 的 ip 地址和 Windows 本机的 ip 地址就是一样的了 。
三、如何从局域网访问WSL中的服务
将 wsl 的网络模式改成镜像模式之后,当我们在 wsl 中启动一个允许局域网访问的web服务后,可以发现虽然 ip 地址是本机的 ip 地址,且在自带的 Windows 防火墙中已经开启了端口,还是无法从局域网中访问该服务。
是因为还有个名叫 Hyper-V 防火墙 (opens new window) 的东西。需要在该防火墙中开启需要向外暴露的端口。
我是直接把防火墙关了
文章是自己总结而记录,有些知识点没说明白的,请各位看官多多提意见,多多交流,欢迎大家留言
如果技术交流可以加以下群,方便沟通
QQ群:370278903
点击链接加入群聊【蜡笔小芯的嵌入式交流群】