所以我在 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 会干扰自身吗?我该如何解决?
在本地地址下,端口 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 上执行此操作。我希望这足以让你继续这个。