Cara membuat mesin dapat diakses dari LAN menggunakan nama hostnya


120

Berikut detail mesin yang ingin saya akses menggunakan nama hostnya:

$ hostname
hostname
$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   hostname.company.local  hostname

Ini adalah instalasi Debian 6 default (Squeeze), jadi saya belum mengutak-atik apa pun.

Ini yang saya dapatkan dari mesin (menjalankan Debian Unstable) mencoba mengakses mesin di atas:

$ ping hostname
ping: unknown host hostname
$ ping hostname.company.local
ping: unknown host hostname.company.local
$ cat /etc/resolv.conf
nameserver 192.168.2.21
nameserver 192.168.2.51
search company.local

Anda perlu melakukan sesuatu pada klien (mesin tempat Anda menjalankan ping), atau pada mesin yang dikonsultasikan dengan klien. Apa OS pada klien? Apa konfigurasi DNS-nya?
Gilles

Apa itu konfigurasi DNS? Juga, lihat posting terbaru.
tshepang

1
Apakah jawaban saya adalah hal-hal yang Anda cari? Jika demikian, pertanyaan perlu menyederhanakan - yang tahu tentang pingdan /etc/hoststapi bukan tentang DNS sih?
Gilles

Terima kasih banyak. Akan lihat. Oh, dan ini lebih merupakan artikel daripada jawaban :)
tshepang

3
Jawabannya adalah "instal dan konfigurasikan dnsmasq". Selesai. :)
Warren Young

Jawaban:


145

Di Internet, termasuk jaringan lokal, mesin saling memanggil berdasarkan alamat IP . Untuk mengakses mesin B dari mesin A menggunakan nama mesin B, mesin A harus memiliki beberapa cara untuk memetakan nama B ke alamat IP-nya. Ada tiga cara untuk mendeklarasikan nama mesin di A:

  • sebuah file host . Ini adalah file teks sederhana yang memetakan nama ke alamat.
  • yang sistem nama domain (DNS) . Ini adalah metode yang digunakan di Internet global. Misalnya, ketika Anda memuat halaman ini di browser, hal pertama yang dilakukan komputer Anda adalah membuat permintaan DNS untuk mengetahui alamat unix.stackexchange.com.
  • database nama lain seperti NIS , LDAP atau Direktori Aktif . Ini digunakan di beberapa jaringan perusahaan, tetapi tidak terlalu sering (banyak jaringan yang menggunakan NIS, LDAP atau AD untuk database pengguna menggunakan DNS untuk nama mesin). Jika jaringan Anda menggunakan salah satunya, Anda memiliki administrator jaringan profesional dan harus bertanya kepadanya apa yang harus dilakukan.

Ada banyak cara di mana ini dapat bekerja dalam praktiknya; tidak mungkin untuk menutupi semuanya. Dalam jawaban ini, saya akan menjelaskan beberapa situasi umum.

File host

Metode file hosts memiliki keunggulan bahwa itu tidak memerlukan metode khusus. Ini bisa rumit jika Anda memiliki beberapa mesin, karena Anda harus memperbarui setiap mesin ketika nama satu mesin berubah. Ini tidak cocok jika alamat IP B ditugaskan secara dinamis (sehingga Anda mendapatkan yang berbeda setiap kali Anda terhubung ke jaringan).

File hosts adalah daftar garis sederhana yang memetakan nama ke alamat IP. Ini terlihat seperti ini:

127.0.0.1       localhost localhost.localdomain
198.51.100.42   darkstar darkstar.bands

Pada sistem unix, file host adalah /etc/hosts. Di Windows, itu c:\windows\system32\drivers\etc\hosts. Hampir setiap sistem operasi yang dapat Anda sambungkan ke Internet memiliki file yang serupa; Wikipedia memiliki daftar .

Untuk menambahkan entri untuk B di file host A:

  1. Tentukan alamat IP B. Pada B, jalankan perintah ifconfig(jika perintah tidak ditemukan, coba /sbin/ifconfig). Output akan berisi baris seperti ini:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab
              inet addr:10.3.1.42  Bcast:10.3.1.255  Mask:255.255.255.0
    

    Dalam contoh ini, alamat IP B adalah 10.3.1.42. Jika ada beberapa inet addr:baris, pilih satu yang sesuai dengan kartu jaringan Anda, jangan pernah loentri atau terowongan atau entri virtual.

  2. Edit file host pada A. Jika A menjalankan beberapa sistem unix, Anda harus mengedit /etc/hostssebagai pengguna super; lihat Bagaimana saya menjalankan perintah sebagai administrator sistem (root) .

DHCP + DNS di jaringan rumah atau kantor kecil

Metode ini adalah yang paling sederhana jika Anda memiliki peralatan yang diperlukan. Anda hanya perlu mengkonfigurasi satu perangkat, dan semua komputer Anda akan tahu tentang nama masing-masing. Metode ini mengasumsikan komputer Anda mendapatkan alamat IP mereka melalui DHCP , yang merupakan metode bagi komputer untuk secara otomatis mengambil alamat IP ketika mereka terhubung ke jaringan. Jika Anda tidak tahu apa DHCP itu, mereka mungkin melakukannya.

Jika jaringan Anda memiliki router rumah , itu adalah tempat terbaik untuk mengkonfigurasi nama untuk mesin yang terhubung ke router itu. Pertama, Anda perlu mengetahui alamat MAC dari B. Setiap perangkat jaringan memiliki alamat MAC yang unik. Pada B, jalankan perintah ifconfig -a(jika perintah tidak ditemukan, coba /sbin/ifconfig -a). Output akan berisi baris seperti ini:

    eth1      Link encap:Ethernet  HWaddr 01:23:45:67:89:ab

Dalam contoh ini alamat MAC adalah 01:23:45:67:89:ab. Anda harus memilih jalur HWaddr yang sesuai dengan port jaringan yang terhubung ke router melalui kabel (atau kartu wifi jika Anda terhubung melalui wifi). Jika Anda memiliki beberapa entri dan Anda tidak tahu yang mana, colokkan kabel dan lihat perangkat jaringan mana yang menerima alamat IP ( inet addrbaris tepat di bawah).

Sekarang, pada antarmuka web router Anda, cari pengaturan seperti "DHCP". Nama dan lokasi pengaturan sepenuhnya tergantung pada model router, tetapi sebagian besar memiliki pengaturan dasar yang sama. Berikut ini tampilannya pada firmware Tomat :

tangkapan layar tomat

Masukkan alamat MAC, alamat IP, dan nama yang diinginkan. Anda dapat memilih alamat IP apa pun pada rentang alamat jaringan lokal Anda. Sebagian besar router rumah sudah dikonfigurasikan sebelumnya untuk rentang alamat form 192.168. x . y atau 10. x . y . z . Misalnya, pada router Tomat yang ditunjukkan di atas, pada tab "Network", ada pengaturan "alamat IP router" dengan nilai 10.3.0.1 dan pengaturan "subnet mask" dengan nilai 255.255.255.0, yang berarti bahwa komputer di jaringan lokal harus memiliki alamat dari formulir 10.3.0. z . Ada juga berbagai alamat untuk alamat DHCP yang ditetapkan secara otomatis (10.3.0.129–10.3.0.254); untuk alamat DHCP yang Anda tentukan secara manual, pilih satu yang tidak ada dalam kisaran ini.

Sekarang hubungkan B ke jaringan, dan itu akan mendapatkan alamat IP yang Anda tentukan dan itu akan dapat dijangkau dengan nama yang ditentukan dari mesin apa pun dalam jaringan.

Buat server DNS Anda sendiri dengan Dnsmasq

Jika Anda tidak memiliki router rumah yang mampu, Anda dapat mengatur fungsionalitas yang sama pada mesin Linux apa pun. Saya akan menjelaskan cara menggunakan Dnsmasq untuk mengatur DNS . Ada banyak program serupa lainnya; Saya memilih Dnsmasq karena mudah dikonfigurasikan dan ringan (itulah yang digunakan oleh router Tomato di atas, misalnya). Dnsmasq tersedia di sebagian besar distribusi Linux dan BSD untuk PC, server dan peralatan jaringan.

Pilih komputer yang selalu aktif, yang memiliki alamat IP statis, dan itu menjalankan semacam Linux atau BSD; sebut saja S (untuk server). Pada S, instal dnsmasqpaket (jika belum ada). Di bawah ini saya akan menganggap bahwa file konfigurasi adalah /etc/dnsmasq.conf; lokasi dapat bervariasi pada beberapa distribusi. Sekarang Anda perlu melakukan beberapa hal.

  • Beri tahu Dnsmasq untuk melayani nama host Anda selain dari yang didapatnya dari Internet. Cara paling sederhana adalah dengan memasukkan nama dan alamat IP /etc/hosts(lihat bagian “File hosts” di atas), dan pastikan bahwa /etc/dnsmasq.conftidak ada no-hostsarahan yang tidak dikomentari. (Baris yang dimulai dengan a #dikomentari.) Anda dapat meletakkan nama-nama di file yang berbeda; jika Anda melakukannya, menempatkan garis addn-hosts=/path/to/hosts/filedi /etc/dnsmasq.conf.
  • Beri tahu Dnsmasq cara mendapatkan alamat IP untuk nama mesin di Internet.

    • Jika Anda menjalankan Debian, Ubuntu atau turunan, instal resolvconfpaket. Dalam kebanyakan kasus umum, semuanya akan bekerja di luar kotak.
    • Jika administrator jaringan atau ISP Anda memberi Anda alamat server DNS, masukkan /etc/dnsmasq.conf, misalnya:

      server=8.8.8.8
      server=8.8.4.4
      
    • Jika Anda tidak tahu apa pengaturan DNS Anda saat ini, lihat di file /etc/resolv.conf. Jika Anda melihat garis seperti nameserver 8.8.8.8, menempatkan garis server=8.8.8.8di /etc/dnsmasq.conf. Setelah Anda berubah /etc/dnsmasq.conf, mulai ulang Dnsmasq. Perintah untuk melakukan itu tergantung pada distribusi; kemungkinan tipikal termasuk restart dnsmasqatau /etc/init.d/dnsmasq restart.

  • Katakan kepada S untuk menggunakan layanan Dnsmasq untuk semua permintaan nama host. Edit file /etc/resolv.conf(sebagai root), hapus setiap nameserverbaris, dan nameserver 127.0.0.1ganti.
    • Jika Anda menggunakan resolvconf pada Debian atau Ubuntu, /etc/resolv.confmungkin kurang optimal jika Anda menginstal resolvconfpaket dengan jaringan yang aktif dan berjalan. Pastikan bahwa file-file tersebut base, headdan taildi /etc/resolvconf/resolv.conf.d/direktori tidak mengandung nameserverentri, kemudian jalankan resolvconf -u(sebagai root).
  • Beri tahu mesin lain untuk menggunakan S sebagai server DNS. Edit /etc/resolv.confdan ganti semua nameserverbaris dengan satu di nameserver 10.3.0.2mana 10.3.0.2 adalah alamat IP S (lihat di atas untuk mengetahui cara mencari alamat IP S).

Anda juga dapat menggunakan Dnsmasq sebagai server DHCP , sehingga mesin dapat memperoleh alamat yang sesuai dengan namanya secara otomatis. Ini di luar cakupan jawaban ini; lihat dokumentasi Dnsmasq (tidak sulit). Perhatikan bahwa hanya ada satu server DHCP pada jaringan lokal yang diberikan (definisi yang tepat dari jaringan lokal berada di luar cakupan jawaban ini).

Nama-nama di Internet global

Sejauh ini, saya telah mengasumsikan jaringan lokal. Bagaimana jika Anda ingin memberi nama pada mesin yang ada di sudut dunia yang berbeda? Anda masih dapat menggunakan salah satu teknik di atas, kecuali bahwa bagian-bagian yang melibatkan DHCP hanya berlaku dalam jaringan lokal. Atau, jika mesin Anda memiliki alamat IP publik, Anda dapat mendaftarkan nama publik Anda sendiri untuk mereka. (Anda dapat menetapkan alamat IP pribadi ke nama publik juga; itu kurang umum dan kurang bermanfaat, tetapi tidak ada kesulitan teknis.)

Dapatkan nama domain Anda sendiri

Anda bisa mendapatkan nama domain Anda sendiri dan menetapkan alamat IP ke nama host di dalam domain ini. Anda harus mendaftarkan nama domain dengan penyedia nama domain; ini biasanya berharga $ 10– $ 15 / tahun (untuk domain termurah). Gunakan antarmuka web penyedia nama domain Anda untuk menetapkan alamat ke nama host.

DNS dinamis

Jika mesin Anda memiliki alamat IP dinamis, Anda dapat menggunakan protokol DNS dinamis untuk memperbarui alamat IP yang terkait dengan nama mesin ketika alamat berubah. Tidak semua penyedia nama domain mendukung DNS dinamis, jadi belanjalah sebelum Anda membeli. Untuk penggunaan pribadi, No-IP menyediakan layanan DNS dinamis gratis, jika Anda menggunakan domain sendiri (mis example.ddns.net.).


Buat server DNS Anda sendiri dengan Dnsmasq: bagaimana saya bisa mengatakan ke mesin lain untuk menggunakan S, ketika mesin lain menginstal Windows
Radu Rădeanu

@ Radu Anda dapat mengubah server DNS yang terkait dengan koneksi melalui panel kontrol di suatu tempat. Saya pikir Anda perlu menarik properti koneksi dari antarmuka jaringan.
Gilles

Saya memberi tahu c: \ windows \ system32 \ drivers \ etc \ hosts dan berhasil. Terima kasih!
Radu Rădeanu

Saya mencabut rambut saya mencari ini dan menemukannya di router seperti yang Anda sarankan. Terima kasih atas informasi terperinci!
Jason Turan

Jika itu adalah jaringan perusahaan, saya harus memberi tahu dept infrastruktur. untuk menambahkan mac linux saya ke daftar server DNS, kan?
WesternGun

24

Gunakan Multicast DNS (mDNS). Ini adalah protokol konfigurasi nol yang berfungsi pada subnet LAN. Tidak diperlukan server. Menggunakan .localTLD (yang sudah Anda gunakan).

Karena Anda bertanya, semuanya tampak berlebihan. Jika tidak, maka Anda mungkin tidak akan bertanya.


1
mDNS tampaknya tidak didukung di Windows tanpa menginstal sesuatu di setiap kotak windows.
Zitrax

1
@Zitrax Poin bagus (ini adalah situs * nix). Info yang relevan untuk pengaturan Windows dapat ditemukan di sana - relatif mudah.
mentega

3
Aka Zeroconf atau Bonjour. Disediakan oleh avahipaket. Anda dapat meminta jaringan Anda melalui avahi-browse -alrmisalnya.
DanMan

4
vi /etc/dhcp3/dhclient.conf

send host-name "ubuntu-laptop";

dan

/etc/init.d/networking restart

Haruskah saya menjalankan ini pada klien atau host?
tshepang

Bit pertama akan dilakukan pada server dhcp (dan Anda ingin menjalankan service restart dhcpd). Bagian kedua akan dilakukan pada klien, dan pada kebanyakan distro sekarang harus dijalankan sebagai service networking restart.
Caleb

Seingat saya, saya hanya perlu menjalankan ini di sisi klien ..
LanceBaynes

3

Komputer tidak hanya secara ajaib mengetahui nama host milik alamat IP apa. Bahkan di localhost, ada semacam pencarian yang terlibat.

Anda perlu mengkonfigurasi sistem lain untuk menggunakan beberapa jenis layanan pencarian nama. Ini bisa /etc/hostsdi klien, ldap, nsswitch, atau server DNS normal. Saya menggunakan binddan memasukkan semua mesin lokal di dalam domain lokal, lalu memilikinya melayani DNS untuk situs itu.

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.