所以我正在研究限制学校网络上网的可能方法。比较多个选项,得出在特定环境下哪一个选项是最好的。到目前为止,我已经知道了如何做:防火墙(PFSense),使用特定的浏览器(安全考试浏览器),在路由器上使用ACL。但我的老师真的很喜欢我使用DNS白名单/黑名单。
这将基于绑定DNS服务器,并可能使用dnsmasq。如果我正确理解,只允许我编辑我的/etc/host文件,并将所有“烦人”的站点放在其中,以便它们被翻译成一个假IP (0.0.0.0)。
现在我的问题是,我该怎么做白名单?我如何制作一个网站的列表,我想要被翻译的外部DNS,并阻止所有其他?因为到目前为止,对于如何做到这一点,我还没有找到明确的解释。
发布于 2018-05-02 10:03:38
与基于IP地址的ACL或基于主机名的透明HTTP代理等其他方法相比,DNS白名单并没有添加任何新的内容,而且很容易通过使用其他递归名称服务器、向hosts
文件添加名称或使用代理来规避。
Dnsmasq将是一个更容易实现的工具,因为您可以在每个域使用两行简单行进行白名单,这是由Gary从Dnsmasq白名单缩短而来的:
# Don't resolve any DNS, Blacklist all
no-resolv
# Whitelist domains to DNS lookup;
# domain and forwarder NS (line for each pair)
server=/example.com/8.8.8.8
server=/example.com/1.1.1.1
server=/example.net/8.8.8.8
server=/example.net/1.1.1.1
# all other domains to localhost
address=/#/127.0.0.1
使用BIND,同样的方法会有点棘手,需要更多的配置。您可以添加递归,但使用无效的DNS服务器作为转发器。然后,使用真正的递归名称服务器将已白化的域添加为前向区域。
此示例为视图网络中的客户端创建一个198.51.100.0/24
,并添加白色域(相当于上面的Dnsmasq配置):
view "limitedrecursion" {
// Network of your clients
match-clients { 198.51.100.0/24; };
allow-recursion { 198.51.100.0/24; };
recursion yes;
forward only;
// INVALID FORWARDER
forwarders { 10.10.10.10; };
// Forward zones for whitelisted domains
zone "example.com" in { type forward; forwarders {8.8.8.8; 1.1.1.1; }; };
zone "example.net" in { type forward; forwarders {8.8.8.8; 1.1.1.1; }; };
};
https://serverfault.com/questions/910207
复制相似问题