主机:解析 /etc/resolv.conf 失败。

12
我遇到了一个错误,但我无法确定具体问题所在,请帮助我找出错误所在。
每当我使用"host"命令时,我都会遇到以下错误:
xavi@cobalto:~$ host www.guparty.com
host: parse of /etc/resolv.conf failed

我认为语法是正确的:

xavi@cobalto:~$ cat /etc/resolv.conf
search dsitelecom.com
nameserver 8.8.8.8 8.8.4.4

同时每个人都可以阅读权限:

xavi@cobalto:~$ ls -l /etc/resolv.conf
-rw-r--r-- 1 root root 49 2011-10-30 12:02 /etc/resolv.conf

也许这是一件小事,但我无法理解。你看到有什么问题吗?

谢谢!

4个回答

20

请检查您的语法,您需要在/etc/resolv.conf文件中每行定义一个nameserver。

search dsitelecom.com
nameserver 8.8.8.8 
nameserver 8.8.4.4

4

当不小心将*nix的行尾符"\n"替换为Windows的行尾符"\r\n"时,我看到了相同的错误。解决方案:dos2unix 文件名


2

我有类似的问题,但是我这样做就可以解决了:

# mv resolv.conf resolv.conf.old
# cat resolv.conf.old
search example.com
domain example.com
nameserver 11.22.33.44
nameserver 2000::1
# echo "search example.com" >>resolv.conf
# echo "domain example.com" >>resolv.conf
# echo "nameserver 11.22.33.44" >>resolv.conf
# echo "nameserver 2000::1" >>resolv.conf

地址只是示例,但结果是有效的。为什么要复制resolv.conf?因为这样你就可以得到原始文件的副本。然后,当你打印它时,你不必记住resolv.conf中的所有内容。当你用echo创建文件时,你可以确信其中没有额外的字符会造成问题。所以将所有的nameserver行都echo到那里。

您不需要IPv6名称服务器。 - MaXi32

0

我在WSL2中遇到了这个问题,但我的resolv.conf肯定是按照正确的格式编写的。我甚至使用hexdump验证了行尾是否正确。按照以下步骤解决:

  1. 使用Windows Powershell的ipconfig.exe查找nameserver

  2. 使用sudo nano /etc/wsl.conf添加以下内容:

[network]                                                                        
generateResolvConf = false
  1. 使用 wsl --shutdown 重新启动 WSL (Windows PowerShell)

  2. 打开 WSL 并备份 /etc/resolv.conf。然后通过 rm -f /etc/resolv.conf 删除它

  3. 添加新文件 sudo nano /etc/resolv.conf,并输入以下内容:

nameserver X.X.X.X
  1. 使用 wsl --shutdown 重新启动 WSL(Windows PowerShell)。

  2. 打开 WSL 并使用 wget google.com 删除并测试一些公司域名。

摘自 https://github.com/microsoft/WSL/issues/1350#issuecomment-1187571290


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接