WGET не может разрешить хост

11

У меня есть 2 машины в одной подсети с Debian 5.0. Они используют один и тот же DNS (/etc/resolv.conf), они маршрутизируют на один и тот же шлюз (#route) и имеют одинаковые настройки iptables (#iptables -L). Я могу пропинговать их обоих, как по IP-адресам, так и по именам хостов Я могу запустить #host www.google.com и получить одинаковые результаты для них обоих. Но проблема в том, что на одном из них я не могу увидеть или свернуться.

Таким образом, на машине 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'

И т.п.

Я надеюсь, что кто-то здесь может указать мне правильное направление, чтобы я мог решить эту проблему :)


источник
Скорее всего, это связано не с wget, а с сетевыми проблемами.
Jldupont
у вас есть настройки прокси в среде .. моя рабочая машина сделала :-(
lexu
Попробуйте "host google.com", а не "host www.google.com" на сервере 2.
Билл Вайс,

Ответы:

17

Проверьте свой /etc/nsswitch.confфайл (или любой другой эквивалент в Debian, если это не так).

hostи nslookup всегда делаю поиск DNS.

Однако другие приложения сначала будут искать в NSS другие системы именования (например /etc/hosts, NIS и т. Д.). Если что-то настроено, но не работает, это может помешать приложению когда-либо пытаться использовать DNS.

Альнитак
источник
3
Канонический способ проверить, работает ли распознаватель getent hosts google.com. Это использует nsswitch.conf и затем resolv.conf как требуется.
Джо
9

Спасибо за ответы, ребята!

Это был файл nsswitch.conf. Я настроил LDAP из учебника, который сказал мне использовать эту строку в хостах:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Когда я изменил это на это:

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Работает без проблем. Итак, я предполагаю, что файл конфигурации nsswitch заставлял его возвращать ноль, если он не найден в файлах, или mdns4_minimal, верно?

Спасибо за вашу помощь!


источник
7
Вы, вероятно, должны принять ответ Алнитак.
Дэн Карли
Да, как мне это сделать? : - /
Подтвердите, нажав «V» рядом с оценкой голосов. :)
Redsandro
2

Может ли быть неверный прокси, настроенный на машине с ошибкой? Попробуй это:

# wget --no-proxy google.com
djhowell
источник
2

Первое, что нужно попробовать, это проверить, правильно ли работает 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 и найдите серверы имен, перечисленные в этом файле. Можете ли вы пинговать каждого из них?

Попробуйте запросить каждого из них в отдельности:

# host google.com 12.34.56.78

Можете ли вы разрешить другой хост?

Дэвид Пашли
источник
2

У меня была такая же проблема, но рядом с изменением /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
Redsandro
источник
3
Спасибо, аноним, за конструктивный комментарий к downvote.
Редсандро,