File host: Apakah salah untuk memiliki alamat IP yang sama pada beberapa baris?

28

Untuk sementara saya memformat file host saya seperti ini. Perhatikan ip yang sama pada dua baris:

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

Saya membaca baru-baru ini bahwa alias seharusnya dikonsolidasikan pada satu baris:

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

Namun, saya tidak suka metode ini karena Anda tidak dapat dengan mudah mengomentari alias tertentu atau menambahkan komentar ke alias tertentu, seperti ini:

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

Sejauh ini ini berfungsi dengan baik; apakah ada masalah dengan ini?

AlexMA
sumber

Jawaban:

28

Saya menemukan utas ini yang membahas melakukan sesuatu di sepanjang garis ini. Utas ini sangat bersikeras tidak memiliki beberapa baris baris /etc/hostsfile.

kutipan - Re: / etc / hosts: Dua baris dengan alamat IP yang sama?

Tidak, tidak akan. Penyelesai berhenti pada resolusi pertama. Memiliki sesuatu seperti:

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

Tidak akan melakukan apa yang Anda bicarakan. TAPI memiliki:

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

Akan menyebabkan semua jenis malapetaka. Termasuk penerusan.

Saya biasanya tidak akan melakukan apa yang Anda coba. Jika Anda membutuhkan lebih banyak bukti, halaman manual bahkan mengatakan tidak melakukan ini:

kutipan man hosts

Halaman manual ini menjelaskan format file / etc / hosts. File ini adalah file teks sederhana yang mengaitkan alamat IP dengan nama host, satu baris per alamat IP. Untuk setiap host satu baris harus hadir dengan informasi berikut:

         IP_address canonical_hostname [aliases...]

Semua ini dikatakan, jika nama host Anda FQDN dan mereka tidak tumpang tindih maka Anda mungkin aman untuk melakukan apa yang Anda lakukan. Hanya perlu diingat bahwa jika ada tumpang tindih seperti apa yang disebutkan di utas di atas, maka Anda dapat mengalami penyelesaian masalah.

slm
sumber
1
Saya tidak mengamati efek yang dicatat oleh salah satu pihak di utas itu. Misalnya, beberapa baris untuk 127.0.0.1 tidak mempengaruhi output dari hostname(kontra OP), dan semuanya menyelesaikan dengan benar (contra responden).
goldilocks
1
Tetapi gethostbyaddr()hal yang mereka angkat adalah signifikan. +1
goldilocks
Sangat menarik! Saya tidak menyadari file host digunakan dua arah (dapatkan nama host dari ip, dapatkan ip dari nama host). Itu pasti memunculkan beberapa masalah. Mungkin saya harus melihat ke dalam proses pembuatan file host yang mengambil versi yang dapat dibaca manusia dan kemudian "memperbaikinya" dengan menggabungkan alias host ke satu baris. Seharusnya naskahnya sangat mudah.
AlexMA
1
@AlexMA - jika Anda menemukan yang /etc/hostsmenyebabkan Anda berduka, Anda selalu dapat mengatur DNS. Saya menjalankan BIND untuk alasan yang tepat ini, (1) b / c lebih mudah dikelola secara terpusat, dan (2) Saya mendapatkan penyelesaian seperti yang saya inginkan dari sana tanpa banyak sakit kepala. Ada opsi yang lebih ringan seperti DNSMasq untuk melakukan ini juga. Sistem ini dapat digunakan pada satu kotak juga!
slm
@slm Kedengarannya pilihan yang sangat bagus untuk lingkungan produksi. Mungkin proyek pembelajaran yang berharga juga.
AlexMA
5

Saya percaya metode ketiga telah bekerja dengan baik; apakah ada masalah dengan ini?

Saya selalu melakukan itu sedikit, tetapi ada masalah potensial karena menurut man gethostbyaddritu panggilan sistem dapat digunakan /etc/hostsuntuk mengaitkan alamat IP dengan nama. Meskipun kasus yang jauh lebih umum adalah sebaliknya (dapatkan alamat dari nama), berhati-hatilah dalam hal ini jika terjadi sesuatu yang lucu.

goldilocks
sumber
Seperti yang saya duga, tetapi ingin memastikan sepertinya tidak ada dokumentasi yang bagus tentang itu. Saya juga tidak yakin apakah mungkin ada lebih banyak masalah dengan beberapa distribusi unix ekstra ketat. Saya akan memberi Anda jawaban kredit segera jika tidak ada orang lain yang berpadu dengan sikap yang berbeda.
AlexMA
Nah, poinnya slmpatut dipertimbangkan; mungkin sistem itu tidak dimaksudkan untuk digunakan dengan cara ini. Saya akan terus melakukannya (kebanyakan saya hanya menggunakan ini untuk 127.0.0.1 sehingga saya dapat melakukan transplantasi dan menguji berbagai hal secara lokal tanpa memodifikasi konfigurasi virtual host), tetapi saya telah menambahkan peringatan pada paragraf terakhir.
goldilocks
Sebenarnya saya sudah mengedit ini untuk memperhitungkan "masalah potensial" ...
goldilocks
0

Apache 2.4 menolak untuk memulai pada sistem Unix saya. Penyebab utama adalah duplikat baris di / etc / hosts. Setelah saya menghapus garis duplikat saya dapat memulai server web.

pengguna275926
sumber
4
Ini adalah info yang berguna, tetapi mungkin harus berupa komentar daripada jawaban sesuai dengan pedoman situs ini.
AlexMA