windows与wsl互相访问

找出能与WSL2连接的那个IP。

启动WSL2,键入如下命令:

cat /etc/resolv.conf

如:
nameserver 172.27.160.1

172.27.160.1就是我们要找的Windows的IP Address

找出wsl的ip

启动WSL2,键入如下命令:

$ip a |grep “global eth0”
输出举例:

inet 172.27.170.146/20 brd 172.27.175.255 scope global eth0

172.27.170.146就是我们要找的WSL2的IP Address

防火墙规则

默认情况下Windows的防火墙会阻止WSL2中应用对Windows的网络访问(see: Add “allow” rule to Windows firewall for WSL2 network · Issue #4585 · microsoft/WSL (github.com)),解决办法是添加一条防火墙规则允许WSL2对Windows的访问。请以管理员身份打开PowerShell并键入以下命令:

PS C:> New-NetFirewallRule -DisplayName “WSL” -Direction Inbound -InterfaceAlias “vEthernet (WSL)” -Action Allow
输出举例:

Name : {43bcb363-d663-453b-af4b-da65bd25d8eb}
DisplayName : WSL
Description :
DisplayGroup :
Group :
Enabled : Tr

### 配置 Windows 11 WSL2 Ubuntu 获取主机同网段 IP 地址 在 Windows 11 的 WSL2 环境中,可以通过以下方法让 Ubuntu 实例获取 Windows 主机同网段的 IP 地址。这种方法利用了桥接模式和虚拟网络适配器的功能。 #### 方法一:使用桥接模式(适用于 Windows 11 22H2 及以上版本) 从 Windows 11 22H2 开始,WSL2 支持桥接模式,允许 WSL2 虚拟机直接连接到宿主机的物理网络接口。以下是具体步骤: 1. **启用桥接模式** 打开 PowerShell 或命令提示符,以管理员权限运行以下命令: ```powershell wsl --shutdown netsh wlan set hostednetwork mode=allow ssid=WSL-Bridge key=YourPassword netsh wlan start hostednetwork ``` 这些命令会创建一个虚拟 Wi-Fi 网络,并将其作为桥接点。 2. **配置 WSL2 使用桥接网络** 编辑 WSL2 的网络配置文件 `wsl.conf`: ```bash sudo nano /etc/wsl.conf ``` 添加以下内容: ```ini [network] generateResolvConf = false ``` 然后重启 WSL2: ```powershell wsl --shutdown ``` 3. **分配静态 IP 地址** 在 Ubuntu 中手动设置静态 IP 地址,确保其 Windows 主机在同一网段。例如: ```bash sudo ip addr add 192.168.x.y/24 dev eth0 sudo ip route add default via 192.168.x.1 ``` 其中,`192.168.x.y` 是为 WSL2 分配的 IP 地址,`192.168.x.1` 是网关地址[^4]。 --- #### 方法二:通过脚本设置固定 IP 地址 如果无法使用桥接模式,可以参考提供的批处理脚本,手动为 WSL2 和 Windows 主机分配固定 IP 地址。 1. **创建批处理脚本** 将以下内容保存为 `.bat` 文件并运行: ```batch @echo off setlocal enabledelayedexpansion :: 启动 WSL2 并以 root 用户身份执行命令 wsl -u root service docker start | findstr "Starting Docker" > nul if !errorlevel! equ 0 ( echo Docker started successfully. :: 设置 WSL2 的固定 IP 地址 wsl -u root ip addr | findstr "192.168.10.101" > nul if !errorlevel! neq 0 ( wsl -u root ip addr add 192.168.10.101/24 broadcast 192.168.10.0 dev eth0 label eth0:1 echo Set WSL2 IP to 192.168.10.101. ) :: 设置 Windows 主机的固定 IP 地址 ipconfig | findstr "192.168.10.102" > nul if !errorlevel! neq 0 ( netsh interface ip add address "vEthernet (WSL)" 192.168.10.102 255.255.255.0 echo Set Windows IP to 192.168.10.102. ) ) pause ``` 运行该脚本后,WSL2 和 Windows 主机会分别获得 `192.168.10.101` 和 `192.168.10.102` 的 IP 地址[^2]。 2. **验证网络连通性** 在 WindowsWSL2 中分别运行以下命令,确保两者能够互相 ping 通: ```bash ping 192.168.10.102 # 从 WSL2 ping Windows 主机 ping 192.168.10.101 # 从 Windows 主机 ping WSL2 ``` --- #### 方法三:修改 VMware 虚拟网络配置(仅适用于 VMware 安装的 Ubuntu) 如果使用的是 VMware 安装的 Ubuntu 虚拟机,可以按照以下步骤将虚拟机的网段修改为主机网段: 1. **打开 VMware 虚拟网络编辑器** 在 VMware 菜单中选择 “编辑” -> “虚拟网络编辑器”,进入配置界面。 2. **更改 VMnet0 的桥接模式** 选择 VMnet0,并将其桥接至主机的实际网卡(如 Ethernet 或 Wi-Fi)。确认网卡名称后,点击应用[^3]。 3. **重启虚拟机** 修改完成后,重启 Ubuntu 虚拟机,并运行以下命令检查新分配的 IP 地址: ```bash ip addr ``` --- ### 注意事项 - 确保防火墙规则允许相关端口的流量。 - 如果需要访问外部网络,请配置正确的 DNS 服务器。 - 桥接模式可能需要额外的网络权限,尤其是在企业环境中。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值