dnsmasq:无法为端口 53 创建监听套接字:地址已被使用

dnsmasq:无法为端口 53 创建监听套接字:地址已被使用

当我完成 dnsmasq 设置时出现此错误。

ashokkrishna@krishna:~$ sudo dnsmasq

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


ashokkrishna@krishna:~$ netstat -lpn | grep :53
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:53              0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::53                   :::*                    LISTEN      -               
tcp6       0      0 :::53755                :::*                    LISTEN      -               
udp        0      0 0.0.0.0:53              0.0.0.0:*                           -               
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           -               
udp6       0      0 :::53                   :::*                                -               
udp6       0      0 :::5353                 :::*                                - 

那么如何解决这个问题或者如何停止这些套接字。

答案1

你可以这样做:

netstat -tupln

你会得到这样的结果:

tcp   0  0 :::80   :::*      LISTEN    713/httpd

获取监听端口 53 的进程的 pid,然后使用此命令将其终止

kill -9 pid

答案2

我只是花了几个小时尝试以合理的方式解决这个问题,而无需进行任何重大的系统修改。

停止 dnsmasq 自动启动。

servicectl disable dnsmasq

创建文件/etc/rc.local/etc/rc.d/rc.local取决于发行版。

设置权限chmod +x /etc/rc.local

编辑文件:

#!/bin/bash
service systemd-resolved stop
service dnsmasq start

只需停止 systemd-resolved,然后在完全启动后启动 dnsmasq 即可,至少在 Mint 上如此。我无法谈论其他发行版。

答案3

检查端口使用情况;

lsof -i -n -P

就我的情况而言,systemd-resolved 阻止使用端口 53,如下所示:

systemd-r  640 systemd-resolve   12u  IPv4  22295      0t0  UDP 127.0.0.53:53
systemd-r  640 systemd-resolve   13u  IPv4  22296      0t0  TCP 127.0.0.53:53 (LISTEN)

在启用 dnsmasq 之前,只需禁用 systemd-resolved;

sudo systemctl disable systemd-resolved --now
sudo systemctl enable dnsmasq --now

相关内容