当前位置:   article > 正文

wsl2设置静态IP

wsl2设置静态ip


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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这里的固定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
  • 1
  • 2
  • 3

这样就可以在启动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
  • 1

这句是注释了的,是因为打开也根本不起作用。/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
  • 1
  • 2
  • 3
  • 4

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

[network]
generateResolvConf = false
  • 1
  • 2

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

sudo rm /etc/resolv.conf
  • 1

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

nameserver 192.168.8.1
  • 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

wsl -d Ubuntu-20.04 -u root service ssh start
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/922874
推荐阅读
相关标签
  

闽ICP备14008679号