Dalam beberapa tahun saya telah menggunakan Linux sebagai sistem utama saya, khususnya Fedora, saya selalu melihat nama host saya ditetapkan menjadi "localhost", dengan pengecualian ketika saya terhubung ke beberapa jaringan dan itu menjadi IP saya. Hari ini saya mengalami perilaku berikut yang sulit saya pahami.
Saya mengatur instalasi Ubuntu pada partisi lain dari laptop saya, mengatur nama komputer / nama host selama instalasi Ubuntu. Ketika saya reboot kembali ke Fedora, Fedora telah memperbarui nama host saya ke nama yang saya atur di instal Ubuntu.
Saya selalu mengira nama host telah dikonfigurasi dan disimpan pada partisi instalasi distro, dan memang isi / etc / hostname di Fedora masih membaca "localhost.localdomain", tetapi menjalankan hostname
perintah menunjukkan nama host baru. Kedua instalasi berbagi partisi boot efi, tetapi diskrit. Saya bertanya-tanya dari mana dan mengapa instalasi Fedora membaca nama host baru?
hosts:
di /etc/nsswitch.conf?hosts: files mdns4_minimal [NOTFOUND=return] dns myhostname
Jawaban:
The
hostname
Program melakukan syscall uname, seperti dapat dilihat dari berjalan:Dari halaman manual syscall uname , dikatakan syscall mengambil struct berikut dari kernel:
Jadi nama domain berasal dari sistem NIS / YP, jika kami percaya komentar itu. Jadi, kemungkinan besar, mungkin ada layanan NIS / YP di jaringan Anda yang melacak nama untuk Anda yang diatur oleh OS ubuntu.
sumber
hostname(1)
halaman manual yang menjelaskan bagaimana nama host diatur dan dikembalikan. Meskipun ada kesamaan nama, nama domain NIS / YP tidak ada hubungannya dengan nama domain FQDN / DNS yang dikembalikan oleh resolver. Jika Anda belum mengonfigurasi NIS / YP maka nama domain NIS / YP akan tidak disetel.Ada dua konsep hostname (!) Yang independen pada sistem linux.
Apa pun yang dianggap kernel sebagai nama host lokal (seperti ditangani oleh gethostname / uname dan panggilan sistem sethostname) terlepas dari konektivitas jaringan apa pun - mekanisme ini akan tetap ada jika Anda membangun kernel tanpa kemampuan untuk jaringan TCP / IP.
Ada satu atau lebih nama host yang benar-benar terhubung ke TCP / IP (atau tumpukan jaringan lainnya - tidak semua jaringan di dunia adalah IP!) Alamat yang dimiliki host, dan ini ditangani di userspace oleh fungsi perpustakaan resolver (bagian dari libc), yang akan menentukan nama dengan menafsirkan sumber (file lokal / etc / hosts, DNS, NIS ....) sesuai dengan aturan yang Anda berikan pada file konfigurasi yang sesuai (/etc/nsswitch.conf, / etc /host.conf dll ...).
sumber
Mungkin Ubuntu terhubung ke internet melalui router rumah Anda selama instalasi. Untuk melakukan ini, ia melaporkan nama hostnya ke router dan memperoleh IP lokal sementara.
Ketika sekarang Anda reboot ke Fedora, itu akan terhubung ke router yang sama untuk mendapatkan alamat IP-nya, tetapi sewa lama yang dibuat untuk Ubuntu masih valid. Karena ini adalah mesin yang sama dengan kartu jaringan yang sama dan alamat MAC perangkat keras yang sama, itu akan menggunakan kembali sewa yang sama.
Dugaan saya adalah bahwa router mengirimkan nama host tempat penyewaan IP didaftarkan dan Fedora mengambilnya.
Sayangnya saya tidak punya bukti atau kutipan untuk mendukung jawaban saya, saya hanya bisa berbicara dengan pengalaman pribadi menginstal Ubuntu di dual-boot dengan Windows. Saat itu, Ubuntu menolak untuk menetapkan nama host yang sama selama instalasi seperti yang saya gunakan di Windows, karena mengklaim bahwa nama itu sudah ada di jaringan. Sepertinya kita mengalami hal serupa di sini.
Untuk memverifikasi apakah apa yang saya kira juga berlaku untuk situasi Anda, cobalah mencabut sewa IP Anda di antarmuka konfigurasi router Anda dan kemudian reboot Fedora. Jika tidak lagi menggunakan nama host Ubuntu, maka saya harus benar.
sumber