每次启动wsl下ubuntu服务器都会变更ip,如何固定其ip地址?

发布于 2022-05-24 20:52:04

既然 WSL2 会在启动时做网络适配器的配置,那么我们只需要在启动后重新为其配置网络就可以了。

首先,我们假定我们要将 WSL2 的网关设置为 192.168.50.1,并为 WSL2 分配 192.168.50.2 的 IP 地址,那么我们进入 WSL2 之后,执行以下命令即可:

sudo ip addr del $(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1) dev eth0
sudo ip addr add 192.168.50.2/24 broadcast 192.168.50.255 dev eth0
sudo ip route add 0.0.0.0/0 via 192.168.50.1 dev eth0
sudo echo nameserver 192.168.50.1 > /etc/resolv.conf

上述命令首先删除掉 WSL2 已经配置的 IP 地址,然后为其分配 192.168.50.2/24,最后配置路由并指定 DNS Server。

这样配置完成后,你会发现 WSL2 内连不了网了。这是因为我们还没有对 WSL2 使用的 Internal Virtual Switch 进行配置。

打开 PowerShell,执行以下命令:

Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False
New-NetIPAddress -IPAddress 192.168.50.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'
Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False
New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.50.0/24;

上述命令中,首先找到 vEthernet (WSL) 这个网络适配器,然后将其所有已有的 IP 地址删除,然后为其添加 192.168.50.1/24 的 IP 地址。

最后设置 NAT:首先删除名字叫做 WSLNat 的 NAT(因为我们后续创建的 NAT 名字叫做 WSLNat,这些命令每次启动系统后都需要执行,因此可能系统中已经存在名为 WSLNat 的 NAT 了,为了防止冲突,如果存在的话就先删掉) ,然后创建一个名字叫做 WSLNat 的 NAT,设置内部地址为 192.168.50.0/24。

上述命令全部执行完成后,WSL2 将恢复网络连接。至此,你可以通过 192.168.50.2 从 Windows 下访问 WSL2(由于 Windows 会为 WSL2 自动配置端口转发,因此也可以直接访问 localhost 访问里面的应用),通过 192.168.50.1 从 WSL2 访问 Windows 了。

Bug天天改,头发日日疏,码字不易,如果有帮助到你,就点击"下方感谢"支持一下把.

©声明:本站所有文章,如无特殊说明或标注,均为izhnagbo.cn原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。本文链接 https://izhangbo.cn/article/54.html
2 条评论

学习
记录

发布
问题