Windows 实现wsl2固定ip地址,并实现与hyper-v、主机之间实现通信

注:以下操作统一采用默认nat网络模式进行(也可采用wsl mirrored网络模式进行互相通信,但该模式不稳定且容易出现较多问题),检查下wsl默认创建的虚拟交换机名是否为WSL,如果是WSL (Hyper-V firewall)则需关闭启用Hyper-V防火墙或修改防火墙规则,否则会导致统一ip段后无法正常通信

默认创建的交换机名分为三种:
1.vEthernet (WSL) —— 用于 WSL 的默认适配器。
2.vEthernet (WSL (Hyper-V firewall)) —— 启用了Hyper-V防火墙。
3.vEthernet (WSL - DistributionName) —— 某些测试版或手动配置的版本可能会为每个发行版创建独立适配器。
以下界面在WSL Settings应用中打开,如果没有WSL Settings应用可自行查询修改.wslconfig文件加上firewall=false

Windows 实现wsl2固定ip地址,并实现与hyper-v、主机之间实现通信_第1张图片

具体步骤:

1. 为wsl中的虚拟机添加静态ip地址,并为wsl的虚拟网卡vEthernet (WSL)添加ip地址

  • 创建一个.bat文件,以下内容为bat文件的模板(需以管理员身份运行)
# 如果没有为虚拟机创建网卡,默认网卡名一般就是eth0 
wsl -d ${wsl安装的虚拟机名称} -u root ip addr add ${为该虚拟机新增的静态ip地址}/24 broadcast ${设置broadcast地址} dev ${wsl网卡名} label ${wsl网卡名}:1
# vEthernet (WSL) 位置需按照具体创建默认的网卡名称填写
netsh interface ip add address "vEthernet (WSL)" ${为wsl虚拟网卡添加的ip地址 需与虚拟机新增的ip同网段} 255.255.255.0

以下以 为openEuler新增192.168.130.10的ip地址、为wsl的虚拟网卡vEthernet (WSL)新增192.168.130.1的IP地址为例

wsl -d openEuler -u root ip addr add 192.168.130.10/24 broadcast 192.168.130.255 dev eth0 label eth0:1
# vEthernet (WSL) 位置需按照具体创建默认的网卡名称填写
netsh interface ip add address "vEthernet (WSL)" 192.168.130.1 255.255.255.0

编写为.bat文件,并以管理员身份运行

  • 查看主机和wsl安装虚拟机中是否增加了ip地址
    Windows 实现wsl2固定ip地址,并实现与hyper-v、主机之间实现通信_第2张图片
    Windows 实现wsl2固定ip地址,并实现与hyper-v、主机之间实现通信_第3张图片

  • 若添加成功,使用ping来检验在主机和wsl中的虚拟机的通信是否成功,若ping失败,请检查防火墙设置。至此,为wsl2中安装的虚拟机添加一个静态ip地址完毕(每次重启后wsl默认网卡不会立马创建,需先开启wsl且使用管理员运行此命令)

2. 实现主机、hyper-v、wsl之间的通信

  • 在hyper-v安装的虚拟机设置中,添加一个网络适配器硬件(虚拟交换机选择WSL)
    Windows 实现wsl2固定ip地址,并实现与hyper-v、主机之间实现通信_第4张图片
  • 进入此虚拟机,配置添加的wsl网络适配器的ip地址(需与wsl新增的ip地址同网段)
    (以windows为例)
    Windows 实现wsl2固定ip地址,并实现与hyper-v、主机之间实现通信_第5张图片
    至此,主机、hyper-v、wsl之间的通信完成

你可能感兴趣的:(windows,tcp/ip,网络)