dnsmasq: failed to create listening socket for port 53: Address already in use

I was setting up a server as in the below 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.

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.

I'm going to also mask it so it doesn't auto start on reboot.

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

Also, make sure that you have stopped the systemd-resolved service. Run:

sudo systemctl stop systemd-resolved

To undo what you did:

sudo systemctl unmask systemd-resolved
sudo systemctl enable 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.


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/