无法解析 WSL 中的主机名

无法解析 WSL 中的主机名

在 Windows Subsystem for Linux 中执行的几乎任何操作中,我都会收到“如何解析主机名”的通知。为什么每次全新安装时都会发生这种情况以及如何解决?

答案1

  1. 检查是否存在 resolv.conf 符号链接和文件:
cd /etc
ls -lha
stat resolv.conf

您应该看到一个指向的符号链接:

  File: resolv.conf -> ../run/resolvconf/resolv.conf
  Size: 29              Blocks: 0          IO Block: 4096   symbolic link

../run/resolvconf/resolv.conf 中的原始文件将在启动到 WSL Ubuntu 时新创建,并包含以下内容:

# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:>
# [network]
# generateResolvConf = false
nameserver 172.23.0.1

您的名称服务器地址可能有所不同

  1. 在根目录 etc 文件夹中创建一个 wsl.conf 文件(可能需要 sudo):

sudo nano /etc/wsl.conf

  1. 将以下行粘贴到文件中并退出保存(Ctrl+X):
[network]
generateResolvConf = false
  1. 删除指向 resolv.conf 文件的符号链接
cd /etc
sudo rm resolv.conf
  1. 在 /etc 中创建新的 resolv.conf 文件
sudo nano resolv.conf

并将以下内容粘贴到其中并使用 Ctrl+O 和 Ctrl+X 保存:

# This file was automatically generated by WSL. To stop automatic generation of this file, 
# add the following entry to /etc/wsl.conf:>
# [network]
# generateResolvConf = false
# nameserver 172.23.0.1
nameserver 8.8.8.8

答案2

我不知道为什么会发生这种情况(请通过解释改进答案),这里是解决此问题的有效方法:

1.执行:

nano /etc/hostname

用大写字母输入您的机器名称(类似于 DESKTOP-SOMETHING)。删除除机器名称之外的所有内容。

保存并退出。

2.然后执行:

nano /etc/hosts

然后,确保文件的前两行如下所示:

  127.0.0.1 localhost.localdomain localhost
  127.0.1.1 DESKTOP-SOMETHING

保存并退出。

答案3

就我而言,有用的命令是:

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf > /dev/null

答案4

为了解析 WSL2 中的本地 Windows 网络主机,对我来说有效的方法是添加以下内部 DNS 解析条目(名称服务器)/etc/resolv.config

search <name-of-my-internal-ad-domain.net>
nameserver 10.0.xx.xxx  # local WAN DNS server
nameserver 10.0.xx.xxx  # local WAN DNS server
nameserver 1.1.1.1

sudo tee /etc/resolv.conf << EOF
search <name-of-my-internal-ad-domain.net>
nameserver 10.0.xx.xxx
nameserver 10.0.xx.xxx
nameserver 1.1.1.1

相关内容