Windows11镜像网络模式配置WSL2——完美解决wsl2无法ping宿主机,也无法ping外网的问题

完美解决wsl2无法ping宿主机,也无法ping外网的问题

背景:wsl2 通过 NAT 方式与宿主机共享网络,这就导致 wsl2 的网络需要经过一些配置才能访问外网,尤其是涉及到梯子时。为了避免各种麻烦的网络配置问题,建议使用镜像网络模式配置 wsl2。

本文介绍如何使用镜像模式配置 WSL2。

前提条件:

  • 宿主机可以上网
  • 宿主机打开了对 WSL2 的防火墙设置。(可参考其它文章)

下面是将 WSL2 配置成镜像模式的步骤。

1. 在 Windows 的文件资源管理器中的文件路径中输入 %USERPROFILE%

在此目录下新建 .wslconfig文件,然后文件的内容如下:

# Settings apply across all Linux distros running on WSL 2
[wsl2]

# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=8GB

# Sets the VM to use two virtual processors
processors=8

[experimental]
autoMemoryReclaim=gradual # 开启自动回收内存,可在 gradual, dropcache, disabled 之间选择
networkingMode=mirrored # 开启镜像网络
dnsTunneling=true # 开启 DNS Tunneling
firewall=true # 开启 Windows 防火墙
autoProxy=true # 开启自动同步代理
sparseVhd=true # 开启自动释放 WSL2 虚拟硬盘空间

2. 重新启动 WSL

在终端中输入命令:wsl --shutdown,然后输入wsl。应该就能 ping 通百度了。
在这里插入图片描述

码字不易,请各位道友点赞、收藏加关注,追番不迷路啊,哈哈哈。

### WSL2 网络配置指南 WSL2网络配置涉及多个方面,包括 IP 地址分配、DNS 设置、端口转发等。以下是详细的配置方法: #### 1. 查看 WSL2网络信息 在 WSL2 中,可以通过以下命令查看当前的网络配置: ```bash ip addr ``` 此命令会显示 WSL2 内部的网络接口及其分配的 IP 地址[^3]。 #### 2. 配置静态 IP 地址 如果需要为 WSL2 分配一个固定的静态 IP 地址,可以编辑 `.wslconfig` 文件。该文件位于用户的主目录下(例如 `C:\Users\<YourUsername>\.wslconfig`)。如果没有该文件,则可以手动创建。以下是一个示例配置: ```plaintext [wsl2] ipv4=true nameserver=8.8.8.8 hostGen=manual localhostForwarding=true ``` 在此配置中: - `ipv4=true` 表示启用 IPv4。 - `nameserver=8.8.8.8` 指定 DNS 服务器地址。 - `hostGen=manual` 表示手动生成主机名。 - `localhostForwarding=true` 允许将本地主机的流量转发到 WSL2[^1]。 #### 3. 配置 DNS 设置 WSL2 默认使用 Windows 的 DNS 设置。如果需要自定义 DNS 服务器,可以通过修改 `/etc/resolv.conf` 文件实现。例如: ```bash sudo nano /etc/resolv.conf ``` 然后添加以下内容: ```plaintext nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 保存并退出后,DNS 设置将立即生效[^3]。 #### 4. 端口转发配置 WSL2 使用的是虚拟网络适配器,默认情况下无法直接从外部访问其服务。为了使外部设备能够访问 WSL2 上运行的服务,需要配置端口转发。可以通过 PowerShell 执行以下命令: ```powershell netsh interface portproxy add v4tov4 listenport=<外部端口> listenaddress=0.0.0.0 connectport=<内部端口> connectaddress=<WSL2_IP> ``` 例如,将 WSL2 的 8080 端口映射到 Windows 的 80 端口: ```powershell netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=8080 connectaddress=172.20.128.2 ``` 其中,`172.20.128.2` 是 WSL2 的内部 IP 地址,可以通过 `ip addr` 命令获取。 #### 5. 配置防火墙规则 如果启用了 Windows 防火墙,可能需要允许特定端口通过。可以通过以下命令添加防火墙规则: ```powershell New-NetFirewallRule -DisplayName "WSL2 Port Forwarding" -Direction Inbound -LocalPort <端口号> -Protocol TCP -Action Allow ``` 例如,允许 8080 端口通过: ```powershell New-NetFirewallRule -DisplayName "WSL2 Port Forwarding" -Direction Inbound -LocalPort 8080 -Protocol TCP -Action Allow ``` #### 6. 使用 XRDP 实现图形化界面 如果需要在 WSL2 上使用图形化界面,可以安装 XRDP 并进行配置。XRDP 提供了稳定的远程桌面连接,并能保留后台会话。 ```bash sudo apt update sudo apt install -y xrdp sudo systemctl enable xrdp sudo systemctl start xrdp ``` 安装完成后,可以通过远程桌面客户端连接到 WSL2。 --- ### 注意事项 - WSL2网络适配器默认是 NAT 模式,因此其 IP 地址通常以 `172.x.x.x` 开头。 - 如果遇到网络问题,可以尝试重启 WSL2:`wsl --shutdown`。 ---
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值