dnsmasq: 为端口 53创建监听套接字失败: 地址正在使用

・4 分钟阅读

问题

我正在按下面的链接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

我跟你的问题一样,

我(来自这个 )搜索后,找到了这个解决方案:

  • 编辑 /etc/NetworkManager/NetworkManager.conf
  • 注释行dns=dnsmasq
  • 重新启动网络管理器: sudo service network-manager restart

但是在配置(/etc/dnsmasq.conf )中,必须确保将本地主机的DNS查询与行listen-address=127.0.0.1相关联。

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

我希望这会帮助。


回答2

我也遇到了相同的问题。

dnsmasq-base已安装,并且在端口53上监听,阻止dnsmasq启动。

可以使用dnsmasq-base的insead作为相同的用途: 只需使用另一个配置目录: 放置在Network Manager文件夹中的文件:


/etc/NetworkManager/dnsmasq.d/




回答3

网络管理器依赖于一个称为"dnsmasq-base"的软件包,它提供了一些dnsmasq功能,Ubuntu Wiki中的Dnsmasq条目指出

"注意包"dnsmasq"干扰网络管理器,在共享internet连接时,它可以使用"dnsmasq-base"提供DHCP服务,如果你有更复杂的设置,请卸载网络管理器,使用dnsmasq或类似的软件(bind9,dhcpd等),并手工配置",

换句话说:你想使用dnsmasq? 那你最好知道自己在做什么,


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



 

讨论
Tianye profile image