Windows11系统配置WSL2网络使它支持LAN访问

2024-05-14 22:52

本文主要是介绍Windows11系统配置WSL2网络使它支持LAN访问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、WSL2安装
  • 二、使用步骤
    • 1.NAT
    • 2.镜像
  • 三、写在最后
  • 总结


前言

WSL2的出现感觉真的是一个惊喜,又想玩Linux,又怕日用搞不了的最佳替代方案。而且经过测试WLS2除了IO性能略弱以外,其它的性能损失的真不多。生产力几乎全线支持,甚至核AI开发息息相关的CUDA也支持。

我曾经好几次使用Windows+WSL2的组合解决很多问题,今天就重点说下WSL2的网络问题,给不太懂的小伙伴提供点有价值的经验。


一、WSL2安装

这里只说网络配置,安装我的其它帖子有,不会的可以先移步看下教程。

二、使用步骤

SSH(默认22端口)当例子,当然现实可能使用Nginx代理的情况更多,原理是一样的。目前WSL2支持两种方式允许LAN访问。所谓LAN访问就是跟你的Windows主机一个局域网的设备直接访问WSL2,就相当于替代了完整的Linux的功能。

1.NAT

网路地址转换,这个是默认支持的方式。Windows为WSL2的实例创建了一个虚拟网卡,这个虚拟网卡和Windows的物理网卡不是一个,但是它们可以互通

你再WSL2实例里面使用ifconfig看下网卡信息会发现一般都是172开头的,显然和你的Windows以太网卡不是一个网段。

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 172.24.34.81  netmask 255.255.240.0  broadcast 172.24.47.255inet6 fe80::215:5dff:fe11:5b4  prefixlen 64  scopeid 0x20<link>ether 00:15:5d:11:05:b4  txqueuelen 1000  (Ethernet)RX packets 221  bytes 187749 (187.7 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 107  bytes 9147 (9.1 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

这个时候你可以在Windows里面访问WSL2的任何端口,但是和你的Windows设备同网段的设备不能访问WSL2的端口,哪怕你在WSL2里面绑定的是全地址也不行,比如*:22

COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    229 root    3u  IPv4  17708      0t0  TCP *:ssh (LISTEN)
sshd    229 root    4u  IPv6  17710      0t0  TCP *:ssh (LISTEN)

办法还是有的,巨硬已经给我们了。没错,就是通过Windows端口映射WSL2里面的端口到Windows本地,当然Windows也得配全地址

具体命令如下:

注意:需要管理员权限!

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=22 connectaddress=(wsl hostname -I)

字段解释:

netsh interface portproxy add v4tov4:这个是添加IPV4地址的意思,保持不变。
listenport:Windows的代理端口,LAN访问通过这个端口
listenaddress:Windows代理的地址,0.0.0.0是全地址,还可以指定地址,但一定是可访问的
connectport:WSL2里面绑定的端口,比如SSH
connectaddress:WSL2的实例的IP地址,你也可以通过ifconfig查看并指定绑定哪个地址

配置好后就是下面的样子:

在这里插入图片描述

注意:Windows映射的端口不能被其它程序占用,否则失败!

2.镜像

这个网络架构是后来出的,不是所有的版本都支持的,需要Windows11 22H2+版本才行。它的方案和NAT完全不是一回事,它将 Windows 上的网络接口“镜像”到 Linux 中,以添加新的网络功能并提高兼容性。

要使用这个功能你需要在Windows的用户目录创建一个文件,名字叫.wslconfig。它的名字就叫.wslconfig,没有其它的后缀什么的。然后再里面配置以下命令:

# Settings apply across all Linux distros running on WSL 2
[wsl2]#如果值为 mirrored,则会启用镜像网络模式。 默认或无法识别的字符串会生成 NAT 网络。
networkingMode=mirrored
#networkingMode=NAT

配置好之后一定要执行wsl --shutdown,然后再重新启动WSL2实例。启动完成后你看到的网络配置长下面这样:

eth2(或者叫其它的名字)就是你的Windows的以太网的镜像,它的IP地址和你的Windows地址一模一样。

eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 10.0.20.52  netmask 255.255.255.0  broadcast 10.0.20.255inet6 fe80::9672:e4cf:652d:1d8a  prefixlen 64  scopeid 0x20<link>ether 70:b5:e8:88:0d:5e  txqueuelen 1000  (Ethernet)RX packets 38  bytes 13077 (13.0 KB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 53  bytes 6194 (6.1 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0loopback0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether 00:15:5d:c0:0c:af  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

这个模式除了需要Windows11 22H2这个硬性要求外,几乎不需要额外配置,你在WSL2里面绑定的任何端口都可以通过LAN直接访问*

注*:防火墙配置必须能够放行,以后再讨论防火墙问题,很多人可能不会在WSL2里面配置防火墙,保持默认即可。

三、写在最后

不管哪种方式配置,注意你都是共用Windows的以太网带宽,你要注意带宽瓶颈。只能说这种方式提供一种测试的或小型网络需求,但是无疑给你提供了非常好的测试平台,你只需要一台支持WSL2的Windows电脑就搞定了。


总结

1、目前只支持这两种方式,后续有新的再说。

这篇关于Windows11系统配置WSL2网络使它支持LAN访问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990082

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

MySQL中的InnoDB单表访问过程

《MySQL中的InnoDB单表访问过程》:本文主要介绍MySQL中的InnoDB单表访问过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、访问类型【1】const【2】ref【3】ref_or_null【4】range【5】index【6】

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o