dnsmasq: failed to create listening socket for port 53: Address already in use
Solution 1
Check what's listening on port 53 (domain) with:
sudo ss -lp "sport = :domain"
Disable any service that is running on this port. It's usually systemd-resolved
.
Here I make sure that you have stopped the systemd-resolved
service.
I'm going to also mask
it so it doesn't auto start on reboot.
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo systemctl mask systemd-resolved
To undo what you did:
sudo systemctl unmask systemd-resolved
sudo systemctl enable systemd-resolved
sudo systemctl start systemd-resolved
Also sudo update-rc.d systemd-resolved disable
might also stop it from auto starting on boot but I haven't tested it. Use defaults
instead of disable
to undo the command.
Note that systemd-resolved is an important component for name resolution. If you don't have any name resolution service properly running and configured you might encounter Temporary failure in name resolution
.
Or you can change what port dnsmasq listens on, by editing the config file:
sudo nano /etc/dnsmasq.conf
Hit Ctrl+W and type listen-address=
and hit enter.
Uncomment the line and add 127.0.0.1 with a different port than 53 like:
listen-address=127.0.0.1#5300
Solution 2
I get the same issue as you do. I think that it's true since 12.10, but this thread was closed before the release of 12.10.
Making some googling around (mostly inspired from here), I found this solution:
- edit
/etc/NetworkManager/NetworkManager.conf
file with you lovest editor - comment the line
dns=dnsmasq
- restart the network manager :
sudo service network-manager restart
But in your dnsmasq configuration (/etc/dnsmasq.conf
), you have to be sure to listen the localhost DNS queries with the line listen-address=127.0.0.1
.
If you change the configuration of dnsmasq, don't forget to run sudo /etc/init.d/dnsmasq restart
I hope this will help.
Solution 3
I had the same problem.
dnsmasq-base
was installed and listened on port 53 preventing dnsmasq
to start.
It is possible to use dnsmasq-base
insead of dnsmasq
for the same purpose: just use another config directory: the one placed in Network Manager
folder:
/etc/NetworkManager/dnsmasq.d/
Solution 4
If you don't want to screw up the resolver do it like this with rc.local.
Stop dnsmasq from auto starting.
servicectl disable dnsmasq
Create file /etc/rc.local
or /etc/rc.d/rc.local
depending on distro.
Set perms chmod +x /etc/rc.local
Edit file:
#!/bin/bash
service systemd-resolved stop
service dnsmasq start
Disabling systemd-resolved on startup comes with issues. I believe it has something to do with the /etc/resolv.conf
file but I'm not sure. All I know is that the first answer caused me a lot of problems and ultimately did not work at all. Simply stopping systemd-resolved then starting dnsmasq after full boot works perfect, at least on Mint. I can't speak on other distros.
Solution 5
try this: sudo fuser -k 53/tcp it will print you the process id of process bound on that port then kill it using: sudo kill -9 process-id
Related videos on Youtube

Ram
Updated on September 18, 2022Comments
-
Ram 3 months
I was setting up a server as in the below link https://help.ubuntu.com/community/Dnsmasq
[email protected]:/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.
-
Admin almost 9 yearsBy commenting out
dns=dnsmasq
doesn't that defeat the purpose of installing DNSmasq. I made thelisten-address=127.0.0.1
change and it seems to work fine now. -
MrMas over 3 yearsNo. You're keeping NetworkManager from starting dnsmasq and instead starting it independently.
-
northern-bradley over 2 yearsi found
dns=
in/usr/lib/NetworkManager/conf.d/10-dns-resolved.conf
however commenting out did not fix thednsmasq: failed to create listening socket for
-
Philip Rego over 2 years
sudo ss -lp "sport = :domain"
Doesn't say 53 -
Philip Rego over 2 yearsI didn't have the line
dns=dnsmasq
in/etc/NetworkManager/NetworkManager.conf
. I setlisten-address=127.0.0.1
in/etc/dnsmasq.conf
and restarted dnsmasq, but I still get the same port 53: address already in use error. -
trey-jones about 2 yearsIs it better to prevent NetworkManager from starting dnsmasq, or to disable the systemd service (
systemctl disable dnsmasq
) Does it make a difference other than which config gets used? And is NetworkManager choosing a better config? -
trey-jones about 2 yearsAfter looking into it, I think if you follow this solution you will be stopping the error message, but you won't actually be using dnsmasq for dns resolution because
/etc/resolv.conf
is still maintained by NetworkManager, and now it doesn't know about dnsmasq and it pulls the DNS from the router. -
Reijo Korhonen over 1 yearI followed this guide, but nothing seems to help me with by Ubuntu 20.04. When it starts ans when get console, dnsmawg is not started as described, because some process opens tcp-port 53 on start. If I try to start dnsmasc by hand as fast IO can do by 'sudo systemctl start dnsmasq' it succeed. I found out that avahi-daemon also opens port 53 (using commands 'sudo lsof -i TCP:53' and 'sudo netstat -vanp tcp | grep ':53'' I founde oud stat avahi-daemon open port 53 and I disabled it as described above, but no change. So I just added '/bin/systemctl start dnsmasq' to rc.local. It seems to help.
-
anonymous 8 months@PhilipRego the “:domain” represents the default port for domain, which is 53