dnsmasq:无法为端口53创建侦听套接字:地址已在使用中


16

我正在按照以下链接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.

Answers:


8

我遇到与您相同的问题。我认为从12.10开始确实如此,但是此线程在12.10发行之前已关闭。

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

  • /etc/NetworkManager/NetworkManager.conf与最爱的编辑者一起编辑文件
  • 评论这行 dns=dnsmasq
  • 重新启动网络管理器: sudo service network-manager restart

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

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

我希望这将有所帮助。


2
通过注释掉dns=dnsmasq并不会破坏安装DNSmasq的目的。我进行了listen-address=127.0.0.1更改,现在看来工作正常。

1
不。您要阻止NetworkManager启动dnsmasq,而是独立启动它。
MrMas

4

我有同样的问题。

dnsmasq-base已安装并在端口53上侦听,以防止dnsmasq启动。

可以将dnsmasq-baseinsead dnsmasq用于相同的目的:只需使用另一个配置目录:放置在Network Manager文件夹中:

/etc/NetworkManager/dnsmasq.d/

4

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

sudo ss -lp "sport = :domain"

禁用此端口上运行的任何服务。通常是systemd-resolved

我还要去mask,这样它就不会在重启时自动启动。

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

撤消所做的操作:

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

sudo update-rc.d systemd-resolved disable可能会阻止它从启动时自动启动,但我尚未对其进行测试。使用defaults代替disable撤消命令。


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

sudo nano /etc/dnsmasq.conf

Ctrl+,W然后键入listen-address=并按Enter。

取消注释该行,并添加端口号为53的127.0.0.1,例如53:

listen-address=127.0.0.1#5300

0

编辑:一些谷歌搜索,我找到了解决方案。网络管理器似乎依赖于一个名为“ dnsmasq-base”的软件包,该软件包提供了一些dnsmasq功能。Ubuntu Wiki中的Dnsmasq条目指出:

“请注意,软件包“ dnsmasq”会干扰网络管理器,后者可以在共享Internet连接时使用“ dnsmasq-base”提供DHCP服务。因此,如果您使用网络管理器(仅适用于简单设置),请安装dnsmasq -base,而不是dnsmasq。如果您的设置比较复杂,请卸载网络管理器,使用dnsmasq或类似软件(bind9,dhcpd等),然后手动进行配置。”

换句话说:您要使用dnsmasq吗?然后,您最好知道自己在做什么。 前面提到的解决方案建议以以下方式用dnsmasq替换dnsmasq-base(第一个命令还将删除network-manager):

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

以下是一些有关查找阻塞端口的一般评论:您可以使用以下命令找到侦听端口的内容lsof

lsof -Pn +M -i4

将由于-i4而列出IPv4端口,而

lsof -Pn +M -i6

将列出IPv6端口。或只输入

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

这应该(希望)告诉您使用端口53的情况。-Pn命令行开关阻止端口号/主机IP转换为名称。

或者,运行

netstat -utlnp

3
不要删除dnsmasq-base;dnsmasq软件包取决于它!
jdthood 2012年

3
执行此操作时要小心,在运行后,sudo apt-get remove dnsmasq-base我没有网络连接,因此无法执行下一步!原来该解决方案正在运行dhclient来获取新的IP地址。
Glenjamin 2013年

被这个咬了..我不得不重新启用systemd-resolve
Emmanel Osimosu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.