Menggunakan DNSMasq untuk Resolusi Hostname Lokal

9

Saya sedang menyiapkan intranet rumah untuk saya dan teman sekamar saya. Ide saya adalah bahwa kita akan dapat menyimpan hal-hal seperti tagihan utilitas masa lalu di tempat yang lebih mudah diakses daripada laci di dapur dll. Pokoknya, saya memiliki Apache 2 berjalan pada Raspberry Pi, pada LAN saya, dan jika saya menggunakan alamat IP-nya, saya bisa mengakses halaman yang dilayani di Pi. Karena saya melakukan proyek ini lebih banyak untuk belajar tentang jaringan untuk memberikan layanan ke apartemen saya, saya pikir itu akan keren jika jaringan saya dapat memberikan resolusi nama host untuk LAN saya. Jadi, alih-alih mengarahkan browser saya ke 192.168.1.151, alamat IP Pi, saya bisa mengarahkannya ke oberon(nama hostnya) dan melihat halaman web yang dilayani oleh Pi.

Sekarang saya tahu saya bukan orang pertama yang ingin melakukan ini, jadi saya mulai dengan Googling. Pertanyaan ini, juga di Unix & Linux, telah sangat membantu saya: Cara membuat mesin dapat diakses dari LAN menggunakan nama hostnya . Pada titik ini, saya sudah mencoba segalanya dalam jawaban yang diverifikasi. Saya berpikir tentang menggunakan hostsfile, tetapi itu berarti saya harus memberitahu teman sekamar saya untuk mengkonfigurasi mesin mereka, yang saya tidak ingin mereka lakukan. Saya mencoba untuk memesan sewa DHCP untuk Pi pada router saya (NETGEAR WNR1000v2 (alias N150)), dan sementara reservasi berhasil, resolusi nama host tidak. Jenis ini membuat saya frustasi karena saya memberi tahu router saya IP dari Pi dan nama hostnya, namun masih tidak memberikan informasi ini kepada klien di LAN saya.

Dengan kedua metode ini tidak berfungsi, saya memutuskan untuk menginstal dnsmasqpada Pi. Tampaknya mudah dikonfigurasikan dan saya akan senang mempelajari alat baru. Saya menginstal dan menjalankannya dengan baik (tampaknya). Saya bisa digatau nslookupnama panggilan Pi (yang saya tetapkan /etc/hostsuntuk oberondan homenet) dan mendapatkan hasil yang benar. Saya dapat melakukan hal yang sama untuk nama internet seperti yahoo.comdan mendapatkan jawaban yang benar karena saya mengatur Google 8.8.8.8dan 8.8.4.4sebagai server cadangan di /etc/dnsmasq.conf. Lihat ini:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

Perhatikan bahwa SERVERis 127.0.0.1: oberonsedang mencari alamat IP-nya sendiri. Ini yang saya harapkan. Outputnya sama jika saya lakukan dig oberon @localhost. Karena hasil ini, saya berpikir itu dnsmasqberfungsi dengan baik. Jadi untuk membawanya ke tingkat berikutnya, saya ingin semua klien di LAN saya dapat dapat mengetikkan oberonbrowser mereka dan dibawa ke oberonhalaman indeks. Untuk ini saya tahu saya perlu mengkonfigurasi router saya (permintaan maaf jika ini jauh dari wilayah Unix & Linux).

Saya memiliki Netgear WNR1000v2 yang cukup saya kenal. Saya telah mengkonfigurasi port forwarding sehingga saya dapat SSH ke dalam Pi, dan saya telah melihat-lihat pengaturan lainnya juga. Saya tahu bahwa sebelum saya memulai proyek ini, saya mendapatkan server DNS dari ISP saya, tetapi sekarang saya ingin menggunakan server DNS tersebut tetapi juga digunakan 192.168.1.151sebagai cek terakhir. Jadi saya mengubah konfigurasi DNS router saya menjadi sebagai berikut:

Konfigurasi DNS baru router saya.  Percayalah pada saya ketika saya mengatakan dua entri pertama disediakan oleh ISP saya

Jadi dengan konfigurasi ini, saya diharapkan dapat melakukannya nslookup oberondi desktop (Windows) saya dan mendapatkan hasilnya 192.168.1.151. Tetapi ini tidak terjadi. Inilah yang terjadi:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

Menyetel ulang atau dnsflushingadaptor jaringan pada mesin Windows saya tidak mengubah apa pun.

Sekarang inilah mengapa saya agak merobek rambut saya di sini:

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

Jelas, dnsmasqbekerja dengan baik. Jika saya memberi tahu kotak Windows saya untuk menggunakan 192.168.1.151untuk menyelesaikan nama oberon, semuanya baik-baik saja ( .landomain adalah bagian dari konfigurasi dnsmasq, jadi saya berharap melihatnya di sana). Jika saya bisa mendapatkan router saya untuk memberitahu mesin Windows saya untuk digunakan 192.168.1.151ketika membuat permintaan DNS, saya harus baik!

Jadi sepertinya bagi saya bahwa masalahnya ada di router saya, tapi saya tidak tahu apa yang harus dilakukan selain mengubah server DNS untuk dimasukkan 192.168.1.151seperti yang sudah saya miliki. Adakah yang bisa membantu saya di sini? Saya akan mencoba memberikan informasi lebih lanjut yang diinginkan.

c.anna
sumber
Coba letakkan pi sebagai server DNS pertama, apakah itu berfungsi kemudian?
terdon
1
Router adalah tempat yang tepat untuk melakukan ini. Jika karena alasan tertentu Anda tidak berhasil membuat router Anda melayani nama untuk Pi, menjalankan dnsmasq pada Pi dan meminta router melayani Pi karena server DNS akan berfungsi. Sepertinya masalah Anda adalah mengkonfigurasi router Anda dengan benar.
Gilles 'SO- stop being evil'
Apakah Anda menginstal ulang penyewaan DHCP pada klien setelah memperbarui pengaturan DNS pada router? Konfigurasi DNS dikirim dalam penyewaan DHCP, sehingga harus mendapatkan sewa baru untuk mendapatkan pengaturan baru. Sebagai solusi alternatif, Anda mungkin juga melihat mDNS / zeroconf / avahi.
Patrick

Jawaban:

2

Masalah Anda terletak pada kesalahpahaman Anda tentang cara server DNS tersebut digunakan, saya tidak tahu detail yang tepat dari metode yang digunakan windows untuk memilih server DNS mana yang akan dicari, tetapi saya bertaruh primernya> sekunder> tersier / selalu /. Dan bahkan jika itu bukan dan round-robin, Anda masih akan meminta server 2 yang tidak membantu dari 3 kali.

Apa yang akan terjadi adalah server utama akan ditanyai. Jika itu habis, yang mungkin satu atau dua detik, server berikutnya akan ditanyai. DNS bukanlah sistem "konsensus", jika salah satu server jarak jauh dipertanyakan, pada akhirnya ia akan menemukan hasil bahwa nama host Anda secara resmi TIDAK ada, dari perspektifnya sebagai server DNS internet.

Anda memerlukan LAN dns Anda sendiri sebagai server DNS utama. Yang lain akan membuat server cadangan yang cocok tapi saya akan mempertimbangkan untuk menjatuhkan itu sepenuhnya.

Sebagai catatan, reverse dns (IP to name lookup) Anda memutuskan untuk "hostname.lan" tetapi tes resolusi maju Anda hanya dengan nama host saja. Anda juga harus memiliki resolusi maju untuk hostname.lan yang diatur di suatu tempat. Meskipun ada banyak "nama untuk alamat" pencarian maju untuk host, ada harapan bahwa ada pencarian terbalik IP ke nama, yang pada gilirannya memiliki nama yang cocok dengan catatan IP. Ini tidak selalu penting dan kadang-kadang membuat file log merengek, tetapi beberapa hal lebih sensitif terhadap hal ini daripada hal lain.

Juga, jangan lupa untuk menghapus semua file host host yang telah Anda tempatkan setelah Anda mendapatkan semuanya berfungsi (saya tidak tahu apakah itu relevan dengan dnsmasq, tidak pernah menggunakannya, saya memiliki konfigurasi yang serupa tetapi lebih rumit di tempat menggunakan nama ISC-BIND server, yang dapat Anda konfigurasikan penerusan ke server lain seperti yang Anda gunakan, atau cukup gunakan sebagai server DNS non-penerusan yang melakukan resolusi nama lengkap sendiri - yang mana telah saya atur).

Tidak perlu dikatakan, ketika Anda pertama kali berspekulasi Anda sangat jauh dari sendirian dalam membuat pengaturan ini, hampir setiap LAN perusahaan yang cukup berkembang dan banyak LAN rumah yang lebih maju akan memiliki pengaturan seperti ini.

iain
sumber
1
Terima kasih atas bantuan Anda iain! Saya mengerti apa yang Anda katakan tentang bagaimana DNS bukan sistem konsensus, jadi saya mengatur Pi ke server DNS utama di router saya. Saya kemudian memperbarui sewa DHCP di mesin Windows saya. Namun, nslookup oberontetap tidak berfungsi. Satu hal yang tidak saya sebutkan dalam teks posting asli saya adalah ketika nslookupgagal, dikatakan bahwa server yang digunakan adalah fe80alamat IPv6 - yang saya tahu adalah alamat tautan-lokal yang dipesan. Tapi saya tidak tahu apa artinya itu untuk DNS. Apakah kotak Windows saya menanyakan sendiri? dnsflushtidak mengubah perilaku ini.
c.anna
Dan untuk apa nilainya, resolusi nama host LAN juga tidak berfungsi pada perangkat iOS saya. Saya belum menyebutkannya karena saya memiliki lebih banyak kekuatan introspektif dengan Windows, tetapi jika masalah saya benar-benar muncul dari Windows saya tidak akan mengharapkan perangkat ini memiliki masalah yang sama.
c.anna
Juga, untuk menghilangkan kekhawatiran Anda tentang .landomain, saya mengonfigurasi dnsmasquntuk secara otomatis memperluas nama host sederhana untuk ditambahkan .lan. Running nslookup oberon.lan 192.168.1.151mengembalikan hasil yang diharapkan dariName: oberon.lan Address: 192.168.1.151
c.anna
Saya ingin tahu apakah ada "windowsism" di tempat kerja atau sesuatu, menamai host Anda langsung di bawah domain tingkat atas ('oberon.') Agak aneh, oberon.lan jauh lebih masuk akal. Satu hal yang perlu diperhatikan adalah sufiks domain dan 'domain pencarian' sering ditambahkan ke nama untuk menyelesaikannya, misalnya "oberon" dapat diselesaikan dan ditemukan sebagai "oberon.lan" jika lan ada dalam domain pencarian. Namun pertanyaan di atas tampaknya tidak menunjukkan hal ini, penggalian secara khusus memiliki periode terminating pada nama host, tetapi sangat menyadari hal itu ketika menguji!
iain
Hmm setelah memperbaiki dns primer Anda perlu re-dhcp windows (mengatur ulang adaptor harus melakukannya), kemudian periksa ipconfig /allapakah server dns yang benar sedang digunakan, jika benar Anda mungkin perlu flushdns. Tetapi saya tidak dapat memikirkan hal lain, itu harus bekerja.
sourcejedi
1

Mungkin agak terlambat, tetapi menonaktifkan ipv6 pada adaptor nirkabel saya berhasil.

Zahood
sumber
Suara positif: Selalu ide yang bagus. Kecuali jika sistem di luar sana telanjang dan membutuhkannya. Dan sejauh ini (September 2017) ada sangat sedikit peralatan pengguna-rumah yang memenuhi kategori itu, jika ada sama sekali.
SDsolar