Nama Inang - Tentang apakah semua itu?

54

Saya baru-baru ini "dipaksa" untuk melakukan beberapa pekerjaan sysadmin, sementara ini bukan sesuatu yang saya benar-benar suka lakukan, saya sudah membaca, bereksperimen dan belajar banyak.

Ada satu aspek mendasar dari konfigurasi server yang belum dapat saya pahami - nama host .

Di Ubuntu misalnya, seseorang harus menetapkan nama host seperti ini (sesuai dengan Linode Library ):

echo "plato" > /etc/hostname
hostname -F /etc/hostname

File: / etc / hosts

127.0.0.1        localhost.localdomain        localhost
12.34.56.78      plato.example.com            plato

Saya berasumsi itu platoadalah nama yang arbitrer dan itu plato.example.comadalah FQDN.

Sekarang pertanyaan saya adalah:

  • Apakah ini wajib?
  • Untuk tujuan apa?
  • Di mana itu dibutuhkan / digunakan?
  • Mengapa saya tidak dapat mendefinisikan "localhost" sebagai nama host untuk setiap mesin?
  • Apakah saya harus mengatur entri DNS untuk plato.example.comFQDN?
  • Haruskah plato.example.comdigunakan sebagai entri DNS terbalik untuk IP saya?

Juga, apakah ada "praktik terbaik" untuk memilih nama host? Saya pernah melihat orang menggunakan huruf Yunani, nama planet, dan bahkan tokoh mitologis ... Apa yang terjadi ketika kita kehabisan huruf / planet?

Maaf jika ini pertanyaan bodoh, tapi saya tidak pernah terlalu antusias dengan konfigurasi jaringan.

Alix Axel
sumber
3
Saya pikir Chris S tidak ada di sini. Pertanyaannya - apa nama host sistem dan bagaimana hubungannya dengan DNS - adalah pertanyaan yang valid.
larsks
@ Chris S: Saya mengerti, percayalah. Saya mencoba membacanya sekali tetapi semuanya membelai saya sebagai sangat membingungkan. Saya tidak bercita-cita menjadi SA, hanya mencoba memahami dasar-dasarnya sedikit lebih baik.
Alix Axel
Ini harusnya masuk ke komunitas wiki
lynxman
1
@lynxman: Saya tidak keberatan dengan itu, tapi mengapa?
Alix Axel
1
Karena ini sangat menarik :)
lynxman

Jawaban:

29

Saat ini, sebuah sistem mungkin memiliki banyak antarmuka, masing-masing dengan beberapa alamat, dan setiap alamat bahkan mungkin memiliki beberapa entri DNS yang terkait dengannya. Jadi, apa arti "hostname sistem"?

Banyak aplikasi akan menggunakan nama host sistem sebagai pengidentifikasi default saat berkomunikasi di tempat lain. Misalnya, jika Anda mengumpulkan pesan syslog di server pusat, semua pesan akan ditandai dengan nama host dari sistem asal. Di dunia yang ideal Anda mungkin akan mengabaikan ini (karena Anda tidak selalu ingin mempercayai klien), tetapi perilaku default - jika Anda menyebut semua sistem Anda "localhost" - akan menghasilkan banyak pesan log yang Anda tidak akan dapat dikaitkan dengan sistem tertentu.

Seperti yang ditunjukkan orang lain, nama host sistem juga merupakan pengidentifikasi yang berguna jika Anda menemukan diri Anda dari jauh mengakses sejumlah sistem. Jika Anda memiliki lima jendela yang terpasang pada sistem bernama "localhost" maka Anda akan mengalami kesulitan menjaga mereka tetap lurus.

Dalam nada yang sama, kami mencoba untuk membuat nama host sistem cocok dengan nama host yang kami gunakan untuk akses administratif ke suatu sistem. Ini membantu menghindari kebingungan ketika merujuk ke sistem (dalam email, percakapan, dokumentasi, dll).

Mengenai DNS:

Anda ingin memiliki entri DNS maju dan mundur yang tepat untuk aplikasi Anda untuk menghindari kebingungan. Anda memerlukan beberapa entri maju (nama -> alamat ip) agar orang dapat mengakses aplikasi Anda dengan nyaman. Memiliki pencocokan entri terbalik berguna untuk sejumlah alasan - misalnya, ini membantu Anda mengidentifikasi aplikasi dengan benar jika Anda menemukan alamat ip yang sesuai dalam log.

Perhatikan bahwa di sini saya berbicara tentang "aplikasi" dan bukan "sistem", karena - terutama dengan server web - adalah umum untuk memiliki beberapa alamat ip pada suatu sistem, yang terkait dengan nama host dan layanan yang berbeda.

Mencoba mempertahankan pemetaan nama ke ip dalam /etc/hostsfile Anda dengan cepat menjadi sulit saat Anda mengelola semakin banyak sistem. Sangat mudah bagi file host lokal untuk tidak sinkron sehubungan dengan DNS, berpotensi menyebabkan kebingungan dan dalam beberapa kasus kegagalan fungsi (karena sesuatu mencoba mengikat ke alamat ip yang tidak lagi ada pada sistem, misalnya).

larsks
sumber
Terima kasih atas balasan Anda, saya masih bingung jika saya harus (atau perlu) memelihara file / etc / hosts daripada hanya mengandalkan entri DNS.
Alix Axel
8
Saya biasanya mengabaikan /etc/hostsmendukung DNS. Ini mengurangi jumlah tempat yang saya butuhkan untuk menyimpan informasi tentang nama -> pemetaan alamat. Pada sebagian besar sistem yang saya pertahankan, /etc/hostshanya berisi satu entri untuk localhost.
larsks
Ketika Anda berurusan dengan cluster - seperti Ganeti atau Linux-HA / Corosync cluster - / etc / hosts digunakan untuk berbicara di antara anggota cluster. Sangat buruk untuk itu hanya bergantung pada DNS karena layanan DNS Anda mungkin berada di cluster tersebut dan sedang dimigrasi atau offline selama perubahan node, jadi / etc / hosts dan nama host yang benar akan membantu Anda bersenang-senang.
coredump
jadi, mengenai "unik", kita lebih "berusaha" menjadi "unik" daripada "harus" unik, benar? Karena ada begitu banyak server di luar sana dan mereka semua berada dalam ruang lingkup yang sama, menjadi "unik" yang sebenarnya tidak mungkin. Apakah pemahaman ini benar?
shenkwen
10

Anda bisa mengatur setiap nama host menjadi "localhost", tetapi sangat praktis untuk ada alix@plato ~ $di command prompt Anda ketika Anda mengelola mesin lebih dari ssh. Mengelola server dari jarak jauh bisa menjadi sangat membingungkan jika Anda tidak melakukannya.

Memiliki FQDN yang benar adalah penting ketika Anda meng-host server web, atau server email. Aplikasi server semacam ini ingin mengetahui "siapa" yang mereka jalankan.

Untuk memilih skema penamaan yang baik, saya merujuk Anda ke pertanyaan yang sangat populer ini .

FQDN menjadi berguna hanya jika bermakna bagi komputer lain. Ada tiga level untuk ini:

  • Satu komputer di jaringan lokal Anda memiliki entri di file host-nya yang menunjuk ke mesin itu
  • Anda memiliki server DNS yang berjalan di jaringan lokal Anda dan setiap komputer lokal yang menggunakannya sebagai server DNS sekarang tahu nama.
  • Anda mendaftarkan nama domain dan sekarang seluruh dunia tahu mesin apa yang ditunjuk oleh nama plato.alixaxel.com.

Saat mengirim email atau melayani halaman web ke dunia luar, yang ketiga adalah yang Anda inginkan. Untuk sebagian besar kasus lain, Anda dapat melakukannya dengan DNS lokal atau bahkan mengedit file host.

Dalam hal ini, Anda bisa membuat nama domain (plato.alixnetwork bisa menjadi FQDN) untuk digunakan dalam jaringan lokal Anda. Satu-satunya nilai tambah dari memiliki bagian "alixnetwork" (nama domain) adalah kenyamanan ketika Anda memiliki jaringan lokal lain yang ingin Anda bedakan.

Kenny Rasschaert
sumber
Terima kasih kenny, saya kira keraguan utama saya adalah mengapa penting bagi server web / mail untuk memiliki FQDN yang tepat. Juga, apa yang merupakan FQDN "benar"? Haruskah saya hanya menambahkan nama host ke domain dan mengarahkannya ke alamat IP publik? Saya mendapat kesan bahwa saya harus membuat entri DNS A / AAAA dengan nama host, bukan?
Alix Axel
Itu tergantung pada apa yang ingin Anda capai. Jika Anda tidak mengirim email atau menayangkan halaman web ke dunia dengan plato, benar-benar tidak perlu membuat catatan DNS global untuk mesin itu.
Kenny Rasschaert
"Anda mendaftarkan nama domain dan sekarang seluruh dunia tahu mesin apa yang ditunjuk oleh nama plato.alixaxel.com." - Saya tidak mengerti ini. Tidakkah seluruh dunia tahu mesin apa yang ditunjuk oleh nama plato.alixaxel.com dengan memeriksa resolusi DNS "alixaxel.com"? Apa hubungannya dengan pengaturan FQDN di mesin acak?
shenkwen
9

Ikhtisar dasar. Hostname hanya petunjuk; Anda mungkin menetapkan satu yang spesifik untuk menjadi nama host yang dirujuk oleh mesin, tetapi bisa memiliki beberapa. Beberapa layanan, surat penting dan HTTP bergantung pada nama domain untuk mengetahui di mana layanan harus ditemukan dan bagaimana menuju ke sana.

Dahulu kala, semua nama ini (yang lagi-lagi, hanya petunjuk ke alamat IP) dicatat dalam sebuah file bernama hosts. Ketika sistem tumbuh, mereka tidak dapat menjaga file disinkronkan di semua komputer yang relevan yang berpartisipasi dalam berbagai jaringan yang saling berhubungan. Jadi sistem DNS diciptakan. Ketika Anda melakukan pencarian nama, masih memeriksa file host terlebih dahulu, kemudian sistem DNS. Windows juga dapat memeriksa sistem lain seperti WINS atau NetBIOS.

Saat Anda memasukkan entri dalam hostsfile, Anda tidak akan menugaskannya ke komputer. Menetapkan nama host sebagai yang digunakan oleh komputer dilakukan dalam file konfigurasi (pada sistem * nix) dan Properti Sistem dalam sistem Windows (sistem Windows juga dapat memiliki akhiran spesifik NIC).

Entri dalam hostsfile, seperti sistem DNS, hanyalah pemetaan dari nama host ke alamat IP. Untuk menggunakan nama host 'localhost' (tidak ada yang istimewa tentang itu, ini adalah nama host seperti yang lainnya) harus dipetakan ke antarmuka loopback (jadi itu akan selalu mengarah ke komputer lokal). Untuk memastikan ini berfungsi, semua komputer dilengkapi dengan pemetaan default ini dalam hostsfile mereka , tetapi ini dapat berpotensi dihapus, jika Anda tidak ingin dapat menggunakan nama host itu.

Lebih jauh, seperti yang telah dicatat orang lain, sangat berguna untuk menetapkan nama host ke komputer. Saat terhubung ke komputer, Anda dapat menampilkan nama hostnya saat login, atau sebagai prompt, atau sejumlah tempat lain. Ini membuat mengidentifikasi komputer yang terhubung dengan Anda menjadi lebih mudah. Jika Anda mengatur nama host itu di DNS atau memasukkannya ke dalam semua hostsfile, Anda akan dapat terhubung ke komputer dengan mereferensikan nama hostnya daripada harus mengetahui alamat IP-nya setiap saat. (Bahkan lebih berguna jika komputer menggunakan DHCP, karena alamat bisa berubah. Jika komputer memperbarui DNS maka catatan DNS akan menunjuk ke alamat IP baru; Anda masih bisa terhubung tanpa mengetahui alamat IP baru karena Anda tahu nama DNS ).

Ada banyak kegunaan lain dari keduanya hostsdan DNS, tetapi saya kira Anda memiliki lebih banyak pertanyaan daripada jawaban jika Anda membaca semua ini.

Chris S
sumber
4
+1 untuk meluangkan waktu untuk menulis jawaban yang baik meskipun Anda merasa frustrasi dengan pertanyaan awal.
Kenny Rasschaert
Penjelasan luar biasa! Jika pemahaman saya benar menempatkan FQDN di /etc/hoststidak diperlukan, memiliki nama host di entri DNS akan mencapai hasil yang sama, kan?
Alix Axel
2
@Alix, benar, jika entri dalam DNS (dan DNS berfungsi dengan benar) maka memilikinya dalam hostsfile akan menjadi berlebihan. Entri dalam hostsfile akan menimpa DNS (berguna untuk pengujian kadang-kadang, menjengkelkan ketika Anda melupakannya). Perhatikan bahwa ini semua berkaitan dengan catatan A dan AAAA, ada jenis catatan lain untuk nama host, tetapi saya meninggalkannya untuk kejelasan.
Chris S
Terima kasih Chris, ini membuat segalanya lebih jelas.
Alix Axel
5

Pernah tuan rumah harus diberi nama yang bermakna. Nama host dapat melayani banyak tujuan:

1- Ini membantu Anda mengenali di mana Anda saat ini bekerja.

2- Menggunakan nama yang dikonfigurasi dalam /etc/hostsdan / atau catatan DNS lebih mudah daripada menghafal banyak alamat IP.

3- Localhost adalah nama yang disediakan untuk merujuk ke mesin saat ini (alamat 127.0.0.1).

4- Catatan DNS berguna untuk membuat server Anda dapat diakses publik.

Memilih nama yang cocok untuk setiap server sangat membantu Anda dalam administrasi Anda. Juga, ini membantu klien Anda mengakses server Anda.

Khaled
sumber
2

Sama seperti catatan tambahan: Bekerja dengan benar dan membalikkan resolusi DNS adalah landasan mutlak dari setiap instalasi TI di planet ini. Jangan pernah meremehkan perlunya DNS yang terpelihara dengan baik dan resolusi nama host yang tepat!

pfo
sumber
Saya tidak mengerti mengapa ini penting. Saya memiliki server linode yang meng-host banyak situs web. Tidak mengerti tujuan pengaturan nama host, saya biarkan begitu saja, yaitu "ubuntu". Server ini telah berjalan selama beberapa tahun dan saya tidak pernah merasakan ketidaknyamanan. Saya tidak mempertanyakan jawaban Anda, saya hanya mencoba memahami mengapa nama host itu penting. Dalam kasus saya, kapan saya berharap bahwa saya telah menetapkan nama host dengan benar?
shenkwen
1
@shenkwen - jika Anda benar-benar hanya memiliki satu server, Anda dapat memberi nama apa pun yang diinginkan hati Anda, dan itu jelas tidak masalah. Segera setelah jumlah server menjadi lebih dari 1, Anda memiliki masalah baru untuk dikelola, dan penamaan yang tepat adalah alat yang penting.
mfinni
1

Penafian: pertanyaan utama adalah tentang sistem Linux, jadi silakan abaikan jawaban ini jika Anda tidak tertarik dengan masalah Windows.

Bagaimanapun, dalam sistem Windows, terlepas dari semua poin yang disebutkan dalam jawaban lain, nama host sebenarnya digunakan oleh OS itu sendiri, untuk tujuan jaringan dan otentikasi; secara khusus:

  • Setiap sistem, baik itu anggota domain atau tidak, diharuskan memiliki nama unik di jaringan yang sama (yaitu dalam subnet IP yang sama), jika tidak, konflik penamaan akan terjadi dan berbagai layanan jaringan (terutama berbagi file dan cetak) tidak akan kerja.
  • Semua sistem yang merupakan anggota dari domain Direktori Aktif yang sama diharuskan memiliki nama unik, terlepas dari batasan jaringan.
  • Dalam lingkungan domain, nama host suatu sistem bertindak sebagai prinsip keamanan dan dapat digunakan untuk autentikasi jarak jauh (anggap saja sebagai akun pengguna untuk mesin); itu dapat diberikan izin dan hak akses dan dapat ditempatkan dalam kelompok untuk tujuan keamanan. Ini memengaruhi semua proses yang berjalan pada sistem menggunakan akun yang ada di dalamnya LocalSystemdan NetworkServiceakun pengguna, yang dapat mengautentikasi ke sistem lain menggunakan kredensial sistem yang mereka jalankan; ini memungkinkan proses yang berjalan seperti NetworkServicepada SystemA untuk mengakses folder bersama pada SystemB dengan memberikan izin pada folder tersebut ke akun pengguna SystemA.
Massimo
sumber
-1

Banyak situs dan / atau yang seharusnya 'admin' sekarang menyatakan bahwa atribut 'hostname' mengandung FQDN dari instance OS, yang 'memecah' resolusi apa pun yang menambahkan 'domainname' di dalamnya:

hostname
system1.domain1.org

ping hostname
- tidak dapat menyelesaikan system1.domain1.org.domain1.org

zantar
sumber
Bisakah Anda memberikan sumber referensi untuk pernyataan Anda?
Dave M