Bisakah saya memiliki titik di nama host?


23

Saya menggunakan nama-nama seperti a.alpha untuk nama host dari kotak linux saya, tetapi sepertinya nama ini tidak sepenuhnya dapat digunakan. Respons dari perintah shell hostname benar (a.alpha). Tetapi nama yang dicetak setelah akun pengguna saya adalah "user @ a", bukan "user@a.alpha". Ketika saya menggunakan avahi, saya dapat mencapai (dengan nama host) a.alpha, tetapi tidak b.alpha. Apakah itu normal?

Jawaban:


23

Chopper benar. Karena cara kerja DNS, komponen "alpha" dari "a.alpha" dianggap sebagai 'label' diskrit dalam DNS. Menggunakan nama host dengan titik di dalamnya akan menyebabkan hasil yang tidak konsisten dari sistem apa pun yang menggunakan DNS.

Avahi memang berinteraksi dengan nama-nama DNS, dan secara khusus <host-name>arahan perlu memiliki DNS FQDN dari layanan di dalamnya, jadi itu juga tunduk pada inkonsistensi DNS dengan nama-nama bertitik.

Jangan gunakan nama bertitik.


Ini benar, tetapi perlu referensi untuk dianggap sebagai jawaban yang andal. Seseorang yang mengatakan 'Karena cara kerja DNS' di Stack Overflow tidak membuktikan apa-apa.
mikemaccana

Apakah ini aturan kaku bahwa nama host tidak boleh mengandung '.' ?
Dinesh Kumar P

1
@DineshKumarP Ya. DNS RFC menggambarkan karakter periode sebagai pembatas antara label DNS. Sementara layanan non-DNS seperti Avahi atau SLP memungkinkan, DNS itu sendiri tidak.
sysadmin1138

Ini tidak benar. DNS dengan senang hati mengizinkan titik-titik dalam label, meskipun ia menyarankan kesesuaian dengan sintaks terbatas ("aturan LDH"; lihat tools.ietf.org/html/rfc1035#section-2.3.1 ). Aplikasi DNS - seperti menyimpan nama host dalam DNS - adalah tempat pembatasan pada sintaks label DNS ikut bermain.
Tony Garnock-Jones

17

Anda meminta masalah dengan skema penamaan karena DNS, pertimbangkan a-alpha sebagai gantinya.


Saya akan mengajukan pertanyaan yang sama di askubuntu, dan tidak ada yang bisa menjawab saya. Jadi saya akan menggunakan metode ini
benzen

1

Seperti yang telah disebutkan orang lain, Anda pasti ingin menghindari titik-titik di nama host Anda karena DNS, dan saya juga menemukan bahwa ini dapat memberikan masalah jika Anda menggunakan sertifikat wildcard untuk melakukan SSL, karena sertifikat wildcard hanya akan wildcard untuk satu tingkat subdomain. Jadi jika sertifikat wildcard Anda adalah untuk * .mycompany.com, tetapi Anda memiliki nama host yang a.alpha, sertifikat wildcard mungkin tidak berfungsi jika memperlakukan "alpha" sebagai subdomain.


1

Hostname lengkap host IS biasanya domain-dilengkapi FQDN (nama domain yang memenuhi syarat), dan di linux harus menjadi output host --fqdn, dengan bagian sebelum titik pertama dianggap sebagai nama panggilan host. Namun, berbagai sistem (Linux, SunOS, apa pun) telah menerapkan konsep "hostnick" dengan berbagai cara. Seperti:

  • / etc / hostname hanya berisi hostnick, dan sisanya ada di / etc / domainname
  • / etc / hostname berisi seluruh FQDN, dan domainnya juga di / etc / domainname
  • Nama domain hanya ada di konfigurasi YP / NIS
  • Nama domain hanya ada di subsistem tertentu alih-alih menjadi sistem global
  • (lainnya, pendekatan yang lebih aneh)

Selain itu, gagasan hostnick adalah variabel kecil:

  • Bagian dari FQDN sebelum titik pertama
  • Beberapa bagian sisi kiri FQDN, diekspresikan secara eksklusif tanpa titik tambahan
  • Bagian dari FQDN sebelum nama domain aktual (sebagaimana diatur di suatu tempat)

Dan, untuk lebih memperumit masalah, hostperintah dari bind9-host melanggar standar DNS dengan memiliki -N <int>opsi untuk mengontrol apakah domain pencarian digunakan atau tidak. Ini memecah pencarian DNS dengan berbagai cara tergantung pada skenario. DNS seharusnya mengambil pencarian untuk nama dengan titik yang tertinggal sebagai benar-benar apa yang harus dicari, dan untuk nama lain, untuk mencari mereka dengan domain ditambahkan dari /etc/resolv.confsampai kecocokan ditemukan atau mereka semua gagal (domain tersebut secara implisit memiliki sebuah titik tambahan). [Ini dari memori, silakan komentari jika jenderal proses diubah dalam RFC yang saya lewatkan]

Dengan demikian, jika Anda menggunakan titik di hostnick Anda, hostperintah itu mungkin akan merusak, mematahkan skrip yang menggunakannya untuk pencarian. Saya pribadi menemukan itu tidak terduga yang hostrusak, dan tampaknya hingga hari ini akan merusak sistem pada jaringan rumah saya, karena saya memiliki IPv4 dan -v6 di rumah, dan memiliki nama seperti .v4. sebagai bentuk pendek ekstra versi khusus, yang hostgagal untuk mencari meskipun pingmenemukan mereka baik-baik saja.

Sangat jarang untuk mencoba menempatkan titik di hostnick, jadi bahkan tanpa hostotak, saya akan merekomendasikan tetap pada hostnicks tanpa titik bahkan dari perspektif semantik sederhana.


0

Jawaban yang benar pasti "jangan lakukan itu", seperti yang dinyatakan di atas.

Untuk beberapa bacaan yang mungkin bermanfaat dan jelas tangensial, silakan lanjutkan:

Apakah Anda berbicara tentang resolusi dns atau prompt baris perintah Anda? Jika Anda ingin memperbaiki command line prompt Anda, cukup gunakan $ PS1 (atau yang setara non-bash / sh jika ada).

Jika Anda benar-benar ingin memiliki a.alpha menjadi nama host yang memutuskan ke alamat IP pada interwebs, Anda dapat melakukannya, tetapi itu mungkin melibatkan subdomain untuk setiap akhiran nama host (EG alpha, beta dll.).

Bahkan mungkin Anda dapat mengonfigurasi server DNS agar berfungsi tanpa membuat subdomain. Anda dapat melayani alamat IP dari server nama subdomain di file zona dari domain induk, sehingga mungkin "hanya berfungsi". Ini karena ketika seseorang meminta server DNS Anda untuk alamat IP dari a.alpha.examaple.com, mereka meminta server DNS untuk example.com, dan jika server DNS itu memiliki alamat yang sudah berkeliaran, ia akan merespons dengan jawabannya , alih-alih mencoba menyerahkan Anda ke server resmi subdomain. Ini mungkin akan dinyalakan di sekitar SOA yang hilang ... jadi mungkin Anda menambahkan catatan A untuk setiap awalan host dan dan SOA untuk setiap akhiran host. Ya, itulah tiketnya ...

Segala sesuatu di internet masih akan menganggap nama host Anda adalah 'a', dan domain Anda adalah alpha.example.com.

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.