WGET не може вирішити хост


12

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

Так що на машині 1 все гаразд, але на машині 2 (з тими ж налаштуваннями, що і машина 1) я не можу викручувати або згортати.

Я отримую помилку:

# 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 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

Спробуйте "хост google.com", а не "хост www.google.com", на сервері 2.
Білл Вайс

Відповіді:


17

Перевірте свій /etc/nsswitch.confфайл (або будь-який еквівалент Debian, якщо це не так).

hostі nslookup завжди виконувати пошук DNS.

Однак інші програми спочатку шукатимуть в NSS для інших систем імен (наприклад /etc/hosts, NIS тощо). Якщо інше налаштовано, але не працює, це може перешкодити програмі ніколи не пробувати DNS.


3
Канонічний спосіб перевірити роздільну здатність getent hosts google.com. Для цього використовується nsswitch.conf, а потім резолюція.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" поруч із результатами голосування. :)
Редсандро

3

Перше, що потрібно спробувати, це перевірити, чи правильно працює 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

Чи можете ви вирішити інший хост?


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

3
Дякую, анонімний, за конструктивний коментар до голосування.
Редсандро

2

Чи може бути недійсний проксі-сервер, налаштований на машині з помилкою? Спробуйте це:

# wget --no-proxy google.com
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.