WGET tidak dapat menyelesaikan host

11

Saya punya 2 mesin di sub-net yang sama menjalankan Debian 5.0. Mereka menggunakan DNS yang sama (/etc/resolv.conf), mereka merutekan ke gateway yang sama (#route) dan mereka memiliki pengaturan iptables yang sama (#iptables -L). Saya dapat melakukan ping dari keduanya, baik ke alamat IP dan ke nama host. Saya dapat menjalankan #host www.google.com dan mendapatkan hasil yang sama pada keduanya. Tetapi masalahnya adalah bahwa pada salah satu dari mereka, saya tidak bisa wget atau curl.

Jadi pada mesin 1 semuanya OK, tetapi pada mesin 2 (dengan pengaturan yang sama seperti mesin 1) Saya tidak bisa wget atau menggulung.

Kesalahan yang saya dapatkan adalah:

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

Tetapi pada mesin 1 itu tidak ada masalah untuk wget atau curl dan kembali:

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

Dll

Saya berharap seseorang di sini dapat mengarahkan saya ke arah yang benar di sini sehingga saya dapat memperbaiki masalah ini :)


sumber
Ini kemungkinan besar tidak terkait dengan wget tetapi dengan masalah jaringan.
jldupont
apakah Anda memiliki pengaturan proxy dalam lingkungan .. mesin kerja saya lakukan :-(
lexu
Coba "host google.com", bukan "host www.google.com", di server 2.
Bill Weiss

Jawaban:

17

Periksa /etc/nsswitch.conffile Anda (atau apa pun yang setara di Debian jika bukan itu).

hostdan nslookup selalu melakukan pencarian DNS.

Namun aplikasi lain akan mencari NSS terlebih dahulu untuk sistem penamaan lainnya (misalnya /etc/hosts, NIS, dll). Jika ada sesuatu yang dikonfigurasi tetapi tidak berfungsi dapat mencegah aplikasi dari pernah mencoba DNS.

Alnitak
sumber
3
Cara kanonik untuk memeriksa resolver sedang berjalan getent hosts google.com. Ini menggunakan nsswitch.conf dan kemudian resolv.conf sesuai kebutuhan.
Joe
9

Terima kasih atas jawaban kalian!

Itu adalah file nsswitch.conf. Saya telah menyiapkan LDAP dari tutorial yang memberi tahu saya untuk menggunakan baris ini di host:

hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Ketika saya mengubahnya menjadi ini:

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Ini bekerja tanpa masalah. Jadi saya kira file konfigurasi nsswitch membuatnya kembali nol jika tidak ditemukan dalam file atau mdns4_minimal, kan?

Terima kasih atas bantuan Anda!


sumber
7
Anda mungkin harus menerima jawaban Alnitak.
Dan Carley
Ya, bagaimana saya melakukannya? : - /
Terima dengan mengklik "V" di sebelah skor suara. :)
Redsandro
2

Mungkinkah ada proxy tidak valid yang dikonfigurasi pada mesin dengan kesalahan? Coba ini:

# wget --no-proxy google.com
djhowell
sumber
2

Hal pertama yang harus dicoba adalah memeriksa apakah DNS berfungsi dengan benar.

# 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

Jika Anda tidak mendapatkan respons itu, periksa /etc/resolv.conf dan temukan server nama yang tercantum dalam file itu. Bisakah Anda melakukan ping masing-masing?

Coba minta masing-masing secara individual:

# host google.com 12.34.56.78

Bisakah Anda menyelesaikan host lain?

David Pashley
sumber
2

Saya memiliki masalah yang sama, tetapi di samping berubah /etc/nsswitch.conf:

hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4

Saya juga harus mengubah server nama:

Ubah /etc/resolv.confsehingga menunjuk ke server nama google. Yang ditambahkan oleh manajer jaringan tidak bekerja untuk saya.

# RED 2013-03-31
nameserver 8.8.8.8
nameserver 8.8.4.4
Redsandro
sumber
3
Terima kasih, anonim, untuk komentar konstruktif pada downvote.
Redsandro