Tidak seperti hostname
doa perintah sederhana , doa hostname --fqdn
akan mencoba melakukan beberapa hal lagi, yang sering kali menghasilkan beberapa pencarian DNS.
Ambil contoh doa (berhasil) berikut ini (ini dari kotak Red Hat, tapi saya kira itu harus sama untuk Ubuntu):
# hostname --fqdn --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
myserver.example.com
Perhatikan opsi yang sangat membantu --verbose
.
Singkatnya, apa pun selain yang sederhana hostname
mungkin melakukan lebih dari yang Anda harapkan. Ini contoh lain:
# hostname --ip --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
10.1.2.3
Dan untuk mengatasinya:
# hostname --verbose
gethostname()=`myserver.example.com'
myserver.example.com
Perhatikan bahwa nama host suatu sistem (seperti yang dikembalikan oleh gethostname) dapat saya nama host yang tidak memenuhi syarat, seperti hanya 'myserver'. Inilah sebabnya mengapa program yang ingin Anda instal menggunakan program tersebut hostname --fqdn
.
Pesan kesalahan hostname: Name or service not known
berasal dari fungsi resolver : ini adalah bagian dari perpustakaan sistem yang menerjemahkan antara nama dan alamat (biasanya nama DNS dan alamat IP).
Sebenarnya, resolver melakukan lebih dari sekedar DNS (dan lebih dari sekadar menerjemahkan antara nama host dan alamat IP); perilakunya dikonfigurasikan sebagian oleh file /etc/nsswitch.conf
, dan biasanya akan berkonsultasi dengan yang berikut, biasanya dalam urutan ini:
- 'hosts' (di Linux, berarti / etc / hosts)
- (Kadang-kadang) nscd (daemon caching layanan-nama)
- 'dns'
(catatan, Anda juga dapat memiliki server DNS caching seperti dnsmasqd --- untuk poin di atas, itu masih di bawah mekanisme 'dns').
Perlu ditunjukkan bahwa alat-alat seperti menggali , host dan nslookup terhormat tidak mengikuti urutan ini; mereka secara eksplisit adalah alat query DNS. Ini berarti bahwa jika Anda mengandalkan mereka (dalam skrip misalnya) Anda mungkin mendapatkan hasil yang berbeda dari program klien biasa (yang menggunakan penyelesai sistem). Untuk alasan ini, gunakan program getent dalam skrip, terutama jika Anda memiliki komponen caching seperti nscd running.
# getent hosts myserver.example.com
10.1.2.3 myserver.example.com
Jadi kunci takeaway di sini adalah a) jika Anda memiliki / etc / hosts dikonfigurasikan dengan baik dengan entri untuk mesin Anda sendiri, dan b) /etc/nsswitch.conf Anda memiliki konfigurasi yang biasa - hosts: files dns
dalam urutan itu, maka c) bahkan jika Anda tidak memiliki DNS yang dikonfigurasi dengan baik di lingkungan Anda, maka itu hostname --fqdn
akan berfungsi.
Dalam DNS yang dikonfigurasi dengan baik, Anda akan diharapkan memiliki satu alamat 'mundur' ("catatan PTR") yang memberikan nama 'kanonik' dari server Anda, dan nama itu juga harus dapat dilihat (" Catatan "untuk IPv4).
Versi singkat: tambahkan --verbose
; itu akan mengarahkan Anda ke apa yang kurang dari Anda.
Harapan itu membantu Anda memahami apa yang sedang terjadi.