我正在帮助运营一个网站,该网站因政治原因被之前试图阻止 Telegram (RosKomNadzor) 的同一个俄罗斯机构阻止。这不是第一次发生,以前我们只会更改域,但这有其自身的影响和读者群的损失。
他们只阻止域名,而不是 IP(无论如何我们都在使用 Cloudflare)。我们正在使用 HTTPS,但 ISP 仍然能够以某种方式从他们的客户端获取有关我们的请求的 DNS 信息。从技术上讲,我们可以建议我们的读者配置他们的/etc/hosts
,但这不是一个可行的选择。
是否可以在我们的服务器端加密/混淆 DNS 信息,而无需用户进行任何更改/安装软件?还是等待 DNS over HTTPS 成为我们唯一的选择?
来自俄罗斯的爱。
不幸的是,绕过审查最好在客户端解决,因此没有多少服务器端设置可以帮助解决这个问题。您可以建议您的用户使用带有 DNS-over-HTTPS ( RFC 8484 ) 或 DNS-over-TLS ( RFC 7858 ) 的 VPN、 Tor和/或公共 DNS 。
您假设审查方法与 DNS 有关,但您实际测试过吗?您是否知道 ClientHello 中的服务器名称指示(SNI、RFC 6066、3)是未加密的,也可能用于阻止 TLS 连接?幸运的是,TLS Encrypted Client Hello ( draft-ietf-tls-esni-09 ) 正在开发中,可以提供帮助。有关该主题的更多阅读:
(我们通常不会在我们的 Q/A 帖子中添加任何问候语,但您的 007 参考是金!)
大多数俄罗斯供应商通过拦截 DNS 流量并动态更改它来实现 Inquisition 请求(这很容易,因为它是未加密的),有效地使用中间人方案,例如,所有 Ertelecom 附属的 ISP 都是使用这种方法。在这种情况下(可以通过比较客户端解析的 IP 与真实 IP 轻松确定)从服务器端无法执行任何操作:即使您将实施 DNSSEC 并且签名的答案将开始流动,所有这些技术都可以当涉及到您的域时,完全破坏了客户端名称解析堆栈(但是,这纯粹是一个理论,但您可以轻松证明我错了;如果我是的话)。
不幸的是,所有绕过 DNS MitM 的可用解决方案都需要应用于客户端,而不是服务器端。
众所周知,俄罗斯政府强制进行的审查会使用 DNS 欺骗(这就是阻止精选色情网站的方式)。
他们还使用基于 IP 地址/范围的数据包过滤器(这就是他们尝试并未能阻止 Telegram 的方式)。
一个想法:基于时间的域名!
RosComNadzor 是一个政府机构,所以他们的反应应该有点慢。
DOS他们!例子:
ETC...
您每周都需要一个新域名(10 美元),而您可爱的 RosKomNadzor 官僚并没有那么有效。
您的用户应该记住将最后一个星期日的日期添加到域名中。如果情况变得更糟,你也可以更快,只是稍微贵一点(你也可以为那么多域名协商一个更好的价格)。
在某些时候,他们也可以根据您的计划调整他们的程序。你只需要稍微改变它。
通过 IPFS 提供您的内容! https://ipfs.io/ 这是一个去中心化的互联网版本。每个访问您网站的客户都会在他们的机器上存储您的内容副本。
不,因为 DNS 请求由专用名称服务器处理,因此它们不会通过您的 Web 服务器进行路由。
差不多; DNS-over-HTTPS 旨在增强隐私、阻止审查并防止诸如您所描述的攻击。最新版本的 Google Chrome 和 Firefox(至少在桌面上)支持它,因此理论上您的大多数用户应该已经能够使用它。
你可以做 Telegram 所做的事情。它需要在网站之外制作一个移动应用程序。然后,您可以在被阻止时更改您的 IP 地址,并通过推送通知将新的 IP 地址发送到应用程序,这是一个无法检查和审查的通道,只能完全禁用 RKN 不愿意做的事情。
绕过 DNS 审查
从不同的注册商那里获得几十个域名,如果你负担得起的话,可以购买更多。在所有这些域上设置 HTTPS 和 CDN。确保您的站点在您的虚拟主机设置中接受所有这些域。给不同批次的用户不同的地方去学习不同账号的github、gitlab等共享站点的备用域名。这意味着如果其中一个用户是鼹鼠,那么只有一定比例的用户会被屏蔽。
这种方法并不完美,没有单一的解决方案。也许审查比您的用户群选择新域名要慢。
正如其他人所提到的,如果 Tor 在他们的国家/地区没有被阻止,您还可以鼓励您的用户使用 Tor。这意味着您必须在 CDN 设置中允许 Tor。