You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04上dnsmasq的listen-address配置被忽略问题

Ubuntu 22.04上dnsmasq的listen-address配置被忽略问题

我来帮你排查这个困扰的问题——Ubuntu 22.04上的dnsmasq确实存在一些和20.04版本不同的默认行为,以下是几个实用的排查和解决方向:

1. 检查systemd-resolved的干扰

Ubuntu 22.04默认启用了systemd-resolved服务,它会和dnsmasq抢占53端口,甚至可能间接控制dnsmasq的运行模式。你可以先查看该服务状态:

systemctl status systemd-resolved

如果它处于运行状态,先临时停止它并禁用自动启动,再重启dnsmasq试试:

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo systemctl restart dnsmasq

之后再用netstat -tulpn | grep dnsmasq验证绑定情况。

2. 检查dnsmasq的启动参数

Ubuntu 22.04可能会给dnsmasq默认添加--all-interfaces启动参数,这个参数会直接忽略你配置的listen-address,强制绑定所有IP。你可以先查看当前dnsmasq的启动命令:

ps aux | grep dnsmasq

如果输出里能看到--all-interfaces,就需要修改启动配置:

  • 编辑/etc/default/dnsmasq文件,找到DNSMASQ_OPTS这一行,改成:
DNSMASQ_OPTS="--bind-interfaces"

--bind-interfaces参数会让dnsmasq严格遵守listen-address的配置,只绑定你指定的IP。

3. 验证配置文件的有效性和优先级

有时候你的配置可能被其他文件覆盖,或者存在语法错误:

  • 先用命令检查配置语法是否正确:
dnsmasq --test
  • 再查看最终生效的完整配置,确认listen-address是否被正确加载:
dnsmasq --dump-config

另外,确保你的配置是写在/etc/dnsmasq.conf里,或者/etc/dnsmasq.d/目录下的文件中(注意后者的配置优先级更高,如果有冲突会覆盖主配置)。

4. 强制在配置中添加bind-interfaces

你也可以直接在/etc/dnsmasq.conf里添加一行:

bind-interfaces

这个配置会覆盖启动参数中的相关设置,确保dnsmasq严格按照listen-address绑定指定IP。

按照上面的步骤排查后,应该就能解决绑定所有IP的问题了。

备注:内容来源于stack exchange,提问作者Thilo Schwarz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 10:13:02