所以我在 raspberry pi 2 上运行 apache2 服务器和 hostapd,使用 raspbian。当我尝试使用 dnsmasq.conf localhost=127.0.0.1 运行 dnsmasq 时(除了其他设置,我认为它们现在并不重要),它说
dnsmasq: failed to create listening socket for port 53: Address already in use [fail].
但我已经尝试过
lsof -i -P -n | grep '53'
而我只得到dnsmasq
.
当我运行网络时netstat -ap46
我得到
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 localhost:mysql 0.0.0.0:* LISTEN 559/mysqld
tcp 0 0 0.0.0.0:domain 0.0.0.0:* LISTEN 438/dnsmasq
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN 445/sshd
tcp6 0 0 [::]:http [::]:* LISTEN 627/apache2
tcp6 0 0 [::]:domain [::]:* LISTEN 438/dnsmasq
tcp6 0 0 [::]:ssh [::]:* LISTEN 445/sshd
udp 0 0 0.0.0.0:mdns 0.0.0.0:* 327/avahi-daemon: r
udp 0 0 0.0.0.0:domain 0.0.0.0:* 438/dnsmasq
udp 0 0 0.0.0.0:bootpc 0.0.0.0:* 370/dhcpcd
udp 0 0 0.0.0.0:59990 0.0.0.0:* 327/avahi-daemon: r
udp6 0 0 [::]:mdns [::]:* 327/avahi-daemon: r
udp6 0 0 [::]:55646 [::]:* 327/avahi-daemon: r
udp6 0 0 [::]:domain [::]:* 438/dnsmasq
raw6 0 0 [::]:ipv6-icmp [::]:* 7 370/dhcpcd
我没有安装网络管理器。 dnsmasq 是否会干扰自身?我该如何修复它?
答案1
在“本地地址”下,端口 53 被命名为 :domain 并被列为所有协议的进程“438/dnsmasq”所使用的端口。如果您使用netstat -ap46n
,您将看到数字而不是名称。
程序名称是 dnsmasq,这意味着它确实已经在运行。如果有htop
,您可以通过进程 ID 来搜索它,在本例中为 438。它将向您显示用于启动该进程的命令。或者,用于cat /proc/438/cmdline
显示该信息。
因此,在 dnsmasq 已经运行的情况下,您需要检查配置文件,并且可以在 /proc/438/cmdline 中的命令中找到使用哪个配置文件的提示。我的系统上 dnsmasq 的联机帮助页确实列出了许多文件,但没有列出目录/etc/dnsmasq.d
和默认配置文件/etc/default/dnsmasq
。检查后一个文件可能是一个不错的起点。例如,使用sudo nano /etc/default/dnsmasq
在 CLI 上执行此操作。
我希望这足以让你继续这一下去。