dnsmasq: no se pudo crear el socket de escucha para el puerto 53: la dirección ya está en uso

16

Estaba configurando un servidor como en el siguiente enlace 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.
RAM
fuente

Respuestas:

8

Tengo el mismo problema que tú. Creo que es cierto desde 12.10, pero este hilo se cerró antes del lanzamiento de 12.10.

Al buscar en Google (principalmente inspirado desde aquí ), encontré esta solución:

  • editar /etc/NetworkManager/NetworkManager.confarchivo con tu editor de lovest
  • comentar la línea dns=dnsmasq
  • reinicie el administrador de red: sudo service network-manager restart

Pero en su configuración dnsmasq ( /etc/dnsmasq.conf), debe asegurarse de escuchar las consultas de DNS localhost con la línea listen-address=127.0.0.1.

Si cambia la configuración de dnsmasq, no olvide ejecutar sudo /etc/init.d/dnsmasq restart

Espero que esto sea de ayuda.

Grumot
fuente
2
Al comentar dns=dnsmasqeso, eso no frustra el propósito de instalar DNSmasq. Hice el listen-address=127.0.0.1cambio y parece funcionar bien ahora.
1
No. Estás evitando que NetworkManager inicie dnsmasq y en su lugar lo inicie de forma independiente.
MrMas
4

Yo tuve el mismo problema.

dnsmasq-basefue instalado y escuchado en el puerto 53 evitando dnsmasqque se inicie.

Es posible usar dnsmasq-baseinsead of dnsmasqpara el mismo propósito: simplemente use otro directorio de configuración: el que se encuentra en la Network Managercarpeta:

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

Compruebe lo que se escucha en el puerto 53 (dominio) con:

sudo ss -lp "sport = :domain"

Deshabilite cualquier servicio que se esté ejecutando en este puerto. Es por lo general systemd-resolved.

También lo voy a hacer maskpara que no se inicie automáticamente al reiniciar.

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

Para deshacer lo que hiciste:

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

También sudo update-rc.d systemd-resolved disablepodría evitar que se inicie automáticamente en el arranque, pero no lo he probado. Use en defaultslugar de disabledeshacer el comando.


O puede cambiar en qué puerto escucha dnsmasq, editando el archivo de configuración:

sudo nano /etc/dnsmasq.conf

Presione Ctrl+ Wy escriba listen-address=y presione enter.

Descomente la línea y agregue 127.0.0.1 con un puerto diferente al 53 como:

listen-address=127.0.0.1#5300
Shayan
fuente
0

EDITAR: buscar en Google, y encontré la solución . Parece que el administrador de red depende de un paquete llamado "dnsmasq-base" que proporciona algunas de las funciones de dnsmasq. La entrada de Dnsmasq en Ubuntu Wiki dice que

"Tenga en cuenta que el paquete" dnsmasq "interfiere con Network Manager, que puede usar" dnsmasq-base "para proporcionar servicios DHCP cuando comparte una conexión a Internet. Por lo tanto, si usa el administrador de red (está bien solo en configuraciones simples), instale dnsmasq -base, pero no dnsmasq. Si tiene una configuración más complicada, desinstale el administrador de red, use dnsmasq o un software similar (bind9, dhcpd, etc.) y configure las cosas a mano ".

En otras palabras: ¿quieres usar dnsmasq? Entonces es mejor que sepas lo que estás haciendo. La solución mencionada anteriormente sugiere reemplazar dnsmasq-base por dnsmasq de la siguiente manera (el primer comando también eliminará network-manager):

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

Y aquí algunos comentarios generales sobre cómo encontrar lo que bloquea sus puertos: Puede encontrar qué está escuchando en qué puerto usando lsof:

lsof -Pn +M -i4

enumerará los puertos IPv4 debido a -i4, mientras que

lsof -Pn +M -i6

enumerará los puertos IPv6. O escriba solo

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

Esto debería (con suerte) decirle qué está usando el puerto 53. Los -Pninterruptores de la línea de comando evitan la conversión del número de puerto / IP del host a nombres.

Alternativamente, ejecute

netstat -utlnp
enero
fuente
3
No elimine dnsmasq-base; ¡El paquete dnsmasq depende de ello!
jdthood
3
¡Tenga cuidado al hacer esto, después de ejecutar sudo apt-get remove dnsmasq-baseme quedé sin conexión de red, así que no pude seguir los siguientes pasos! La solución resultó ejecutar dhclient para obtener una nueva dirección IP.
Glenjamin
Me mordió esto ... tuve que volver a habilitar systemd-resolve
Emmanel Osimosu