如何使用通配符或正则表达式阻止主机名?

如何使用通配符或正则表达式阻止主机名?

目前我使用 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/

相关内容