我在 minipc 中安装了默认的 Debian 9,它可以进一步转发数据包。
我希望能够通过域阻止主机,这意味着如果任何转发的 DNS 类型数据包有请求(例如 youtube.com),则应将其丢弃。我知道有一些方法可以将它们放入 iptables 规则中,但这不是建议的技术。
我担心设置 dnsmasq 或 bind 不起作用,因为很少有计算机对 google 的 8.8.8.8 DNS 服务器进行硬编码(很少有 IoT 设备)。
那么有没有办法:
- 通过我的 dnsmasq/bind 强制进行 DNS 解析(这样我就可以设置黑名单)
- 在没有 iptables 的情况下丢弃包含“youtube.com”的 DNS 请求数据包
有任何想法吗?
答案1
iptables
单独无法根据 DNS 数据包内容做出决策,只能根据数据包标头上的地址和端口号进行决策。至少,你需要一个 iptables 扩展像 iptables-ext-dns。
但在我看来你可能想做DNS 透明代理:您可以将小型电脑设置为重定向任何发送到端口 53(UDP 或 TCP)的传出数据包都会发送到您选择的 DNS 服务器,然后配置该 DNS 服务器以根据您的需要操作答案。您实际上是在对通过您的小型电脑的所有 DNS 流量执行中间人攻击。
您还应该意识到,有一些旨在对 DNS 流量进行加密保护的新技术,例如基于 HTTPS 的 DNS(Firefox 62 或更高版本已支持)或基于 TLS 的 DNS。
如果您的客户端使用这些,则使用目标端口 53 进行简单的流量重定向将无法捕获这些请求 - 即使您采取额外的步骤来捕获流量,事实上,明显的 DNS-over-what 服务器具有与预期不同的证书将暴露您的操纵行为。
另外,您应该知道YouTube 不仅可以通过 youtube.com 访问,还可以通过 youtu.be 访问,也可能通过其他域访问。