wsl2设置静态IP

47 篇文章 7 订阅


WSL2每次启动后的IP都不固定,如果需要一个固定的IP,需要做一些设置。

一、创建批处理文件设置静态IP

可以创建一个批处理文件,比如:E:\Ubuntu\ubuntu_static_ip.bat,内容如下:

@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
wsl -d Ubuntu-20.04 -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d Ubuntu-20.04 -u root ip addr add 192.168.8.2/24 broadcast 192.168.8.255 dev eth0
wsl -d Ubuntu-20.04 -u root ip route add 0.0.0.0/0 via 192.168.8.1 dev eth0
::wsl -d Ubuntu-20.04 -u root echo nameserver 192.168.8.1 ^> /etc/resolv.conf
powershell -c "Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 192.168.8.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.8.0/24;"
exit

这里的固定IP为192.168.8.2,网关为:192.168.8.1,然后在Ubuntu系统中编辑~/.bashrc,添加如下内容:

if [ `hostname -I` != 192.168.8.2 ]; then
     cmd.exe /c "E:\Ubuntu\ubuntu_static_ip.bat" 1>nul
fi

这样就可以在启动wsl2的时候自动设置IP地址为192.168.8.2了。

二、设置DNS

但是无法使用DNS上网,原因是/etc/resolv.conf中的nameserver不是192.168.8.1,从内容中可以看到有一句:

::wsl -d Ubuntu-20.04 -u root echo nameserver 192.168.8.1 ^> /etc/resolv.conf

这句是注释了的,是因为打开也根本不起作用。/etc/resolv.conf只是一个软链接,实际文件是/run/resolvconf/resolv.conf,可以打开看到内容中有一句话:

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.30.208.1

即此文件是WSL自动生成的,如果想不自动生成,可以建立一个文件:/etc/wsl.conf,内容为:

[network]
generateResolvConf = false

则不会自动生成/run/resolvconf/resolv.conf。
由于原来的/etc/resolv.conf是一个软链接,需要删除它,重新创建一个真正的文件

sudo rm /etc/resolv.conf

然后新建一个/etc/resolv.conf,内容如下:

nameserver 192.168.8.1

即设定nameserver为我们指定的的网关。这样就可以正常上网了:

$ ping 163.com
PING 163.com (123.58.180.8) 56(84) bytes of data.
64 bytes from 123.58.180.8 (123.58.180.8): icmp_seq=1 ttl=53 time=38.1 ms
64 bytes from 123.58.180.8 (123.58.180.8): icmp_seq=2 ttl=53 time=37.9 ms
64 bytes from 123.58.180.8 (123.58.180.8): icmp_seq=3 ttl=53 time=37.6 ms
64 bytes from 123.58.180.8 (123.58.180.8): icmp_seq=4 ttl=53 time=43.6 ms
64 bytes from 123.58.180.8 (123.58.180.8): icmp_seq=5 ttl=53 time=37.4 ms

btw:如果想在启动的时候顺便启动ssh服务,可以在前面的批处理文件中添加一句指令:

wsl -d Ubuntu-20.04 -u root service ssh start
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值