Win11 WSL2 启用 systemd 及设置静态 / 固定 IP

一、以管理员身份打开 Windows 终端

默认情况下,鼠标右击桌面弹出的快捷菜单上有一项 “在终端中打开”,点击它后就会启动 Windows 终端。此时的终端并不是以管理员身份运行的

点击 Windows 终端标题栏上的 “∨” 符号以展开菜单,然后点击 “设置”。

在 “设置” 窗口左侧栏 “配置文件” 下找到 “Windows PowerShell” 并点击它,然后在右侧找到 “以管理员身份运行此配置文件” 并点击开关按钮将其置于 “开” 状态。然后点击 “保存”,最后点击右上角“X” 关闭它。至此,以后开启的 Windows 终端就都是以管理员身份运行的了。

 二、配置 vEthernet (WSL) 虚拟网卡 IP

由于每次执行 wsl ~ 命令进入 WSL2 子系统后,宿主机就自动创建了一个名为 “vEthernet (WSL)” 的隐藏的虚拟网卡(需要在终端执行 Get-NetAdapter -IncludeHidden 才能列出来),该虚拟网卡默认被系统随机分配了一个 IPv4 地址,该 IP 也自动成为了 WSL2 中的 Linux 子系统的 DNS。由于该虚拟网卡的 IP 存储策略(PolicyStore)始终无法设置成 PersistentStore,导致每次重启宿主机后 IP 依旧变动。因此,我们需要在桌面新建一个 wsl2.ps1 脚本,然后复制粘贴以下命令后保存并关闭脚本。接着,在上一步以管理员身份打开的 Windows 终端中执行 Set-ExecutionPolicy Unrestricted 以放开运行脚本权限。最后,在终端中执行 .\Desktop\wsl2.ps1 以运行该脚本(注:宿主机每次重启后都必须运行 1 次该脚本)

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

Write-Host "固定 IP: 192.168.23.1 配置完成";
Start-Sleep –s 3;
Set-ExecutionPolicy Undefined;

三、启用 systemd 及禁止 WSL2 自动生成 /etc/resolv.conf 文件

在 Windows 终端中执行 wsl ~ 以启动并进入 Linux 子系统(本例为 Ubuntu-22.04),执行以下命令。

vi /etc/wsl.conf
# 粘贴以下内容后保存并退出编辑
[boot]
systemd=true
[network]
generateResolvConf = false

执行 exit 退出子系统,然后依次执行 wsl --shutdownwsl ~ 使配置生效。

四、设置静态 IP、广播 IP、网关、代理、DNS

设置静态 IP、广播 IP、网关、代理。执行如下命令。 

vi /etc/profile
# 粘贴如下内容至文件末尾后保存并退出编辑
# static ip
if [ "$(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | head -n 1)" != "192.168.23.2/24" ];
then
    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.23.2/24 broadcast 192.168.23.255 dev eth0
    sudo ip route add 0.0.0.0/0 via 192.168.23.1 dev eth0
fi

# add for proxy(可选,用于对接 v2rayN)
export hostip=$(ip route | grep default | awk '{print $3}')
export hostport=10808
alias proxy='
    export HTTPS_PROXY="socks5://${hostip}:${hostport}";
    export HTTP_PROXY="socks5://${hostip}:${hostport}";
    export ALL_PROXY="socks5://${hostip}:${hostport}";
    echo -e "Acquire::http::Proxy \"http://${hostip}:${hostport}\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null;
    echo -e "Acquire::https::Proxy \"http://${hostip}:${hostport}\";" | sudo tee -a /etc/apt/apt.conf.d/proxy.conf > /dev/null;
'
alias unproxy='
    unset HTTPS_PROXY;
    unset HTTP_PROXY;
    unset ALL_PROXY;
    sudo sed -i -e '/Acquire::http::Proxy/d' /etc/apt/apt.conf.d/proxy.conf;
    sudo sed -i -e '/Acquire::https::Proxy/d' /etc/apt/apt.conf.d/proxy.conf;
'

设置 DNS。执行如下命令。

vi /etc/resolv.conf
# 粘贴如下内容后保存并退出编辑
# 114公共DNS: 114.114.114.114 和 114.114.115.115
# 阿里DNS: 223.5.5.5 和 223.6.6.6
# 腾讯DNS: 119.29.29.29 和 182.254.116.116
# 百度DNS(最快): 180.76.76.76
# 谷歌DNS: 8.8.8.8 和 8.8.4.4
nameserver 180.76.76.76
nameserver 8.8.8.8

执行 exit 退出子系统,然后依次执行 wsl --shutdownwsl ~ 使配置生效。然后执行 ip addr 即可列出更改后的静态 IP。最后执行 ping www.baidu.com 以验证是否可以访问互联网。

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在WSL 2中设置静态IP,需要进行以下步骤: 1. 打开Windows Terminal或其他终端应用程序,并在其中启动WSL 2。 2. 运行以下命令以安装所需的软件包: ``` sudo apt update sudo apt install net-tools ``` 3. 通过运行以下命令,查找要配置静态IP的网络接口的名称: ``` ip link ``` 通常情况下,该接口的名称类似于“eth0”或“wsl0”。 4. 运行以下命令以编辑网络接口的配置文件: ``` sudo nano /etc/network/interfaces ``` 5. 在文件中添加以下行,替换为您要使用的IP地址、网关和DNS服务器的值: ``` auto <接口名称> iface <接口名称> inet static address <IP地址> netmask <子网掩码> gateway <网关地址> dns-nameservers <DNS服务器地址> ``` 例如,如果要将静态IP地址设置为“192.168.1.100”、“255.255.255.0”子网掩码、“192.168.1.1”网关和“8.8.8.8”DNS服务器,则应添加以下行: ``` auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 ``` 6. 保存文件并退出编辑器。 7. 运行以下命令以重启网络服务: ``` sudo service networking restart ``` 8. 确认静态IP地址是否已成功设置,可以通过运行以下命令来检查: ``` ip addr show <接口名称> ``` 例如,如果要检查名为“eth0”的接口,则应运行以下命令: ``` ip addr show eth0 ``` 如果一切正常,则应该看到接口已配置为使用静态IP地址。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值