dnsmasq: falha ao criar o soquete de escuta para a porta 53: endereço já em uso


16

Eu estava configurando um servidor como no link abaixo 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.

Respostas:


8

Eu recebo o mesmo problema que você. Eu acho que é verdade desde as 12.10, mas esse tópico foi fechado antes do lançamento da 12.10.

Fazendo algumas pesquisas (principalmente inspiradas a partir daqui ), encontrei esta solução:

  • editar /etc/NetworkManager/NetworkManager.confarquivo com seu editor mais adorável
  • comente a linha dns=dnsmasq
  • reinicie o gerenciador de rede: sudo service network-manager restart

Mas na sua configuração dnsmasq ( /etc/dnsmasq.conf), você deve ouvir as consultas DNS do host local com a linha listen-address=127.0.0.1.

Se você alterar a configuração do dnsmasq, não se esqueça de executar sudo /etc/init.d/dnsmasq restart

Espero que isso ajude.


2
Ao comentar a dns=dnsmasqnão que a derrota o propósito de instalar dnsmasq. Fiz a listen-address=127.0.0.1alteração e parece funcionar bem agora.

1
Não. Você está impedindo o NetworkManager de iniciar o dnsmasq e, em vez disso, de forma independente.
MrMas 27/08/19

4

Eu tive o mesmo problema.

dnsmasq-basefoi instalado e escutado na porta 53, impedindo o dnsmasqinício.

É possível usar o dnsmasq-baseinsead dnsmasqpara o mesmo propósito: basta usar outro diretório de configuração: aquele colocado na Network Managerpasta:

/etc/NetworkManager/dnsmasq.d/

3

Verifique o que está escutando na porta 53 (domínio) com:

sudo ss -lp "sport = :domain"

Desative qualquer serviço que esteja sendo executado nesta porta. É geralmente systemd-resolved.

Vou também maskpara que ele não inicie automaticamente na reinicialização.

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

Para desfazer o que você fez:

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

Também sudo update-rc.d systemd-resolved disablepode impedi-lo de iniciar automaticamente na inicialização, mas não testei. Use em defaultsvez de disablepara desfazer o comando.


Ou você pode alterar em que porta o dnsmasq atende, editando o arquivo de configuração:

sudo nano /etc/dnsmasq.conf

Pressione Ctrl+ We digite listen-address=e pressione enter.

Remova o comentário da linha e adicione 127.0.0.1 com uma porta diferente de 53, como:

listen-address=127.0.0.1#5300

0

Edição: alguns pesquisando, e eu encontrei a solução . Parece que o gerenciador de rede depende de um pacote chamado "dnsmasq-base", que fornece algumas das funcionalidades do dnsmasq. A entrada Dnsmasq no Ubuntu Wiki afirma que

"Observe que o pacote" dnsmasq "interfere no Network Manager, que pode usar o" dnsmasq-base "para fornecer serviços DHCP ao compartilhar uma conexão com a Internet. Portanto, se você usar o gerenciador de rede (somente em configurações simples), instale o dnsmasq -base, mas não o dnsmasq. Se você tiver uma configuração mais complicada, desinstale o gerenciador de rede, use o dnsmasq ou software similar (bind9, dhcpd, etc) e configure manualmente. "

Em outras palavras: você deseja usar o dnsmasq? Então é melhor você saber o que está fazendo. A solução mencionada anteriormente sugere substituir o dnsmasq-base pelo dnsmasq da seguinte maneira (o primeiro comando também removerá o gerenciador de rede):

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

E aqui alguns comentários gerais sobre como descobrir o que bloqueia suas portas: Você pode encontrar o que está ouvindo em qual porta usando lsof:

lsof -Pn +M -i4

listará as portas IPv4 devido ao -i4, enquanto

lsof -Pn +M -i6

listará as portas IPv6. Ou digite apenas

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

Esperamos que isso diga o que está usando a porta 53. Os -Pncomutadores da linha de comando impedem a conversão do número da porta / IP do host em nomes.

Como alternativa, execute

netstat -utlnp

3
Não remova o dnsmasq-base; o pacote dnsmasq depende disso!
Jdthood

3
Tenha cuidado ao fazer isso, depois de executar, sudo apt-get remove dnsmasq-basefiquei sem conexão à rede e não pude executar os próximos passos! A solução acabou executando dhclient para obter um novo endereço IP.
Glenjamin

Foi mordido por isso .. eu tinha para reativar systemd-resolve
Emmanel Osimosu
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.