dnsmasq: Erstellen des Listening-Sockets für Port 53 fehlgeschlagen: Adresse wird bereits verwendet

15

Ich habe einen Server wie im folgenden Link https://help.ubuntu.com/community/Dnsmasq eingerichtet

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.
RAM
quelle

Antworten:

8

Ich habe das gleiche Problem wie Sie. Ich denke, dass es seit 12.10 wahr ist, aber dieser Thread wurde vor der Veröffentlichung von 12.10 geschlossen.

Ich habe ein bisschen herum gegoogelt (meistens inspiriert von hier ) und diese Lösung gefunden:

  • bearbeite die /etc/NetworkManager/NetworkManager.confDatei mit deinem liebsten Editor
  • kommentiere die Zeile dns=dnsmasq
  • Starten Sie den Netzwerkmanager neu: sudo service network-manager restart

In Ihrer dnsmasq-Konfiguration ( /etc/dnsmasq.conf) müssen Sie jedoch sicherstellen, dass Sie die DNS-Abfragen von localhost mit der Leitung abhörenlisten-address=127.0.0.1 .

Wenn Sie die Konfiguration von dnsmasq ändern, vergessen Sie nicht, das Programm auszuführen sudo /etc/init.d/dnsmasq restart

Ich hoffe das wird helfen.

Grumot
quelle
2
Durch dns=dnsmasqdas Auskommentieren wird der Zweck der Installation von DNSmasq nicht zunichte gemacht. Ich habe die listen-address=127.0.0.1Änderung vorgenommen und es scheint jetzt gut zu funktionieren.
1
Nein. Sie hindern NetworkManager daran, dnsmasq zu starten und es stattdessen unabhängig zu starten.
MrMas
4

Ich hatte das gleiche problem

dnsmasq-basewurde auf Port 53 installiert und abgehört und konnte nicht dnsmasqgestartet werden.

Es ist möglich, dnsmasq-baseinsead von dnsmasqfür den gleichen Zweck zu verwenden: Verwenden Sie einfach ein anderes Konfigurationsverzeichnis: das im Network ManagerOrdner:

/etc/NetworkManager/dnsmasq.d/
e-1
quelle
3

Überprüfen Sie, was auf Port 53 (Domain) abgehört wird, mit:

sudo ss -lp "sport = :domain"

Deaktivieren Sie alle Dienste, die auf diesem Port ausgeführt werden. Das ist normalerweise so systemd-resolved.

Ich werde es auch mask, damit es beim Neustart nicht automatisch startet.

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

So machen Sie das, was Sie getan haben, rückgängig:

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

Es sudo update-rc.d systemd-resolved disablekann auch sein, dass es beim Booten nicht mehr automatisch gestartet wird, ich habe es jedoch nicht getestet. Verwenden Sie defaultsanstelle von disable, um den Befehl rückgängig zu machen.


Oder Sie können ändern, welchen Port dnsmasq abhört, indem Sie die Konfigurationsdatei bearbeiten:

sudo nano /etc/dnsmasq.conf

Drücken Sie Ctrl+ Wund tippen Sielisten-address= und drücken Sie die Eingabetaste.

Kommentieren Sie die Zeile aus und fügen Sie 127.0.0.1 mit einem anderen Port als 53 hinzu:

listen-address=127.0.0.1#5300
Shayan
quelle
0

EDIT: etwas googeln, und ich habe die Lösung gefunden . Es scheint, dass der Netzwerkmanager von einem Paket namens "dnsmasq-base" abhängt, das einige der dnsmasq-Funktionen bietet. Dnsmasq-Eintrag im Ubuntu-Wiki besagt das

"Beachten Sie, dass das Paket" dnsmasq "mit Network Manager interferiert, der" dnsmasq-base "verwenden kann, um DHCP-Dienste für die gemeinsame Nutzung einer Internetverbindung bereitzustellen. Wenn Sie daher Network Manager verwenden (nur bei einfachen Setups in Ordnung), installieren Sie dnsmasq -base, aber nicht dnsmasq. Wenn Sie eine kompliziertere Einrichtung haben, deinstallieren Sie den Netzwerkmanager, verwenden Sie dnsmasq oder eine ähnliche Software (bind9, dhcpd usw.) und konfigurieren Sie die Dinge von Hand. "

Mit anderen Worten: Sie möchten dnsmasq verwenden? Dann wissen Sie besser, was Sie tun. Die zuvor erwähnte Lösung schlägt vor, dnsmasq-base wie folgt durch dnsmasq zu ersetzen (der erste Befehl entfernt auch den Netzwerkmanager):

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

Und hier ein paar allgemeine Kommentare zum Finden, was Ihre Ports blockiert: Sie können herausfinden, was welchen Port überwacht, indem Sie Folgendes verwenden lsof:

lsof -Pn +M -i4

listet die IPv4-Ports aufgrund der -i4 auf, während

lsof -Pn +M -i6

listet die IPv6-Ports auf. Oder tippe einfach

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

Dies sollte Ihnen (hoffentlich) mitteilen, was Port 53 verwendet. Die -PnBefehlszeilenschalter verhindern die Umwandlung von Portnummer / Host-IPs in Namen.

Alternativ können Sie auch ausführen

netstat -utlnp
Januar
quelle
3
Entfernen Sie nicht dnsmasq-base. das dnsmasq-paket hängt davon ab!
Jdthood
3
Gehen Sie dabei vorsichtig vor, da ich nach dem Ausführen sudo apt-get remove dnsmasq-basekeine Netzwerkverbindung mehr hatte und die nächsten Schritte nicht ausführen konnte! Es stellte sich heraus, dass die Lösung dhclient ausführt, um eine neue IP-Adresse zu erhalten.
Glenjamin
Das hat
mich