我正在尝试配置我的 Fios G1100 以强制向我的内部 DNS 服务器发出 DNS 请求192.168.1.131
。此设备运行 Pi-hole,配置为向1.1.1.3
和发出 DNS 请求1.0.0.3
。效果很好!
但是,现在我试图通过手动配置 DNS 来限制网络上的设备绕过 DHCP 的 DNS 服务器。我最初偶然发现了这篇文章,它提供了一种避免这种绕过的方法:如何使用防火墙规则防止用户绕过 OpenDNS。
因此,我为 Fios G1100 设置了以下访问控制规则:
据我了解,此规则只允许192.168.1.0
、、在 LAN 外发出 DNS 请求192.168.1.1
。192.168.1.131
我已重新启动 G1100,并确认请求的 DNS 仍在工作并通过 进行路由192.168.1.131
。确实如此。
然后,我在 Mac 上进入System Preferences -> Network -> Wi-Fi:Advanced -> DNS
并添加了8.8.8.8
DNS 服务器。果然,DNS 在设备上被阻止了。
但是,当我在 Pixel 2 XL 上执行相同操作时,DNS 请求已解析并被192.168.1.131
绕过。我已关闭移动数据,Wi-Fi 配置如下:
Proxy: None
IP settings: Static
Privacy: Use device MAC
IP address: 192.168.1.120
Gateway: 192.168.1.1
Network prefix length: 24
DNS 1: 1.1.1.1
什么使得 Android 能够绕过访问控制规则?
答案1
事实证明,Android 具有通过 TLS 实现 DNS 的功能,也称为私人 DNS。私有 DNS 设置似乎使用端口 853,而不是端口 53。
DNS over TLS 有自己的端口,即端口 853。DNS over HTTPS 使用端口 443,这是 HTTPS 流量的标准端口。
看来端口 853 是致力于 DNS 服务,因此阻止此端口(与阻止端口 53 的方式相同)不会造成任何问题。但是,DNS over HTTPS 使用端口 443,该端口并非专用于 DNS 服务,因此不应阻止。