目前我使用 big/etc/hosts
来阻止不需要的主机名。但该文件变得越来越大,接近 700000 个条目。有很多类似的条目,所以我想使用通配符,*.co.kr
因为我不会说韩语。此外,以数字开头或长度超过 64 个字符的主机名可能是我想要阻止的候选主机名。
AFAIK/etc/hosts
不提供该功能。我认为需要某种 DNS 守护进程。有任何想法吗?
编辑:我选择韩国顶级域名作为示例。我的/etc/hosts
变得越来越大,也越来越难以维护。其中的大多数主机名都可以简化为一小组规则。
答案1
名称解析是阻止不需要的网络流量的一种非常糟糕的方法。要阻止和不阻止的内容列表不断变化,有时您需要阻止每个 URL 而不仅仅是每个主机。 AdBlock* 和 uBlock* 等浏览器扩展往往会做得更好。如果你想写自己的列表,你可以写一个PAC文件。
如果您确实想阻止基于域名的请求,请使用 DNS 代理,而不是使用/etc/hosts
./etc/hosts
只能做个人主机。域名解析是一种流行的轻量级 DNS 代理。一些发行版默认设置 dnsmasq;大多数发行版都将其作为一个包。要使用 dnsmasq 使整个域显示为 localhost,您可以在中使用以下行/etc/dnsmasq.conf
:
address=/co.kr/127.0.0.2
答案2
DNS过滤是一个错误的想法,请参阅https://www.afnic.fr/medias/documents/conseilscientifique/SC-consequences-of-DNS-based-Internet-filtering.pdf
但是,您可以通过使用 bind 及其 RPZ 功能来实现部分解决方案,请参阅https://dnsrpz.info/