Konfigurasikan dnsmasq NetworkManager untuk menggunakan / etc / hosts

22

Saya telah menginstal DNSMASQ tetapi tidak dimulai karena port 53 sedang sibuk.

Saya menemukan bahwa ubuntu sudah memiliki paket dnsmasq dan berfungsi.

Sekarang masalahnya adalah ... Saya hanya ingin dapat menyelesaikan host saya di / etc / hosts melaluinya

yaitu: nslookup somehostonlan localhost harus diselesaikan ke IP tertentu yang diambil dari file / etc / hosts.

tetapi ini tidak terjadi.

Mengapa? BTW, sebagai server DNS caching itu berfungsi dengan baik. Saya hanya ingin menyelesaikan host dari / etc / hosts file itu saja

bakytn
sumber

Jawaban:

22

Untuk mempercepat internet, ubuntu 12.04 telah menambahkan plugin ke NetworkManager untuk memulai dnsmasq, server dns lokal yang menyimpan entri dns. Masalahnya adalah plugin telah melakukan hardcod pada string --no-hosts.

Jadi salah satu solusinya adalah mengomentari baris yang memuat plugin dalam file konfigurasi NetworkManager dan restart NetworkManager:

sudo mv /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.bak
sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.bak | sed -e "s/^\(dns=dnsmasq\)$/#\1/" > /etc/NetworkManager/NetworkManager.conf'
sudo restart network-manager

Solusi lain adalah dengan membungkus dnsmasq untuk menyaring argumen yang tidak diinginkan:

sudo mv /usr/sbin/dnsmasq /usr/sbin/dnsmasq.bin
sudo bash -c 'cat > /usr/sbin/dnsmasq' << EOF
#!/bin/sh
dnsmasq=/usr/sbin/dnsmasq.bin

exec $dnsmasq `echo $@ | sed -e s/--no-hosts//`
EOF

sudo chmod 755 /usr/sbin/dnsmasq

Tandai bug sebagai yang memengaruhi Anda.

Solusi lain tanpa menambal file sistem

cat /etc/NetworkManager/dnsmasq.d/hosts.conf 

addn-hosts=/etc/hosts
kbenoit
sumber
7

Bug ini masih mempengaruhi saya sampai sekarang (Ubuntu 14.04).

Akhirnya saya menemukan solusi, cukup tambahkan baris ini 'addn-hosts = / etc / hosts' ke file konfigurasi dnsmasq dari paket Newworkmanager.

echo 'addn-hosts=/etc/hosts' > /etc/NetworkManager/dnsmasq.d/etc-hosts
service network-manager restart

Idenya adalah, kami menambahkan / etc / hosts sebagai file host tambahan.

Bahkan jika saya dapat menemukan solusi, opsi '-no-hosts' di dalam kode biner / usr / sbin / NetworkManager mengecewakan saya.

harish2704
sumber
7

Pada Agustus 2015, jawaban lain sudah usang.

Jawaban sederhana

  1. Buat /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Letakkan garis seperti address=/whatever/1.2.3.4di dalamnya. Lihat dokumen (cari --address). Wildcard mungkin: address/.whatever./1.2.3.4.
  3. Bunuh dnsmasq( bug ).
  4. Restart: $ service network-manager restart.
perkasa
sumber
1

dnsmasq harus secara otomatis menggunakan /etc/hostsfile tersebut. Ini dapat dinonaktifkan oleh -hopsi baris perintah atau no-hostsopsi konfigurasi. Saya juga tidak berharap akan diatur dalam konfigurasi default.

Coba paksakan dnsmasq untuk memuat ulang file hostnya. (Perubahan pada file konfigurasi memerlukan restart). Salah satu dari perintah ini harus berfungsi.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

Jika Anda bekerja dengan sistem yang telah no-hostsditentukan, Anda harus dapat menggunakan addn-hostsopsi untuk menimpanya. Biasanya, ini akan digunakan untuk membaca file tambahan dalam /etc/hostsformat. Ini dapat digunakan untuk menentukan data host tambahan yang ingin Anda sediakan DNS, tetapi tidak ingin di /etc/hostsfile Anda . Ini dapat digunakan untuk memungkinkan manajer paket dan alat terkait untuk mengelola /etc/hostssementara data host tambahan disediakan dalam file alternatif.

BillThor
sumber
/etc/dnsmasq.conf memiliki semua opsi dikomentari. Memuat ulang tidak membantu
bakytn
Saya tidak tahu apa yang saya lakukan. tampaknya berfungsi sekarang
bakytn
3
Mengapa Anda menjawab ini ketika Anda sebenarnya tidak tahu jawabannya? Fakta bahwa Anda "tidak akan mengharapkan untuk diatur dalam konfigurasi default" tidak menjadikannya sebagai kasus karena sebenarnya diatur dan dikodekan ke dalam dnsmasq di NetworkManger.
Justin Buser
dnsmasq harus direstart untuk memuat perubahan dalam file konfigurasi
txwikinger
@txwikinger Banyak file opsi dibaca ulang saat dnsmasqmenerima HUPsinyal. Ini termasuk file /etc/hostsdan /etc/ethers. Waktu mulai ulang cukup cepat, sehingga jarang klien tidak mendapat respons.
BillThor