跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 终于找到给 wsl2 分配固定 ip 的方法
未分類
29 1 月 2021

终于找到给 wsl2 分配固定 ip 的方法

终于找到给 wsl2 分配固定 ip 的方法

資深大佬 : BeautifulSoap 10

泪流满面,每次重启电脑就会给 wsl2 分配一个随机的 ip 段,这导致了非常多问题

然后搜过之后,大部分方法全是清一色编辑 win10 的 hosts 文件自定义个域名(如 wsl.net 之类的),然后每次重启后更新这个域名的 ip 。但问题是我需要的固定 ip,而不是 DDNS,这类解决方法对于解决问题于事无补

这几天重翻 wsl 的 issue,终于找到了梦寐以求的解决办法。cmd/powershell 管理员权限执行这两行命令( ip 和 wsl 发行版名称根据自己的实际情况做出更改):

wsl -d Ubuntu -u root ip addr add 192.168.50.16/24 broadcast 192.168.50.255 dev eth0 label eth0:1  netsh interface ip add address "vEthernet (WSL)" 192.168.50.88 255.255.255.0  

唯一不足是重启后会失效,所以把这两行命令保存为 bat 文件加入系统自启项,每次重启后让它自动设置就行了。这样你的 wsl2 终于有了个固定 ip 。泪流满面

出处: https://github.com/microsoft/WSL/issues/4210#issuecomment-648570493

大佬有話說 (11)

  • 資深大佬 : chnyuwen

    我都不关机,没这个问题….
    这里有个项目关于 wsl2 自动更新 host 的项目 https://github.com/shayne/go-wsl2-host

  • 資深大佬 : chnyuwen

    我一直用 localhost 访问的 wsl2 下开放的端口,想了解使用固定 ip 的原因是什么?
    我很久以前只遇到过一次 idea 用 localhost 连接 wsl2 docker 下的 mysql 连接失败的问题,改成 wsl2 的 ip 就好了

  • 主 資深大佬 : BeautifulSoap

    @chnyuwen 就随便举个例子,我想把 wsl2 中的文件,通过 samba 共享给我的局域网,或者贡献给同一台电脑中另外的虚拟机,没有固定 ip 的话根本做不到

  • 資深大佬 : baobao1270

    个人感觉这个方法十分 Dirty,因此放弃了 WSL2 转回了 WSL1+需要时用 VM……

    搞不懂为啥每次重启 vEthernet (WSL) 和 vEthernet (Default) 都会重置……

  • 主 資深大佬 : BeautifulSoap

    @baobao1270 可能微软不希望 wsl2 的 ip 过于固定,导致影响到同类业务的市场吧,只能这么想了。因为怎么想固定 ip 都不是个技术问题

    至于 dirty 不 dirty,wsl 无法运行 docker,想跑 wsl backend 的 docker 也只能用 wsl2 了

  • 資深大佬 : Jisxu

    有一个比较曲折的方法:
    windows 端,用 nssm 将 frps 注册为服务并随开机启动
    wsl 端,安装并启动 frpc,注册到 frps 上,然后 frpc 开机启动,我用的 archwsl,支持 stystemd,直接 enable 即可
    这样一搞,无论 wsl 的 ip 怎么变,都和我无关,唯一需要固定是应该就是 windows 端网卡的 ip 了

  • 主 資深大佬 : BeautifulSoap

    @Jisxu 额,不知道你有没有用过 wsl2,你说的这功能 wsl2 早就已经自带了,而且还根本不用配置 frp

    win10 端想要访问 wsl2 的端口的话,直接通过 localhost:xxx 就能访问到 wsl2 中对应的 xxx 端口,会自动进行转发。
    局域网的话则可以通过 win10 局域网 ip:xxx 的方式访问到 wsl2 中的端口。

    你谈到的配置 frp 和 wsl2 自带的流量转发从功能上讲是一模一样的,对于需要固定 ip 的人来说依旧是没有解决根本问题

  • 資深大佬 : forbxy

    最近用虚拟机完全替代了 wsl 了,主要是 systemd 用习惯了,还有子系统想迁移到另外一台机器太麻烦了
    0 、虚拟机从路由器分配固定 ip
    1 、windows terminal 新增一个 tab,内容为 ssh.exe 远程登录虚拟机
    2 、虚拟机挂载所有磁盘到 /mnt/hgfs/{c,d,e,f}
    3 、RaiDrive 将虚拟机磁盘映射为 windows 网络磁盘 I
    4 、windows 上 pycharm 打开网络磁盘上的项目,设置虚拟机的 python 解释器。设置 deployment 文件映射,关闭自动上传

    丝滑体验

  • 主 資深大佬 : BeautifulSoap

    @forbxy wsl 不太清楚(似乎需要把整个系统打包成 tar ),但是 wsl2 迁移的话倒是真的简单,直接把 vhdx 文件复制到别的电脑里改下设置就行了(和虚拟机的迁移一样)

    以前我也是跑完整的 linux 虚拟机的,但是 wsl2 backend 的 docker 体验太好了,之后就直接全迁移到 wsl2 了

  • 資深大佬 : baobao1270

    @BeautifulSoap 算半个技术问题,因为 Hyper-V 的交换机是在系统启动后才初始化的,为了防止 IP 冲突就得每次自动随机出一个 IP 来。但是手动创建的虚拟交换机不受影响

  • 主 資深大佬 : BeautifulSoap

    @baobao1270 这不是技术问题,wsl2 初始化的时候随机一个未使用 ip 段确保不出现冲突然后不变就行了。为了不出现 ip 冲突就每次重启都删了 wsl 的虚拟交换机然后重新创建实在太因噎废食了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具