使用 iptables 将传出 DNS 查询限制到单个组不起作用

使用 iptables 将传出 DNS 查询限制到单个组不起作用

我试图默认阻止来自我的计算机的所有 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

我的错误是什么?

相关内容