Memahami nama host dan / etc / hosts


13

Di / etc / hostname, saya punya myname.

Di / etc / hosts, saya punya:

127.0.0.1   localhost.localdomain   localhost myname
::1     localhost.localdomain   localhost myname

Saya memiliki pemahaman yang kabur tentang apa sebenarnya nama host dan untuk apa digunakan.

Pertanyaan yang lebih tepat ini dapat membantu saya untuk memahaminya dengan lebih baik:

  1. Apa nama host saya pada contoh di atas? mynameatau sesuatu yang lain? Jika saya malah myname.domain.commasuk /etc/hostname, apa nama host saya yang sebenarnya?

  2. Pada contoh, perintah hostnamekembali myname, sedangkan perintah hostname -fkembali localhost.localdomain. Saya ada dalam pikiran bahwa /etc/hostsitu hanya pemetaan antara nama dan alamat ip. Tampaknya melayani fungsi lain di sini. Apa itu fqdn dan untuk apa fqdn digunakan? Bagaimana cara diambil? Kenapa begitu localhost.localdomain?

  3. Jika saya malah myname.domain.commasuk /etc/hostname, hostname -fakan kembali myname.domain.com. Mengapa?

  4. Mengapa fqdn tidak diakhiri dengan titik di file-file ini?

  5. Apakah hostname -ddan dnsmydomainsetara?

  6. Dalam konteks apa saya dapat menggunakan nama host saya ( myname) dan kapan saya harus menggunakan fqdn saya ( localhost.localdomain)?

Jawaban:


9
  1. /etc/hostnameberisi nama mesin, yang dikenal dengan aplikasi yang berjalan secara lokal. /etc/hostsdan nama asosiasi DNS dengan alamat IP. mynamedapat dipetakan ke alamat IP mana pun yang dapat diakses oleh mesin itu sendiri, tetapi memetakannya untuk 127.0.0.1tidak interaktif.
  2. Tidak /etc/hosts, tetapi /bin/hostnamemelayani fungsi lain dengan -f.
  3. Karena /etc/hostsbisa mengesampingkan akal sehat . Edit dengan hati-hati dan jangan tinggalkan sampah di sana setelah tempelan dan percobaan sementara.
  4. Kedua gaya (⋯ .TLD. dan ⋯ .TLD ) dapat diterima. Yang pertama tidak ambigu, sedangkan yang terakhir ada di mana-mana.
  5. Tidak tahu apa dnsmydomainitu, tetapi tidak mungkin. Mencari sesuatu secara /etc/hoststeknis bukan "DNS".
  6. Ingat poin 1. Nama Host - untuk aplikasi yang berjalan secara lokal; juga untuk protokol jaringan khusus seperti SMB (samba). FQDN (jika tidak seperti pemalsuan atau pengganti localhost.localdomain) - untuk mengakses mesin dari luar. FQDN harus dapat diselesaikan di mana ia digunakan.

1
Bagaimana jika IP saya dinamis (DHCP) dan berubah dari waktu ke waktu? alamat mana yang harus saya gunakan mynamedi / etc / hosts?
user156516

3

Saya benar-benar benci ketika seseorang mengatakan kepada saya untuk membaca manual tetapi dalam kasus ini silakan lihat halaman manual untuk nama host dan sebagian besar jika tidak semua pertanyaan Anda harus dijawab. Itu ditulis jauh lebih baik daripada yang bisa saya jelaskan.

Untuk memberikan bantuan, beberapa kutipan yang mengenai pertanyaan Anda adalah: - Nama host Anda adalah yang Anda lihat di / etc / hosts. - FQDN yang dikembalikan didasarkan pada apa yang mengembalikan resolver, oleh karena itu mengapa Anda melihat nilai di / etc / hosts dikembalikan sebagai resolver memeriksa file host terlebih dahulu, kemudian melakukan permintaan DNS yang diperlukan.

Salah satu yang saya tidak percaya disentuh di halaman manual hostname (berdasarkan saya membaca ulang halaman manual sendiri) adalah mengapa entri dalam file tidak berakhir dengan titik.

Konvensi itu digunakan ketika berurusan dengan catatan DNS. File nama host dan host sebenarnya bukan catatan DNS. Jika Anda mengonfigurasi entri ini agar dapat diselesaikan untuk pencarian DNS, maka penggunaan titik dapat ikut bermain (lihat sumber daya yang bagus ini: http://www.zytrax.com/books/dns/apa/dot.html ).

Juga, perlu diingat bahwa semua nilai ini tidak disiarkan dari sistem. Jadi jika Anda ingin sistem lain untuk mengakses berdasarkan FQDN, itu didasarkan pada file host pada sistem lain, atau tidak ada entri host berdasarkan pencarian DNS yang dilakukan sistem eksternal pada FQDN untuk memungkinkannya menyelesaikan kembali ke sistem.


Terkait, tentang titik terakhir di /etc/hosts: serverfault.com/questions/336056/setting-fqdn-hostname-and-dot
John WH Smith

3

Sebagai jawaban untuk

Bagaimana jika IP saya dinamis (DHCP) dan berubah dari waktu ke waktu? alamat mana yang harus saya gunakan sebagai nama saya di / etc / hosts?

Mari saya tunjukkan, pertama, bahwa / etc / hosts adalah definisi statis pemetaan nama ke alamat untuk host yang diinstal, dan HANYA digunakan oleh host tersebut untuk mengonversi nama menjadi alamat IP.

Jadi, ada 2 sudut pandang untuk dipertimbangkan - host 'myname' dan semua orang.

Untuk host 'myhost', rujuk host yang sekarang menggunakan 'localhost' (yang didefinisikan dalam / etc / hosts sebagai 127.0.0.1), atau tambahkan 'myname' ke baris / etc / hosts yang mendefinisikan localhost sehingga 'myname selalu memetakan ke, well, localhost. Seperti itu:

127.0.0.1 localname myname

Maka tidak masalah apa pun alamat IP yang diberikan INTERFACE, Anda akan selalu memiliki alamat yang berfungsi (bonus tambahannya adalah Anda tidak perlu menekan perangkat keras untuk berbicara dari 'myname' ke 'myname').

Sekarang, untuk mengizinkan host OTHER menemukan 'myhost' ketika 'myhost' memiliki alamat IP dinamis, Anda harus menggunakan DNS, dan mengatakan server DNS harus menangani pemetaan yang ditugaskan DHCP. (Yah, ok, ADA solusi lain yang bisa saya pikirkan, tetapi semua yang terlintas dalam pikiran masuk dalam kategori 'luar konyol', IMHO. Nah, ok, ada hal-hal yang dapat Anda lakukan untuk tuan rumah agar TI memberi tahu DNS) di mana itu, tapi itu pertanyaan yang layak untuk aliran pertanyaan / jawaban yang sama sekali berbeda di sini, IMHO)


2

/ etc / hostname dan / etc / hosts sederhana, tetapi juga tidak sesederhana itu ...

Cara mengatur Debian /etc/hostnamedan/etc/hosts

1) Edit / etc / hostname .

Ada 2 cara yang valid untuk mengatur ini.

Entah membuatnya:

  • machine, yaitu nama satu kata yang sederhana untuk prosesor ini.
    Misalnya, ' joe' mungkin nama mesin yang Anda pilih sendiri.
    Catatan ini membutuhkan alias di / etc / hosts, dijelaskan lebih lanjut di bawah ini.

ATAU

  • machine.domain.net, yaitu Nama Domain yang Sepenuhnya Memenuhi Syarat (FQDN).
    Misalnya, ' joe.xyz.com'.
    (Ini dengan asumsi Anda memiliki catatan Host DNS 'A' yang menunjuk dari joe.xyz.com ke alamat IP joe Anda, yaitu di mesin Anda bernama joe. Biasanya Anda mengatur catatan ini di tempat Anda membeli nama domain Anda. Lebih lanjut tentang itu di sesaat.)

Setelah / etc / hostname diatur, maka langkah selanjutnya adalah mendapatkan perintah hostname --all-fqdndan dnsdomainnamebekerja dengan benar, dalam urutan itu, sebagai berikut:

2) Edit / etc / hosts .

Di dalamnya ada baris untuk FQDN host ini , misalnya 'machine.domain.net', diawali dengan alamat IP mesin ini (mungkin dari server alamat IP dinamis) seperti ini:

#   IP           FQDN (CANONICAL_HOSTNAME)   ALIASES
#-------------- --------------------------- ------------------------
192.168.1.14    Joe.xyz.com                 joe
  • Pertama, perhatikan bahwa huruf besar atau kecil tidak penting di sini. Kiat: Mengaktifkan beberapa batasan, memungkinkan kita memperhatikan dari mana hal-hal itu berasal dari langkah selanjutnya. Jadi saya telah mengkapitalisasi J oe.

  • Perhatikan juga bahwa untuk yang sederhanahostname (mis. / Etc / hostname = 'machine') untuk menghasilkan FQDN dengan benar, alias bernama 'mesin' harus ada di / etc / hosts. Itu sebabnya alias joe ada di sana. (BTW, tidak apa-apa untuk memiliki alias itu bahkan jika Anda tidak menggunakannya.) Kalau tidak, alias ini tidak diperlukan, atau digunakan.

  • Perhatikan juga bahwa 'domain.net' harus dapat diatasi, yaitu harus ada catatan A untuk itu di DNS. Inilah yang disebut ' resolvable ' (yaitu oleh resolver DNS).

3) Sekarang instal pengaturan baru ini dari / etc / hostname dan / etc / hosts ke kernel, dengan menjalankan:

    $ /etc/init.d/hostname.sh       # Or by rebooting

4) Uji nama host

$ hostname      # Reports the hostname previously read from in /etc/hostname.
joe

ATAU

$ hostname
joe.xyz.com

Kiat:

  • Perhatikan bahwa ini bukan apa / etc / hostname saat ini, seperti jika Anda mengeditnya lagi sekarang, tetapi apa yang dibaca sebelumnya oleh skrip /etc/init.d/hostname.sh, mungkin sebagai hasil dari reboot.

  • Perhatikan juga bahwa 'j' adalah huruf kecil, jadi ini menunjukkan itu berasal dari / etc / hostname, bukan / etc / hosts.

5) Uji FQDN

$ hostname --all-fqdn   #reports the FQDN(s) matched in /etc/hosts.
Joe.xyz.com             #  It searches /etc/hosts for the joe in /etc/hostname.
                        #  Notice that the 'J' is uppercase.  
                        #     This suggest it came from /etc/hosts.

6) Uji nama domain DNS

$ dnsdomainname         #reports the computed DNS doman name    
xyz.com                 #  (i.e. the right most part of the FQDN; 
                        #    the part to the right of the first, left most, dot)
                        #  This is coming from Joe.xyz.com in /hosts, 
                        #    after 'Joe.' is removed.

Sekarang ini akan membuat pengaturan web dan server email lebih mudah.

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.