dnsmasq: nie udało się utworzyć gniazda nasłuchującego dla portu 53: Adres już używany

16

Konfigurowałem serwer jak w poniższym linku https://help.ubuntu.com/community/Dnsmasq

root@user-desktop:/etc/init.d# sudo apt-get install dnsmasq
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  dnsmasq
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/15.4 kB of archives.
After this operation, 120 kB of additional disk space will be used.
Selecting previously unselected package dnsmasq.
(Reading database ... 146283 files and directories currently installed.)
Unpacking dnsmasq (from .../dnsmasq_2.59-4_all.deb) ...
Processing triggers for ureadahead ...
Setting up dnsmasq (2.59-4) ...
 * Starting DNS forwarder and DHCP server dnsmasq                                                                                                                                                            
dnsmasq: failed to create listening socket for port 53: Address already in use [fail]
invoke-rc.d: initscript dnsmasq, action "start" failed.
Baran
źródło

Odpowiedzi:

8

Mam taki sam problem jak ty. Myślę, że to prawda od 12.10, ale ten wątek został zamknięty przed wydaniem 12.10.

Robiąc trochę googlingu (głównie zainspirowanego stąd ), znalazłem to rozwiązanie:

  • edytuj /etc/NetworkManager/NetworkManager.confplik ze swoim ulubionym edytorem
  • skomentuj linię dns=dnsmasq
  • zrestartuj menedżera sieci: sudo service network-manager restart

Ale w konfiguracji dnsmasq ( /etc/dnsmasq.conf) musisz wysłuchać zapytań DNS hosta lokalnego za pomocą wiersza listen-address=127.0.0.1.

Jeśli zmienisz konfigurację dnsmasq, nie zapomnij uruchomić sudo /etc/init.d/dnsmasq restart

Mam nadzieję, że to pomoże.

Grumot
źródło
2
Komentowanie dns=dnsmasqnie oznacza, że ​​nie jest cel instalowania DNSmasq. Dokonałem listen-address=127.0.0.1zmiany i wydaje się, że teraz działa dobrze.
1
Nie. Uniemożliwiasz NetworkManagerowi uruchomienie dnsmasq, a zamiast tego uruchamianie go niezależnie.
MrMas
4

Miałem ten sam problem.

dnsmasq-basezostał zainstalowany i nasłuchiwał na porcie 53 uniemożliwiając dnsmasquruchomienie.

Możliwe jest użycie funkcji dnsmasq-baseinsead w dnsmasqtym samym celu: wystarczy użyć innego katalogu konfiguracji: ten umieszczony w Network Managerfolderze:

/etc/NetworkManager/dnsmasq.d/
e-1
źródło
4

Sprawdź, co nasłuchuje na porcie 53 (domena) za pomocą:

sudo ss -lp "sport = :domain"

Wyłącz dowolną usługę działającą na tym porcie. Zazwyczaj tak jest systemd-resolved.

Mam zamiar maskto zrobić, aby nie uruchamiało się automatycznie przy ponownym uruchomieniu.

sudo systemctl disable systemd-resolved
sudo systemctl mask systemd-resolved

Aby cofnąć to, co zrobiłeś:

sudo systemctl unmask systemd-resolved
sudo systemctl enable systemd-resolved

Również sudo update-rc.d systemd-resolved disablemoże również zatrzymać jej auto począwszy od startu, ale ja jej nie testowane. Użyj defaultszamiast, disableaby cofnąć polecenie.


Lub możesz zmienić, na którym porcie nasłuchuje dnsmasq, edytując plik konfiguracyjny:

sudo nano /etc/dnsmasq.conf

Naciśnij Ctrl+ Wi wpisz listen-address=i naciśnij Enter.

Odkomentuj linię i dodaj 127.0.0.1 z innym portem niż 53, na przykład:

listen-address=127.0.0.1#5300
Shayan
źródło
0

EDYCJA: trochę google, i znalazłem rozwiązanie . Wygląda na to, że menedżer sieci zależy od pakietu o nazwie „dnsmasq-base”, który zapewnia niektóre funkcje dnsmasq. Wpis Dnsmasq na Wiki Ubuntu stwierdza, że

„Pamiętaj, że pakiet„ dnsmasq ”zakłóca działanie Menedżera sieci, który może używać„ dnsmasq-base ”do świadczenia usług DHCP podczas udostępniania połączenia internetowego. Dlatego jeśli używasz menedżera sieci (w porządku tylko w prostych konfiguracjach), zainstaluj dnsmasq -base, ale nie dnsmasq. Jeśli masz bardziej skomplikowaną konfigurację, odinstaluj menedżera sieci, użyj dnsmasq lub podobnego oprogramowania (bind9, dhcpd itp.) i skonfiguruj wszystko ręcznie ”.

Innymi słowy: chcesz użyć dnsmasq? Więc lepiej wiedz, co robisz. Wspomniane wcześniej rozwiązanie sugeruje zastąpienie dnsmasq-base przez dnsmasq w następujący sposób (pierwsze polecenie usunie także menedżera sieci):

sudo apt-get remove dnsmasq-base
sudo apt-get install dnsmasq
sudo apt-get install network-manager network-manager-gnome

A oto kilka ogólnych uwag na temat znajdowania bloków portów: możesz znaleźć to, co nasłuchuje na którym porcie, używając lsof:

lsof -Pn +M -i4

wyświetli listę portów IPv4 z powodu -i4, natomiast

lsof -Pn +M -i6

wyświetli listę portów IPv6. Lub wpisz tylko

lsof -Pn +M | grep ':53 (LISTEN)'

Powinno to (miejmy nadzieję) powiedzieć, co używa portu 53. -PnPrzełączniki wiersza poleceń zapobiegają konwersji numeru portu / adresu IP hosta na nazwy.

Alternatywnie, uruchom

netstat -utlnp
styczeń
źródło
3
Nie usuwaj dnsmasq-base; od tego zależy pakiet dnsmasq!
jdthood,
3
Bądź ostrożny, gdy to robię, po uruchomieniu nie sudo apt-get remove dnsmasq-basemiałem połączenia z siecią, więc nie mogłem wykonać kolejnych kroków! Rozwiązaniem okazało się uruchomienie dhclient w celu uzyskania nowego adresu IP.
Glenjamin
Zostałem ugryziony przez to .. musiałem ponownie włączyć systemd-
resolver