dnsmasq: impossibile creare il socket di ascolto per la porta 53: indirizzo già in uso


16

Stavo installando un server come nel seguente link 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.

Risposte:


8

Ho lo stesso problema. Penso che sia vero dal 12.10, ma questo thread è stato chiuso prima del rilascio del 12.10.

Facendo un po 'di googling in giro (principalmente ispirato da qui ), ho trovato questa soluzione:

  • modifica il /etc/NetworkManager/NetworkManager.conffile con il tuo editor più bello
  • commenta la riga dns=dnsmasq
  • riavvia il gestore di rete: sudo service network-manager restart

Ma nella configurazione di dnsmasq ( /etc/dnsmasq.conf), devi essere sicuro di ascoltare le query DNS localhost con la linea listen-address=127.0.0.1.

Se si modifica la configurazione di dnsmasq, non dimenticare di eseguire sudo /etc/init.d/dnsmasq restart

Spero che questo possa aiutare.


2
Commentando, dns=dnsmasqciò non vanifica lo scopo dell'installazione di DNSmasq. Ho apportato la listen-address=127.0.0.1modifica e sembra funzionare bene ora.

1
No. Stai impedendo a NetworkManager di avviare dnsmasq e di avviarlo in modo indipendente.
MrMas

4

Ho avuto lo stesso problema.

dnsmasq-baseè stato installato e ascoltato sulla porta 53 impedendo dnsmasql'avvio.

È possibile utilizzare dnsmasq-baseinsead di dnsmasqper lo stesso scopo: basta usare un'altra directory di configurazione: quella collocata nella Network Managercartella:

/etc/NetworkManager/dnsmasq.d/

3

Controlla cosa è in ascolto sulla porta 53 (dominio) con:

sudo ss -lp "sport = :domain"

Disabilita qualsiasi servizio in esecuzione su questa porta. Di solito systemd-resolved.

Lo farò anche maskin modo che non si avvii automaticamente al riavvio.

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

Per annullare ciò che hai fatto:

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

Inoltre sudo update-rc.d systemd-resolved disablepotrebbe anche impedirne l'avvio automatico all'avvio ma non l'ho provato. Utilizzare defaultsinvece di disableannullare il comando.


Oppure puoi cambiare la porta su cui dnsmasq è in ascolto, modificando il file di configurazione:

sudo nano /etc/dnsmasq.conf

Premi Ctrl+ We digita listen-address=e premi invio.

Rimuovi il commento dalla riga e aggiungi 127.0.0.1 con una porta diversa da 53 come:

listen-address=127.0.0.1#5300

0

EDIT: alcuni googling, e ho trovato la soluzione . Sembra che il gestore della rete dipenda da un pacchetto chiamato "dnsmasq-base" che fornisce alcune delle funzionalità di dnsmasq. La voce Dnsmasq nel Wiki Ubuntu lo afferma

"Si noti che il pacchetto" dnsmasq "interferisce con Network Manager che può utilizzare" dnsmasq-base "per fornire servizi DHCP quando si condivide una connessione Internet. Pertanto, se si utilizza Network Manager (va bene solo in semplici configurazioni), quindi installare dnsmasq -base, ma non dnsmasq. Se hai una configurazione più complicata, disinstalla il gestore di rete, usa dnsmasq o software simile (bind9, dhcpd, ecc.) e configura le cose a mano. "

In altre parole: vuoi usare dnsmasq? Allora farai meglio a sapere cosa stai facendo. La soluzione menzionata in precedenza suggerisce di sostituire dnsmasq-base con dnsmasq nel modo seguente (il primo comando rimuoverà anche il gestore della rete):

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

E qui alcuni commenti generali sulla ricerca di ciò che blocca le tue porte: puoi trovare ciò che è in ascolto su quale porta usando lsof:

lsof -Pn +M -i4

elencherà le porte IPv4 a causa di -i4, mentre

lsof -Pn +M -i6

elencherà le porte IPv6. O digita semplicemente

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

Questo dovrebbe (si spera) dirvi cosa sta usando la porta 53. Le -Pnopzioni della riga di comando impediscono la conversione del numero di porta / IP dell'host in nomi.

In alternativa, esegui

netstat -utlnp

3
Non rimuovere dnsmasq-base; il pacchetto dnsmasq dipende da questo!
jdthood,

3
Fai attenzione quando eseguo questa operazione, dopo l'esecuzione sudo apt-get remove dnsmasq-basemi è rimasto senza connessione di rete, quindi non ho potuto fare i passi successivi! La soluzione si è rivelata in esecuzione dhclient per ottenere un nuovo indirizzo IP.
Glenjamin,

Sono stato morso da questo .. ho dovuto riabilitare systemd-
resolver
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.