2025年wsl2 固定ip_wsl2 ssh

wsl2 固定ip_wsl2 ssh在使用 win10 上的 WSL2 时遇到了一个问题 每次重启电脑或 wsl2 后 wsl2 子系统的 ip 地址就会发生改变 后来在 wsl 的 github 上找到了相关的解决方案 WSL2 固定 ip 地址 当前问题 解决方案 当前问题 在使用 win10 的 wsl2 子系统时 windows 会通过虚拟交换机给 win10 本机与 wsl2 子系统各自会分配一个 ip 地址 当 windows 电脑重启并再次打开 wsl2 时


在使用win10上的WSL2时遇到了一个问题:每次重启电脑或wsl2后,wsl2子系统的ip地址就会发生改变。后来在wsl的github上找到了相关的解决方案。

WSL2固定ip地址

当前问题

解决方案

当前问题

在使用win10的wsl2子系统时,windows会通过虚拟交换机给win10本机与wsl2子系统各自会分配一个ip地址,当windows电脑重启并再次打开wsl2时,虚拟交换机会被重新创建,分配给它们的ip地址也会随着改变。

目前我在wsl2上安装了docker环境,启动了一个mysql容器并映射了3306端口到docker宿主机的33306,这样windows可以通过wsl2-ip:33306访问mysql,docker容器之间也可以通过wsl2-ip:33306访问mysql。 但是wsl2子系统的ip地址不固定,导致每次重启wsl2都会查看当前的ip地址并修改相关链接配置,十分不方便。

解决方案

解决方案是我在wsl的github上的issue上看到的 ===> 传送门。
方案的大致内容就是:既然固定不了wsl2的ip地址,那么就在启动wsl2后主动给它设置一个ip地址。

我按照上面的思路并结合自己的需求编写了一个简单的bat脚本,每当我开机后需要用到docker时就执行该脚本,这样就能够通过固定的ip地址去访问服务了。

@echo off
setlocal enabledelayedexpansion

wsl -u root service docker start | findstr "Starting Docker" > nul
if !errorlevel! equ 0 (
echo docker start success
:: set wsl2 ip
wsl -u root ip addr | findstr "192.168.169.2" > nul
if !errorlevel! equ 0 (
echo wsl ip has set
) else (
wsl -u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1
echo set wsl ip success: 192.168.169.2
)


:: set windows ip
ipconfig | findstr "192.168.169.1" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 192.168.169.1 255.255.255.240
echo set windows ip success: 192.168.169.1
)
)
pause

自己首先划定了一个虚拟的局域网络 192.168.169.1/28,然后将192.168.169.1分配给了windows,192.168.169.2分配给了wsl2,这样就可以通过指定的ip地址访问相应系统上的服务了。

上述的ip地址可以自己自定,只要不跟已有局域网络相冲突即可。

编程小号
上一篇 2025-02-11 18:11
下一篇 2025-02-09 11:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/115240.html