Apakah sistem komputer (Linux) hanya memiliki satu nama host?


15

hostname digunakan untuk menampilkan nama DNS sistem, dan untuk menampilkan atau mengatur nama host atau nama domain NIS.

Apakah sistem komputer (Linux) hanya memiliki satu nama host?

Dalam hosting virtual, beberapa nama host dapat diselesaikan ke direktori root yang berbeda di server web. Jika sistem komputer (Linux) hanya dapat memiliki satu nama host, bagaimana mungkin hosting virtual?

Terima kasih.


Catatan DNS A atau AAA menunjuk ke alamat IP yang sama untuk banyak domain. Nama host mesin tidak selalu penting.
RubberStamp

(1) Apakah output yang hostnamepernah digunakan dalam menyelesaikan nama host ke alamat IP? (2) A berarti alamat IPv4, AAAA IPv6. Apa itu AAA?
StackExchange for All

Layanan mDNS, seperti avahitergantung pada nama host mesin. Dalam hal ini, hostname.localakan menyelesaikan ke alamat IP lokal dari mesin. Saya melihat seseorang menulis jawaban yang merupakan perluasan dari komentar pertama saya ... terlalu simultan untuk notifikasi browser saya.
RubberStamp

AAA adalah kesalahan ketik 'A' pendek
RubberStamp

Virtual Host tidak ada hubungannya dengan nama host. Ini murni tergantung pada perilaku server web. Respons server berbeda terhadap bidang Host yang berbeda dari header permintaan HTTP. Saya tidak berpikir server web khas akan melakukan apa pun yang berkaitan dengan DNS atau nama host untuk menawarkan fungsionalitas virtual host.
炸鱼 薯条 德里克

Jawaban:


26

Iya dan tidak. Ada dua hal berbeda yang disebut nama host.

Nama host "internal" pada dasarnya adalah string yang disimpan oleh kernel. Ini adalah yang dikembalikan oleh hostnameperintah (atau gethostname()panggilan) dan unik dalam sistem (*) .

Ini sebagian besar digunakan ketika sebuah program ingin menampilkan beberapa pengenal untuk sistem yang sedang berjalan. Misalnya \hdalam Bash, PS1memperluas ke nama host. Demikian pula, logfiles syslog-style juga menyertakan nama host pada entri log.

(* Meskipun seperti komentar Stephen Kitt, ruang nama dapat digunakan untuk menunjukkan nama host yang berbeda untuk proses pada sistem yang sama. Itu sebagian besar digunakan untuk kontainer, yang mencoba bertindak seolah-olah mereka adalah sistem yang berbeda.)

Lalu ada juga nama DNS yang digunakan oleh sistem lain untuk mencari alamat IP yang lain. Mungkin ada lebih dari satu nama DNS yang mengarah ke alamat IP yang sama, dan host yang sama.

Hostname internal dan nama DNS tidak harus sama. Misalkan seseorang memiliki server web mereka telah memutuskan untuk memanggil orange(*) , dengan alamat IP 192.0.2.9. Itu bisa melayani dua domain yang berbeda dan DNS akan diatur untuk memiliki www.example.orgdan www.example.comkeduanya mengarah ke 192.0.2.9, sementara nama host internal sistem mungkin orange.example.orgatau hanya orange. Dalam hal ini, pengaturan DNS biasanya juga akan memiliki pencarian terbalik pada 192.0.2.9titik kembali ke nama orange.example.org, tetapi tidak ada yang memaksa itu.

(* karena mereka suka memberi nama server mereka setelah buah. Seseorang mungkin menggunakan webserver1atau semacamnya, tetapi intinya adalah bahwa itu tidak perlu diberi nama setelah salah satu domain yang sebenarnya.)

Selain itu, hosting virtual mengharuskan browser memberi tahu server web nama situs yang akan diakses. Kalau tidak, server tidak akan tahu situs virtual mana yang coba dijangkau oleh klien. HTTP memiliki Hostheader untuk itu.


Apa yang membuat perbedaan antara nama DNS dan hostname internal adalah protokol mDNS (diimplementasikan misalnya oleh avahi daemon ) dan protokol penemuan lainnya. mDNS memungkinkan host untuk menanyakan semua host lain di jaringan yang sama untuk informasi nama, dan membuat nama host mereka sendiri terlihat di host lain tanpa secara eksplisit mengaturnya di DNS.


Terima kasih. (1) "pengaturan DNS biasanya akan memiliki 192.0.2.9 menunjuk kembali ke nama orange.example.org" Tidak menyelesaikan mendapatkan alamat IP untuk nama host yang diberikan, mengapa sebaliknya? (2) Apakah output yang hostnamepernah digunakan dalam menyelesaikan nama host ke alamat IP?
StackExchange for All

(2) ... Ketika mengatur jaringan wifi lokal di rumah Anda dari ISP menggunakan router dan modem, mesin-mesin di jaringan dapat diidentifikasi oleh output dari hostnameperintah mereka , benar? Apakah router bertindak seperti DNS untuk menyelesaikan output hostnameke alamat IP pribadi dalam jaringan?
StackExchange for All

2
seperti untuk (1), ada juga pencarian terbalik yang mengambil alamat IP dan mengembalikan nama. (Untuk sistem dengan satu nama dan satu alamat, Anda ingin memiliki keduanya menyelesaikan yang lain, hanya demi kejelasan)
ilkkachu

3
Jaringan kecil mungkin menggunakan mDNS. Baik atau buruk, ini memungkinkan pemilik sistem memilih nama host mereka sendiri, dapat diakses oleh sistem lain di jaringan lokal, tanpa perlu mendaftar dengan server DNS.
Mark Plotnick

2
Di banyak jaringan rumah, router lokal bertindak sebagai resolver DNS. Host mengirim nama host mereka ketika mereka meminta alamat menggunakan DHCP, dan router mengingat nama itu dan menyelesaikannya untuk semua host di jaringan. Seperti yang disebutkan oleh Mark dan RubberStamp, ada juga Bonjour (diimplementasikan di Avahi) yang memungkinkan pencarian layanan pada LAN (khususnya printer). Perhatikan juga bahwa host dapat memiliki beberapa alamat IP, dan nama host sekarang diberi nama tempat sehingga proses dapat melihat nama host yang berbeda pada host yang sama.
Stephen Kitt

7

Apakah sistem komputer (Linux) hanya memiliki satu nama host?

Tidak.

[Saya benar-benar akan mengabaikan bahwa siapa pun dapat memberikan host Anda nama apa pun yang mereka suka dengan memiliki catatan DNS yang menunjuk ke alamatnya, atau bahwa Anda dapat memiliki lebih dari satu alias untuk itu /etc/hosts, atau pertimbangan filosofis tentang apa nama sebenarnya]

Pada sistem linux, nama host hanyalah sumber daya per-proses ("namespace UTS") yang diwarisi oleh anak-anaknya secara default, tetapi dapat dipisahkan dari dengan unshare(2)atau clone(2)dengan menggunakan CLONE_NEWUTSbendera. Anda harus melihat ke halaman namespaces(7)manual.

Sama seperti pids, nomor port, mount point, dll, nama host tidak lagi menjadi pengidentifikasi global, dan itu bisa divirtualisasikan sama seperti ruang alamat (memori virtual) atau tabel deskriptor file dari suatu proses.

Dalam hosting virtual, beberapa nama host dapat diselesaikan ke direktori root yang berbeda di server web. Jika sistem komputer (Linux) hanya dapat memiliki satu nama host, bagaimana mungkin hosting virtual?

Hosting virtual adalah sesuatu yang sama sekali berbeda, dan biasanya dilakukan dengan mengonfigurasi catatan DNS wildcard (mis. *.foo.com=> 13.13.13.13) Dengan server web yang berjalan 13.13.13.13dan menyajikan direktori / sumber daya yang berbeda berdasarkan nilai Host:header http [1] (yang sangat dapat dikonfigurasi sebagian besar server web dapat menyajikan sumber daya yang berbeda berdasarkan pada header http apa pun , bukan hanya Host:). Dalam semua ini, OS dari sistem yang dijalankan oleh server web tidak berperan.

[1] atau pada nilai indikasi nama server dalam hal https, yang memungkinkan server web yang sama untuk menggunakan sertifikat yang berbeda untuk host virtual yang berbeda.


Saya harus tidak setuju dengan Anda dalam hal ini. Untuk hosting virtual, kami biasanya memiliki satu set catatan cname khusus yang menunjuk ke host tunggal. Kami tidak menggunakan catatan DNS wildcard karena kami memiliki banyak sistem dalam domain yang membutuhkan host virtual. Tidak termasuk ruang nama UTS (seberapa banyak ini digunakan?), Anda memiliki hostnamectl yang melaporkan nama host tunggal untuk server yang diberikan. DNS dan hostnamectl bersifat ortogonal dan tidak ada hubungannya satu sama lain.
selesai24

1
@ DougO'Neal Apa yang tidak Anda setujui? Catatan DNS wildcard itu digunakan dengan cara saya menggambarkannya? Mereka digunakan secara liar seperti itu (maaf untuk permainan kata-kata), apakah Anda suka atau tidak. Bahwa info uts tervirtualisasi per-proses di linux? Begitulah adanya. Mengenai gagasan bahwa ruang nama hanya digunakan / digunakan oleh solusi kontainerisasi / virtualisasi kaleng (seperti yang disarankan dalam jawaban lain), maaf tapi itu "hanya anak perempuan bermain dengan boneka" atau "transmisi manual hanya digunakan dalam truk berat" kualitas ;-)
Paman Billy

1

Anda biasanya menetapkan satu nama host di / etc / hostname. Dan, Anda menetapkan banyak nama domain di / etc / hosts.

Ruang nama UTS memungkinkan satu sistem tampak memiliki nama host dan domain yang berbeda untuk proses yang berbeda. Untuk info lebih lanjut: https://en.wikipedia.org/wiki/Linux_namespaces . Jadi, sangat mungkin untuk memiliki beberapa nama host dan nama domain untuk sistem yang sama. Misalnya, buruh pelabuhan kontainer di dalam host yang sama memiliki nama host yang berbeda dari sistem host.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.