在 Windows Subsystem for Linux 中执行的几乎任何操作中,我都会收到“如何解析主机名”的通知。为什么每次全新安装时都会发生这种情况以及如何解决?
答案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
您的名称服务器地址可能有所不同
- 在根目录 etc 文件夹中创建一个 wsl.conf 文件(可能需要 sudo):
sudo nano /etc/wsl.conf
- 将以下行粘贴到文件中并退出保存(Ctrl+X):
[network]
generateResolvConf = false
- 删除指向 resolv.conf 文件的符号链接
cd /etc
sudo rm resolv.conf
- 在 /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