最新版WSL启用Systemd和配置固定网络[WSL2.04]

最新版WSL启用Systemd和配置固定网络[WSL2.04]

WSL的安装最新版本:wsl --update --pre-release 可以让WSL更新到2.0以上
现在最新已到2.05

启用systemd

WSL2.0已支持Systemd,通过在子系统中配置wsl.conf来启用

  • 子系统中配置启用systemd脚本

    vi /etc/wsl.conf
    配置内容如下:
    [boot]
    systemd=true
    [network]
    generateResolvConf=false
    
  • 配置后重启重新进入子系统使配置生效

    wsl --shutdown

    wsl -d CentOS8

配置固定IP

WSL的网络模式默认为NAT模式,以下内容仅是NAT模式下的固定IP配置,mirrored(镜像网络模式)下目前未研究出来,有经验的童学可以告知下

  • wsl的版本

    >wsl --version
    WSL 版本: 2.0.4.0 
    内核版本: 5.15.123.1-1
    WSLg 版本: 1.0.58
    MSRDC 版本: 1.2.4485
    Direct3D 版本: 1.608.2-61064218
    DXCore 版本: 10.0.25880.1000-230602-1350.main
    Windows 版本: 10.0.22621.2428
    
  • 设置子系统添加固定IP地址

    1. 先进入子系统查看WSL NAT网络模式下默认初始的网络接口和IP网段
    C:\Users\Administrator>wsl -d CentOS8
    [root@VPC-CentOS8 Administrator]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.31.97.175  netmask 255.255.240.0  broadcast 172.31.111.255
            inet6 fe80::215:5dff:fe83:5152  prefixlen 64  scopeid 0x20<link>
            ether 00:15:5d:83:51:52  txqueuelen 1000  (Ethernet)
            RX packets 66  bytes 7174 (7.0 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 12  bytes 920 (920.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 4  bytes 538 (538.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 4  bytes 538 (538.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

    WSL默认NAT网络模式下,子系统启用的网络接口是eth0,IP和网段如下:

    inet 172.31.97.175 netmask 255.255.240.0 broadcast 172.31.111.255

  1. 查看windows的ipconfig
C:\Users\Administrator>ipconfig
     
     Windows IP 配置
     
     无线局域网适配器 WLAN:
     
        媒体状态  . . . . . . . . . . . . : 媒体已断开连接
        连接特定的 DNS 后缀 . . . . . . . :
     
     以太网适配器 本地连接-USB:
     
        连接特定的 DNS 后缀 . . . . . . . :
        本地链接 IPv6 地址. . . . . . . . : fe80::c551:735c:60f4:d8d8%7
        IPv4 地址 . . . . . . . . . . . . : 10.132.110.197
        子网掩码  . . . . . . . . . . . . : 255.255.255.0
        默认网关. . . . . . . . . . . . . : 10.132.110.1
     
     以太网适配器 vEthernet (Default Switch):
     
        连接特定的 DNS 后缀 . . . . . . . :
        本地链接 IPv6 地址. . . . . . . . : fe80::5978:de47:9ab4:16c5%13
        IPv4 地址 . . . . . . . . . . . . : 172.29.16.1
        子网掩码  . . . . . . . . . . . . : 255.255.240.0
        默认网关. . . . . . . . . . . . . :
     
     以太网适配器 vEthernet (WSL (Hyper-V firewall)):
     
        连接特定的 DNS 后缀 . . . . . . . :
        本地链接 IPv6 地址. . . . . . . . : fe80::e194:e598:ee70:8b49%32
        IPv4 地址 . . . . . . . . . . . . : 172.31.96.1
        子网掩码  . . . . . . . . . . . . : 255.255.240.0
        默认网关. . . . . . . . . . . . . :

可以看到windows下WSL初始了一个和子系统同网段的一个网络接口,

一般是以vEthernet (WSL开头,我以前的WSL版本是1.2.x时,它的名称是vEthernet (WSL),我升级到2.0.4了,现在显示是vEthernet (WSL (Hyper-V firewall))

  1. 给子系统添加固定ip

一般WSL初始的子系统ip虽然说是随机的,但我观察一般也没什么变化,为了以防万一,我们给添加一个固定IP:

wsl -d <子系统版本名> -u root ip addr add <固定IP>/<掩码> [broadcast <广播地址>] dev eth0 label eth0:1

示例:

  • 可以和现有ip同网段

    wsl -d CentOS8 -u root ip addr add 172.31.97.197/20 broadcast 172.31.111.255 dev eth0 label eth0:1

  • 也可以自定义新的网段

wsl -d CentOS8 -u root ip addr add 172.20.197.101/20 broadcast 172.20.197.255 dev eth0 label eth0:1

自定义新的网段的话,windows下对应的vEthernet (WSL)网络接口也要添加一个该网段的ip地址:

netsh interface ip add address "vEthernet (WSL (Hyper-V firewall))" 172.20.197.199 255.255.240.0

示例设置固定IP的批处理脚本
@echo off
chcp 65001
echo '初始CentOS8 IP'
wsl -d CentOS8 -u root ip addr | findstr "172.20.197.101" > nul
if !errorlevel! equ 0 (
    echo wsl ip has set,is:172.20.197.101
) else (
    wsl -d CentOS8 -u root ip addr add 172.20.197.101/20 broadcast 172.20.197.255 dev eth0 label eth0:1
    echo set wsl ip success: 172.20.197.101
)
ipconfig | findstr "172.20.197.199" > nul
if !errorlevel! equ 0 (
    echo windows ip has set,is:172.20.197.102
) else (
    netsh interface ip add address "vEthernet (WSL (Hyper-V firewall))" 172.20.197.199 255.255.240.0
    echo set windows ip success: 172.20.197.199
)
附windows添加删除网卡IP命令
  • 网卡添加IP

    netsh interface ip add address “网卡名称” IP 掩码 [网关]

    netsh interface ip add address "vEthernet (WSL (Hyper-V firewall))" 172.20.197.199 255.255.240.0

  • 删除网卡IP

    netsh interface ip delete address “网卡名称” IP 掩码 [网关]

    netsh interface ip delete address "vEthernet (WSL (Hyper-V firewall))" 172.20.197.199 255.255.240.0

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北海山人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值