固定ip_如何在windows10 自带的wsl2 中解决固定ip的问题

本文介绍了如何在Windows 10的WSL2环境中设置固定IP,以便通过宿主机访问WSL2中的Docker容器。由于WSL2依赖于Hyper-V,每次重启会导致设置的IP被重置。解决方案是在启动时手动为vEthernet (WSL) 和 wsl2的eth0分配IPv4地址,通过PowerShell命令行进行设置。为了保持IP有效,可以将这些命令放入.bat文件并设置为开机启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

5822a83c3e49633737839d0c1b0c5d90.png

在windows 上要友好的使用docker,有在linux上的丝滑体验那简直是难于上青天!!!

不过呢好在能勉强用吧。如果是能在这个wsl2中实现设置固定ip访问,使得我们能通过windows10这个宿主机访问wsl2中的docker 容器,例如安装了redis,要在windows10上的开发中使用它。这就让wsl2瞬间香了,可这是个难题,巨硬自己都没有解决。原因在于我们使用的wsl2是由windows 的Hyper-V 虚拟平台创建,每次重启windows之后Hyper-V 会重新启动,自然wsl2之前设置好的固定ip也会被重置,所以直接在wsl2中设置这个固定ip得不到吃。

a945de477c12ce7f6765efedaa6dc216.png

那有没有其他的替代解决方案呢?请看下面:

根据wsl在github上的issues中我们可以找到有人已经有办法解决了,原理是在启动系统的时候手动重新给win10 的vEthernet (WSL) 和 wsl2下的eth0 添加一个ipv4地址。

那要怎么手动设置呢? 

024ca90e01fb6855341b804627ad2be4.png

在powershell 中执行下面两行命令即可:

# 给wsl 中的ubuntu 设置ipv4 的ip 192.168.86.16,要在windows中访问wsl就用此ip

wsl -d Ubuntu -u root ip addr add 192.168.86.16/24 broadcast 192.168.50.255 dev eth0 label eth0:1# 给windows 设置ipv4 的ip 192.168.86.88,要在wsl中访问宿主机就用此ipnetsh interface ip add address "vEthernet (WSL)" 192.168.86.88 255.255.255.0

通过以上方式就能零时的设置windows 10 方法wsl2 的ip,和wsl2访问windows 10 的ip。

d03ed4db28d3ab6b4fbc6c91c6497c67.png

e03eb8eb3ce3e34da8c32c20c0ddef15.png

由于每次电脑重启后上面的ip都会失效,所以可以将上面的脚本放在一个.bat文件中,并设置为开机启动执行即可。不行你们试试,效果很好。

f009b330486716db7f273fcfc525cb46.png


? ? 扫码关注获后获取更多精彩内容!!!!❤️ ❤️

687fd31a4f7fc5592e73f18c83721745.png

——————感觉还不错请点这里点赞⇊⇊
### WSL 网络适配器与 Windows 主机网络适配器的协同工作 WSLWindows Subsystem for Linux)通过其内置的虚拟网络接口与主机系统的网络适配器进行通信。以下是关于两者关系以及配置方法的具体说明: #### 虚拟网络架构 WSL 使用了一种名为 `vEthernet` 的虚拟以太网适配器来实现与宿主系统之间的网络连接。这种虚拟适配器由 Hyper-V 提供支持,允许 WSL 实例访问外部网络资源。默认情况下,WSL 会自动获取一个私有 IP 地址,该地址通常位于宿主机器上 vEthernet 接口所定义的子网范围内。 要查看当前 WSL 中分配到的 IP 地址,可以运行以下命令: ```bash ifconfig ``` 如果发现此工具不可用,则需先安装它: ```bash sudo apt-get update && sudo apt-get install net-tools -y ``` 此外,在 Windows 上也可以通过 PowerShell 或 CMD 查询对应的虚拟交换机名称及其设置详情: ```powershell Get-NetAdapter | Where-Object {$_.Name -like "*Hyper-V Virtual Ethernet Adapter*"} ``` #### 自动化 DNS 和路由表管理 当启动任何基于 WSL2 的发行版时,微软设计了一个机制让这些环境继承自父级操作系统的网络参数设定,比如 DNS 服务器列表、默认网关等信息都会同步过来。因此大多数时候无需手动干预即可正常上网浏览网页或是克隆 Git 库等内容[^1]。 不过对于更复杂的场景如端口转发或者静态IP需求来说可能就需要额外调整了: ##### 设置固定的内部 IPv4 地址 (适用于开发测试用途) 编辑 `/etc/wsl.conf` 文件加入如下内容: ```ini [network] generateResolvConf = false hostname = your-hostname interfaces = ["eth0"] ``` 接着重启服务并指定所需的 ip range : ```bash wsl --shutdown netsh interface ipv4 set address name="vEthernet (WSL)" static 192.168.x.y mask=255.255.255.0 gateway=192.168.x.z ``` 注意替换上述模板中的变量部分为实际适用数值。 ##### 开启文件共享功能 为了便于跨平台协作交流文档资料之类的事务,默认状态下关闭了 SMB 协议的支持;我们可以通过修改注册表项开启这项特性。 打开 regedit 导航至路径 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters 创建DWORD 值命名为 "SmbDirect" 并赋值为零表示禁用直通模式从而兼容旧版本客户端请求[^3]. 最后记得防火墙规则里放行相应的tcp/udp端口号区间以免阻碍正常使用体验. --- ### 总结 综上所述,虽然理论上讲WSL自带的基础联网能力已经足够满足日常轻量化的任务执行要求但是针对特定业务逻辑还是有必要深入理解背后原理进而采取针对性措施优化整体性能表现效果最佳.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值