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

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

我正在设置一个服务器,如下面的链接所示 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.

答案1

使用以下命令检查端口 53(域)上的监听内容:

sudo ss -lp "sport = :domain"

禁用在此端口上运行的所有服务。通常是systemd-resolved

在这里我确认您已停止该systemd-resolved服务。我还会这样做,mask以便它在重启时不会自动启动。

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

要撤消你所做的操作:

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

sudo update-rc.d systemd-resolved disable可能阻止它在启动时自动启动,但我还没有测试过。使用defaults而不是disable来撤消命令。

请注意,systemd-resolved 是名称解析的重要组件。如果您没有正确运行和配置任何名称解析服务,您可能会遇到Temporary failure in name resolution


或者您可以通过编辑配置文件来更改 dnsmasq 监听的端口:

sudo nano /etc/dnsmasq.conf

Ctrl+W并输入listen-address=,然后按回车键。

取消注释该行并添加 127.0.0.1 以及不同于 53 的端口,例如:

listen-address=127.0.0.1#5300

答案2

我遇到了和你一样的问题。我认为从 12.10 开始就是这样,但是此主题在12.10发布之前被关闭。

进行一些谷歌搜索(主要受到以下启发:这里),我找到了这个解决方案:

  • /etc/NetworkManager/NetworkManager.conf用你最喜欢的编辑器编辑文件
  • 注释掉此行dns=dnsmasq
  • 重新启动网络管理器:sudo service network-manager restart

但是在您的 dnsmasq 配置(/etc/dnsmasq.conf)中,您必须确保使用该行监听本地主机 DNS 查询listen-address=127.0.0.1

如果你更改了 dnsmasq 的配置,请不要忘记运行sudo /etc/init.d/dnsmasq restart

我希望这个能帮上忙。

答案3

我有同样的问题。

dnsmasq-base已安装并监听端口 53,导致无法dnsmasq启动。

可以使用dnsmasq-baseinsea 来dnsmasq达到相同目的:只需使用另一个配置目录:放置在文件夹中的目录Network Manager

/etc/NetworkManager/dnsmasq.d/

答案4

如果您不想搞乱解析器,请对 rc.local 进行这样的操作。

停止 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 会带来问题。我相信这与文件有关,/etc/resolv.conf但我不确定。我只知道第一个答案给我带来了很多问题,最终根本不起作用。只需停止 systemd-resolved,然后在完全启动后启动 dnsmasq 就可以了,至少在 Mint 上是如此。我不能谈论其他发行版。

相关内容