首先手动配置/etc/hosts文件添加静态映射,或启用systemd-resolved服务并配置generateResolvConf=false以持久化DNS设置,确保WSL2能解析局域网主机名。

如果您尝试在 WSL2 中通过主机名访问局域网内的其他设备,但无法成功解析,这通常是由于 WSL2 的 DNS 解析机制与 Windows 宿主机不完全同步所致。以下是解决此问题的步骤:
本文运行环境:Dell XPS 13,Windows 10。
该方法通过在 WSL2 的 Linux 系统中直接添加主机名与 IP 地址的静态映射,绕过 DNS 查询过程,适用于主机数量少且 IP 地址固定的网络环境。
1、在 WSL2 终端中使用文本编辑器打开 hosts 文件:
sudo nano /etc/hosts。
2、在文件末尾添加局域网内目标主机的 IP 地址和主机名,格式为 "IP地址 主机名",例如:
192.168.1.100 my-server.local。
3、保存文件并退出编辑器(在 nano 中按 Ctrl+O 写入,Enter 确认,Ctrl+X 退出)。
4、执行 ping my-server.local 测试是否能够解析并连通。
此方法启用并配置 WSL2 内的 systemd-resolved 服务,使其能更有效地处理 DNS 查询,并利用 Windows 的网络堆栈进行名称解析。
1、确保 WSL2 发行版已配置为启动 systemd,在 /etc/wsl.conf 文件中包含以下内容:
[boot]
systemd=true。
2、重启 WSL2 实例以应用更改:
wsl --shutdown,然后重新打开 WSL2 终端。
3、在 WSL2 终端中安装并启用 systemd-resolved:
sudo apt install -y systemd-resolved。
4、创建或修改 /etc/resolv.conf 的符号链接,使其指向 systemd-resolved 的运行时配置:
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf。
5、重启 systemd-resolved 服务:
sudo systemctl restart systemd-resolved。
该方法防止 WSL2 每次启动时覆盖您对 /etc/resolv.conf 的自定义设置,确保 DNS 配置的持久性。
1、在 WSL2 终端中创建或编辑 /etc/wsl.conf 文件:
sudo nano /etc/wsl.conf。
2、在文件中添加 [network] 部分,并设置 generateResolvConf 为 false:
[network]
generateResolvConf=false。
3、保存并关闭文件。
4、关闭 WSL2 实例:
wsl --shutdown。
5、从 Windows PowerShell 重新启动 WSL2,此时 /etc/resolv.conf 将不再被自动生成,您可以安全地手动配置它指向正确的 DNS 服务器。
以上就是win10下WSL2无法解析局域网内主机名怎么办_修复WSL2无法访问局域网主机名的方法的详细内容,更多请关注php中文网其它相关文章!
Windows激活工具是正版认证的激活工具,永久激活,一键解决windows许可证即将过期。可激活win7系统、win8.1系统、win10系统、win11系统。下载后先看完视频激活教程,再进行操作,100%激活成功。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号