dnsmasq 总是返回 REFUSED

dnsmasq 总是返回 REFUSED

Ubuntu 服务器 16.04.04

dnsmasq.conf:

listen-address = 192.168.5.5, 172.30.108.1, 127.0.0.1 
log-queries
resolv-file = /etc/resolv.dnsmasq

/etc/resolv.dnsmasq:

nameserver = 8.8.8.8

/etc/resolv.conf:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1

辅助 |查询 DNS

dnsmasq  13099  0.0  0.0  52864   400 ?        S    17:16   0:00 /usr/sbin/dnsmasq -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,19036,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5

本地防火墙已关闭:

sudo ufw status
Status: inactive

挖 cisco.com

; <<>> DiG 9.10.3-P4-Ubuntu <<>> cisco.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 51709
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;cisco.com.         IN  A

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Apr 15 17:26:05 CEST 2018
;; MSG SIZE  rcvd: 27

到此挖掘系统日志中的相应条目:

dnsmasq[13099]: query[A] cisco.com from 127.0.0.1

我只是不明白为什么我总是被拒绝。

谢谢

答案1

这对我来说是固定的:

server=在我的 dnsmasq.conf 文件中,文件中没有指令。我必须将其添加到我的上游 ISP DNS 服务器 ip,重新启动 dnsmasq,它工作正常。

答案2

失败的原因是 的条目/etc/resolv.dnsmasq无效。它不能包含等号 ( =)。

1. 错误

echo 'nameserver = 8.8.8.8' >/etc/resolv.dnsmasq
systemctl restart dnsmasq
dig @localhost bbc.co.uk | grep -Ew 'status|A'
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 29172
;bbc.co.uk.                     IN      A

2. 正确

echo 'nameserver 8.8.8.8' >/etc/resolv.dnsmasq
systemctl restart dnsmasq
dig @localhost bbc.co.uk | grep -Ew 'status|A'
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52524
;bbc.co.uk.                     IN      A
bbc.co.uk.              95      IN      A       151.101.192.81
bbc.co.uk.              95      IN      A       151.101.64.81
bbc.co.uk.              95      IN      A       151.101.0.81
bbc.co.uk.              95      IN      A       151.101.128.81

至于为什么它可以在较早版本的 Ubuntu 和 Debian (Stretch) 上工作,但在较新的版本(例如 Debian (Buster))上却失败了?我不知道;也许语法被收紧了,所以它必须是正确的。

答案3

我对这些问题的答案对我有用,那就是:

chmod 755 /

这解决了我描述的所有问题以及我的删除评论。我的根/目录的权限是 0700,我猜测这会阻止 dnsmasq 将其进程更改为的用户正确操作。

另一个好主意是查明 dnsmasq 用户主目录中的权限是否正确。在我的系统中 dnsmasq 是该用户,因此该命令:

cat /etc/passwd | grep dnsmasq
dnsmasq:x:110:65534:dnsmasq,,,:/var/lib/misc:/usr/sbin/nologin

它将显示该用户的主目录(在我的例子中为 /var/lib/misc)


PS:我昨天发表了一些评论(但就像帖子一样,因为我的声誉不够),关于这个事实,该线程中的 2 个成员声明他们解决了问题,忽略了“你如何解决你的问题?”的请求。 '被其他用户删除,但被管理员删除,所以我不会重复。

答案4

这里同样的问题。通过禁用 ipv6 解决。

相关内容