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 解决。