Skonfiguruj dnsmasq programu NetworkManager do korzystania z / etc / hosts

22

Zainstalowałem DNSMASQ, ale nie uruchamiał się, ponieważ 53 port był zajęty.

Dowiedziałem się, że ubuntu ma już pakiet dnsmasq i działa.

Teraz problem polega na ... Chcę tylko móc rozwiązać moje hosty w / etc / hosts przez to

tj .: nslookup somehostonlan localhost do rozwiązania w przypadku niektórych adresów IP pobranych z pliku / etc / hosts.

ale tak się nie dzieje.

Czemu? BTW, ponieważ buforujący serwer DNS działa dobrze. Chcę tylko, aby rozwiązała hosty z pliku / etc / hosts i to wszystko

bakytn
źródło

Odpowiedzi:

22

Aby przyspieszyć Internet, Ubuntu 12.04 dodał wtyczkę do NetworkManager, aby uruchomić dnsmasq, lokalny serwer dns, który buforuje wpisy dns. Problem polega na tym, że wtyczka na stałe zapisała ciąg --no-hosts.

Jednym z rozwiązań jest więc skomentowanie wiersza ładującego wtyczkę w pliku konfiguracyjnym NetworkManager i zrestartowanie NetworkManagera:

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

Innym rozwiązaniem jest zawinięcie dnsmasq w celu odfiltrowania niepożądanych argumentów:

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

Oznacz błąd jako mający wpływ na Ciebie.

Kolejne rozwiązanie bez łatania plików systemowych

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

addn-hosts=/etc/hosts
kbenoit
źródło
7

Ten błąd nadal dotyczył mnie nawet teraz (Ubuntu 14.04).

W końcu znalazłem rozwiązanie, które po prostu dodaję wiersz „addn-hosts = / etc / hosts” do pliku konfiguracyjnego dnsmasq pakietu Newworkmanager.

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

Chodzi o to, że dodajemy / etc / hosts jako dodatkowy plik hosta.

Nawet gdybym mógł znaleźć rozwiązanie, rozczarowuje mnie zakodowana na stałe opcja „--no-hosts” w pliku binarnym / usr / sbin / NetworkManager.

harish2704
źródło
7

Według stanu na sierpień 2015 r. Pozostałe odpowiedzi są nieaktualne.

Prosta odpowiedź

  1. Utwórz /etc/NetworkManager/dnsmasq.d/hosts.conf.
  2. Umieść wiersze jak address=/whatever/1.2.3.4w tym. Zobacz dokumenty (poszukaj --address). Symbole wieloznaczne są możliwe: address/.whatever./1.2.3.4.
  3. Kill dnsmasq( błąd ).
  4. Ponownie uruchom go: $ service network-manager restart.
Mightyiam
źródło
1

dnsmasq powinien automatycznie użyć /etc/hostspliku. Można to wyłączyć za pomocą -hopcji wiersza polecenia lub no-hostsopcji konfiguracji. Nie spodziewałbym się też, że zostanie ustawiony w domyślnej konfiguracji.

Spróbuj zmusić dnsmasq do ponownego załadowania pliku hosts. (Zmiany w pliku konfiguracyjnym wymagają ponownego uruchomienia). Każde z tych poleceń powinno działać.

service dnsmasq reload

kill -HUP $(pidof dnsmasq)

Jeśli pracujesz z określonym systemem, no-hostspowinieneś być w stanie skorzystać z addn-hostsopcji, aby go zastąpić. Zwykle byłby używany do odczytu dodatkowego pliku w /etc/hostsformacie. Można tego użyć, aby określić dodatkowe dane hosta, które DNS ma zapewnić, ale których nie chce w /etc/hostspliku. Może to służyć do zarządzania menedżerem pakietów i powiązanymi narzędziami, /etc/hostspodczas gdy dodatkowe dane hostów znajdują się w alternatywnym pliku.

BillThor
źródło
/etc/dnsmasq.conf skomentował wszystkie opcje.
Przeładowanie
Nie wiem co zrobiłem. wydaje się, że teraz działa
bakytn
3
Dlaczego miałbyś odpowiadać na to pytanie, skoro tak naprawdę nie znasz odpowiedzi? Fakt, że „nie spodziewałbyś się, że zostanie ustawiony w domyślnej konfiguracji”, nie ma w tym przypadku znaczenia, ponieważ w rzeczywistości jest on ustawiony i zakodowany na stałe w dnsmasq w NetworkManger.
Justin Buser
dnsmasq musi zostać zrestartowany, aby załadować zmiany w plikach konfiguracyjnych
txwikinger
@txwikinger Wiele plików opcji jest ponownie czytanych po dnsmasqodebraniu HUPsygnału. Obejmuje to zarówno pliki, jak /etc/hostsi /etc/ethers. Czas ponownego uruchomienia jest na tyle szybki, że klienci rzadko otrzymają odpowiedź.
BillThor