dnsmasq: échec de création de socket d'écoute pour le port 53: adresse déjà utilisée

16

Je configurais un serveur comme dans le lien ci-dessous 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
la source

Réponses:

8

J'ai le même problème que vous. Je pense que c'est vrai depuis 12.10, mais ce fil a été fermé avant la sortie de 12.10.

Faire quelques recherches sur Google (principalement inspirées d' ici ), j'ai trouvé cette solution:

  • éditer le /etc/NetworkManager/NetworkManager.conffichier avec votre plus bel éditeur
  • commenter la ligne dns=dnsmasq
  • redémarrez le gestionnaire de réseau: sudo service network-manager restart

Mais dans votre configuration dnsmasq ( /etc/dnsmasq.conf), vous devez être sûr d'écouter les requêtes DNS localhost avec la ligne listen-address=127.0.0.1.

Si vous changez la configuration de dnsmasq, n'oubliez pas d'exécuter sudo /etc/init.d/dnsmasq restart

J'espère que cela vous aidera.

Grumot
la source
2
En commentant, dns=dnsmasqcela ne va pas à l'encontre du but de l'installation de DNSmasq. J'ai fait le listen-address=127.0.0.1changement et cela semble bien fonctionner maintenant.
1
Non. Vous empêchez NetworkManager de démarrer dnsmasq et de le démarrer indépendamment.
MrMas
4

J'ai eu le même problème.

dnsmasq-basea été installé et écouté sur le port 53 empêchant dnsmasqde démarrer.

Il est possible d'utiliser dnsmasq-baseinsead of dnsmasqdans le même but: il suffit d'utiliser un autre répertoire de configuration: celui placé dans le Network Managerdossier:

/etc/NetworkManager/dnsmasq.d/
e-1
la source
3

Vérifiez ce qui écoute sur le port 53 (domaine) avec:

sudo ss -lp "sport = :domain"

Désactivez tout service exécuté sur ce port. C'est généralement systemd-resolved.

Je vais aussi le maskfaire pour qu'il ne démarre pas automatiquement au redémarrage.

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

Pour annuler ce que vous avez fait:

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

Aussi sudo update-rc.d systemd-resolved disablepourrait arrêter aussi de l' auto à partir du démarrage mais je ne l' ai pas testé. Utilisez defaultsau lieu de disablepour annuler la commande.


Ou vous pouvez changer le port sur lequel dnsmasq écoute, en éditant le fichier de configuration:

sudo nano /etc/dnsmasq.conf

Appuyez sur Ctrl+ Wet tapez listen-address=et appuyez sur Entrée.

Décommentez la ligne et ajoutez 127.0.0.1 avec un port différent de 53 comme:

listen-address=127.0.0.1#5300
Shayan
la source
0

EDIT: un peu sur Google, et j'ai trouvé la solution . Il semble que le gestionnaire de réseau dépend d'un package appelé "dnsmasq-base" qui fournit certaines des fonctionnalités de dnsmasq. L'entrée Dnsmasq dans le wiki Ubuntu déclare que

"Notez que le package" dnsmasq "interfère avec Network Manager qui peut utiliser" dnsmasq-base "pour fournir des services DHCP lors du partage d'une connexion Internet. Par conséquent, si vous utilisez le gestionnaire de réseau (très bien dans les configurations simples uniquement), installez dnsmasq -base, mais pas dnsmasq. Si vous avez une configuration plus compliquée, désinstallez le gestionnaire de réseau, utilisez dnsmasq ou un logiciel similaire (bind9, dhcpd, etc.) et configurez les choses à la main. "

En d'autres termes: vous souhaitez utiliser dnsmasq? Ensuite, vous feriez mieux de savoir ce que vous faites. La solution mentionnée précédemment suggère de remplacer dnsmasq-base par dnsmasq de la manière suivante (la première commande supprimera également network-manager):

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

Et voici quelques commentaires généraux sur la recherche de ce qui bloque vos ports: Vous pouvez trouver ce qui écoute sur quel port en utilisant lsof:

lsof -Pn +M -i4

listera les ports IPv4 dus à -i4, tandis que

lsof -Pn +M -i6

répertorie les ports IPv6. Ou tapez simplement

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

Cela devrait (espérons-le) vous indiquer ce qui utilise le port 53. Les -Pncommutateurs de ligne de commande empêchent la conversion du numéro de port / IP hôte en noms.

Sinon, exécutez

netstat -utlnp
janvier
la source
3
Ne supprimez pas dnsmasq-base; le paquet dnsmasq en dépend!
jdthood
3
Soyez prudent lorsque vous faites cela, après l'exécution, sudo apt-get remove dnsmasq-baseje suis resté sans connexion réseau, donc je ne pouvais pas faire les étapes suivantes! La solution s'est avérée exécuter dhclient pour obtenir une nouvelle adresse IP.
Glenjamin
J'ai été mordu par cela .. j'ai dû réactiver systemd-
resolver