? 在使用Windows的wsl時,經(jīng)常需要Linux子系統(tǒng)和Windows宿主機之間通信。但wsl默認(rèn)情況下,Linux子系統(tǒng)和Windows vEthernet虛擬適配器的IP每次啟動后都不一樣。給很多應(yīng)用帶來不便。在百度上很多解決方法,經(jīng)過之次嘗試,認(rèn)為下面的方法簡單有效。
我解決此問題時的系統(tǒng)環(huán)境:
宿主機:Windows 10 專業(yè)版 22H2 操作系統(tǒng)內(nèi)部版本:19045.2311
子系統(tǒng):Ubuntu 22.04.1 LTS Linux version 5.10.16.3-microsoft-standard-WSL2 (oe-user@oe-host)
1.設(shè)置Windows vEthernet為固定IP
2. 確認(rèn)Linux子系統(tǒng)的名稱
? 打開Windows命令提示符查看Linux子系統(tǒng)名稱
C:\Users\zhangcheng>wsl -l
適用于 Linux 的 Windows 子系統(tǒng)分發(fā)版:
Ubuntu (默認(rèn)) #記住這個名稱,腳本里要用
docker-desktop-data
docker-desktop
3. 編寫一個bat腳本并執(zhí)行
?
? 打開記事本,把下面這段代碼按照自己的運行環(huán)境配置。
@echo on
REM 先關(guān)閉虛擬子系統(tǒng)
wsl --shutdown
REM 以下的Ubuntu為第2步查到的Linux子系統(tǒng)名稱
REM IP地址根據(jù)自己的需要配置
wsl -d Ubuntu -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d Ubuntu -u root ip addr add 172.30.16.2/24 broadcast 172.30.16.255 dev eth0
wsl -d Ubuntu -u root ip route add 0.0.0.0/0 via 172.30.16.1 dev eth0
powershell -c "Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 172.30.16.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 172.30.16.0/24;"
REM 啟動對應(yīng)Linux系統(tǒng)
wt -p Ubuntu
? 保存成.bat文件后右擊選擇“以管理員身份運行”。再次打開Ubuntu就是腳本里指定的IP了。文章來源:http://www.zghlxwxcb.cn/news/detail-408010.html
Done.文章來源地址http://www.zghlxwxcb.cn/news/detail-408010.html
到了這里,關(guān)于Windows中wsl2為虛擬Linux子系統(tǒng)設(shè)置固定IP的方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!