给windows宿主机和wsl2的ubuntu-20.04分配固定IP,使能相互ping通
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给windows宿主机和wsl2的ubuntu-20.04分配固定IP,使能相互ping通相关的知识,希望对你有一定的参考价值。
我们知道wsl2是基于hyper-v的虚拟机,每次重新启动的时候,都会重新拉一个新的hyper-v虚拟机实例,然后虚拟网卡的IP是dhcp随机分配的,如果作为开发系统用,就会比较烦每次都要换一个IP。
有人提供了个脚本,他写了个bat脚本在windows里面把wsl拉起来,同时用root权限给wsl实例分配了一个固定的IP,然后在windows宿主分配了一个同网段的IP,实现了固定IP访问wsl。 这个脚本我研究了一下,在wsl拉起来的时候,可以顺便把需要启动的服务,比如docker拉起来,这样同时也解决了wsl不支持systemd服务自启动问题。
@echo off
setlocal enabledelayedexpansion
:: 重新拉起虚拟机,并且用root身份,启动ssh服务和docker服务
wsl -u root service docker start | findstr "Starting Docker" > nul
if !errorlevel! equ 0 (
echo docker start success
:: 设置wsl2虚拟机ubuntu的ip
wsl -u root ip addr | findstr "192.168.10.101" > nul
if !errorlevel! equ 0 (
echo wsl ip has set
) else (
:: 没有的话给安排上
wsl -u root ip addr add 192.168.10.101/24 broadcast 192.168.10.0 dev eth0 label eth0:1
echo set wsl ip success: 192.168.10.101
)
:: 设置windows宿主机网卡vEthernet (WSL)的IP,与虚拟机同一网段
ipconfig | findstr "192.168.0.102" > nul
if !errorlevel! equ 0 (
echo windows ip has set
) else (
netsh interface ip add address "vEthernet (WSL)" 192.168.10.102 255.255.255.0
echo set windows ip success: 192.168.10.102
)
)
pause
右键点击脚本,”以管理员身份运行“,就能完成设置。这样,在WSL虚拟机ubuntu中,网卡eth0有两个IP,其中172.19.62.245用于和互联网通信,192.168.10.101用于和windows宿主机通信。
# ip a
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:9e:9a:db brd ff:ff:ff:ff:ff:ff
inet 172.19.62.245/20 brd 172.19.63.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.10.101/24 brd 192.168.10.0 scope global eth0:1
valid_lft forever preferred_lft forever
以上是关于给windows宿主机和wsl2的ubuntu-20.04分配固定IP,使能相互ping通的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 127.0.0.1 从 Windows 主机访问在 WSL2 中运行的服务?
WSL2 jupyter notebook 在windows主机打开
在 Linux 主机上运行的 Windows 10 来宾 VM 中运行 WSL2