我有两台机器在同一个子网上运行 Debian 5.0。它们使用相同的 DNS(/etc/resolv.conf),它们路由到相同的网关(#route),并且它们具有相同的 iptables 设置(#iptables -L)。我可以从这两台机器 ping 通 IP 地址和主机名。我可以运行 #host www.google.com 并在两台机器上获得相同的结果。但问题是,在其中一台机器上,我无法使用 wget 或 curl。
因此在机器 1 上一切正常,但在机器 2 上(使用与机器 1 相同的设置)我无法使用 wget 或 curl。
我收到的错误是:
# wget google.com
--2009-10-20 16:38:36-- http://google.com/
Resolving google.com... failed: Name or service not known.
wget: unable to resolve host address `google.com'
但是在机器 1 上,wget 或 curl 没有问题并返回:
# wget google.com
--2009-10-20 16:43:55-- http://google.com/
Resolving google.com... 74.125.53.100, 74.125.45.100, 74.125.67.100
Connecting to google.com|74.125.53.100|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
...
Saving to: `index.html.3'
ETC。
我希望这里有人可以给我指出正确的方向,以便我可以解决这个问题:)
答案1
检查您的/etc/nsswitch.conf
文件(如果不是该文件,则检查 Debian 上的其他等效文件)。
host
和nslookup
总是进行 DNS 查找。
但是其他应用程序会首先在 NSS 中查找其他命名系统(例如/etc/hosts
NIS 等)。如果配置了其他东西但不起作用,则可能会阻止应用程序尝试 DNS。
答案2
谢谢你们的回答!
这是 nsswitch.conf 文件。我根据教程设置了 LDAP,该教程告诉我在主机中使用以下行:
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
当我将其改为这样时:
hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
它运行正常。所以我猜 nsswitch 配置文件让它在文件或 mdns4_minimal 中未找到时返回 null,对吗?
感谢您的帮助!
答案3
我遇到了同样的问题,但接下来要进行以下改变/etc/nsswitch.conf
:
hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4
我还必须更改名称服务器:
更改/etc/resolv.conf
以使其指向 google 名称服务器。网络管理员添加的那些对我来说不起作用。
# RED 2013-03-31
nameserver 8.8.8.8
nameserver 8.8.4.4
答案4
首先要尝试的是检查 DNS 是否正常工作。
# host google.com
google.com has address 74.125.67.100
google.com has address 74.125.45.100
google.com has address 74.125.53.100
如果您没有收到该响应,请检查 /etc/resolv.conf 并查找该文件中列出的名称服务器。您能 ping 每一个服务器吗?
尝试单独查询每一个:
# host google.com 12.34.56.78
您能解析另一个主机吗?