目前 2.86-1.1ubuntu0.3 正在 ubuntu 22.04 上运行。
我用了
listen-address=127.0.0.1
listen-address=[public-ip-1]
listen-address=[public-ip-2]
port=53
但 dnsmasq 绑定在所有 IP 上:
netstat -tulpn | grep dnsmasq
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 3641/dnsmasq
tcp6 0 0 :::53 :::* LISTEN 3641/dnsmasq
udp 0 0 0.0.0.0:53 0.0.0.0:* 3641/dnsmasq
udp6 0 0 :::53 :::* 3641/dnsmasq
在另一台装有 ubuntu 20.04 的服务器上,它可以按预期运行。
每一个小提示都会有帮助。
答案1
这是预期的行为。从该选项的文档中可以看出bind-interfaces
:
在支持它的系统上,dnsmasq 绑定通配符地址,即使它仅监听某些接口。然后它会丢弃不应该回复的请求。这样做的好处是,即使接口来来去去并更改地址,它也能正常工作。此选项强制 dnsmasq 真正绑定它正在监听的接口。这唯一有用的时间是在同一台机器上运行另一个名称服务器(或 dnsmasq 的另一个实例)。设置此选项还可以使提供 DHCP 服务的多个 dnsmasq 实例在同一台机器上运行。
(来自dnsmasq 手册页(强调我的)