我试图默认阻止来自我的计算机的所有 DNS 查询,并且只允许特定用户组使用它们。我尝试这些规则:
sudo su
groupadd dns-allowed
iptables -A OUTPUT -p udp --dport 53 -m owner --gid-owner dns-allowed -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j REJECT
对于第二个,DNS 查询被成功阻止,但随后我尝试在dns-allowed
组内启动 ping``,DNS 查询仍然被阻止:
sudo sg dns-allowed "ping google.com"
ping: google.com: Name or service not known
我注意到,如果我使用nslookup
而不是 ping 并指定 DNS 服务器 8.8.8.8 在使用dns-allowed
组启动时可以工作,但同样ping
会失败,大多数应用程序仍然无法使用其中的 DNS:
sudo sg dns-allowed "nslookup google.com 8.8.8.8"
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: google.com
Address: ....
解析配置文件
# 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 8.8.8.8
nameserver 8.8.4.4
nameserver 127.0.0.53
我的错误是什么?