我正在设置一个服务器,如下面的链接所示 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-base
insea 来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 上是如此。我不能谈论其他发行版。