WireGuard 客户端、受 OpenSnitch 启发的防火墙和网络监视器 + 受 pi-hole 启发的 DNS over HTTPS 客户端(带有阻止列表)。
换句话说,Rethink DNS + Firewall 具有 VPN、DNS 和 Firewall 三种主要模式。 VPN(代理器)模式支持分割隧道配置中的多个 WireGuard 上游。 DNS 模式将应用程序生成的所有 DNS 流量路由到任何用户选择的 DNS-over-HTTPS 或 DNSCrypt 解析器。防火墙模式允许用户根据屏幕打开/屏幕关闭、应用程序前景/应用程序背景、不按流量计费的连接/按流量计费的连接等事件拒绝对整个应用程序的互联网访问;或基于 Play 商店定义的类别,如社交、游戏、实用程序、生产力;或者另外,基于用户定义的拒绝列表。
Rethink 支持通过 SOCKS5、HTTP CONNECT 和 WireGuard 隧道转发 TCP 和 UDP 连接。分割隧道进一步有助于同时运行多个此类隧道,并允许用户通过不同的隧道路由不同的应用程序。例如,可以同时将 Firefox 通过 SOCKS5 连接到 Tor,通过 WireGuard 通过任何流行的 VPN 提供商连接 Netflix,以及通过抗审查的 HTTP CONNECT 端点连接 Telegram 或 WhatsApp。
防火墙并不真正关心连接本身,而是关心是什么建立了这些连接。这与传统的防火墙不同,但与 Little Snitch、LuLu、Glasswire 等防火墙一致。
目前,每个应用程序的连接映射是通过捕获由firestack
(用 golang 编写)管理的udp
和tcp
连接并向所有者请求 ConnectivityService 来实现的,该 API 仅在 Android 10 或更高版本上可用。在 Android 9 及更低版本上, procfs
( /proc/net/tcp
和/proc/net/udp
)按需读取,以跟踪每个应用程序的连接,如 NetGuard 或 OpenSnitch 所做的那样。
网络监视器是每个应用程序的报告卡,可显示连接的时间、连接的数量以及连接的位置。到目前为止,跟踪 TCP 已经被证明是非常简单的。 DNS 数据包的跟踪比较困难,因此目前使用的是粗略的启发式方法,这可能并不适用于所有情况。
几乎所有与网络相关的代码( firestack
),包括 HTTPS split-tunnel 上的 DNS,都是用 golang 编写的 Jigsaw-Code/outline-go-tun2socks 的硬分叉。用户界面有很大不同,但至少借鉴了 Jigsaw-Code/Intra。分割隧道捕获发送到 VPN 的 DNS 端点的请求,并将其中继到用户选择的 DNS-over-HTTPS / DNSCrypt 端点,记录端到端延迟、请求时间、dns 请求查询本身及其回答。
https://sky.rethinkdns.com/1:IAAgAA==
上的恶意软件和广告拦截 DNS 通过 HTTPS 解析器(通过 Cloudflare Workers 部署到全球 300 多个位置)是应用程序上的默认 DNS 端点,尽管用户可以自由更改它。一个可配置的 DNS 解析器可让用户添加或删除拒绝列表和允许列表、添加重写、分析 DNS 请求,该解析器将于 2023 年末推出。现在,可以在此处设置带有自定义阻止列表的免费使用 HTTPS 端点的 DNS:rethinkdns.com/配置。
除了 Cloudflare Workers 上的默认部署之外,解析器也部署到max.rethinkdns.com
的 Fly.io 和rdns.deno.dev
的 Deno Deploy。
解析器是开源软件:serverless-dns。
通过无服务器代理(托管在 Cloudflare Workers 上)路由 TCP 连接很快将成为 Rethink 的一部分。用户可以自行托管这些服务,也可以使用我们运行的服务,每月支付 1 美元的无限带宽。该服务预计将于 2023 年底推出。
代理是开源软件:serverless-proxy。
在 Weblate 上帮助翻译 Rethink DNS + Firewall:
Rethink 不是一个匿名工具:它可以帮助用户应对有增无减的审查和监视,但并不声称始终(如果有的话)保护用户的身份。
Rethink 的目标并不是成为功能丰富的传统防火墙:它比 IP 表更符合 Little Snitch 的风格。
Rethink 不是防病毒软件:Rethink 可能会通过其基于 DNS 的阻止列表阻止用户遭受网络钓鱼攻击、恶意软件、恐吓软件网站,但它不会主动缓解威胁,甚至不会寻找威胁或对其采取行动。
将 Android 设备转变为用户代理:用户可以随意控制而无需 root 访问权限。对于始终在线、始终连接的设备来说,其中很大一部分是捕获网络流量并以对最终用户有意义的方式报告它,然后最终用户可以采取一系列操作来限制其暴露,但不一定消除它。以 DNS 为例,对于大多数(如果不是全部)连接,应用程序首先发出 DNS 请求,通过跟踪这些请求,可以收集大量有关手机发生的情况以及哪个应用程序负责的情报。
为了兑现为所有人提供开放互联网的承诺:随着不可避免的 ESNI 标准化以及即将跨操作系统采用基于 HTTPS 的 DNS 和基于 TLS 的 DNS,我们离开放互联网又近了一步。当然,深度数据包检查仍然是一种无法缓解的可信威胁,但它是用最小的努力(不需要使用 VPN 或通过 IPFS 访问)提供最大影响(规避大多数国家的互联网审查制度)的一个例子, 例如)。 Rethink 将继续以最简单的方式提供这些技术,尤其是那些只需 10% 的努力即可实现 90% 的技术。
我们还没有做到这一点,可能永远不会做到,但这些是在可预见的未来该项目的一些原则。
互联网审查制度(有时是 ISP 强制执行,有时是政府强制执行)、有增无减的拉网式监视(几乎每家公司和应用程序都实施)促使我们走上了这条道路。 2019 年底,我们三个大学同学 Mohammed、Murtaza、Santhosh 聚集在印度哥印拜陀这个沉睡的小镇,为此做点什么。我们主要的抱怨是,人们可以使用所有这些精彩的工具,但由于成本或无法理解计算机专用术语而无法使用。自我们开始以来发生了很多事情,也发生了很多变化,但我们的重点始终是 Android 及其 2B+ 毫无戒心的用户。当前的想法自 2020 年 5 月以来一直在酝酿中,随着疫情的蔓延,一些进展被打乱,放弃之前的版本转而采用当前的分叉也出现了一些混乱,我们对此并不感到自豪,但它是一个开始。现在一切都很好,我们已经获得了 Mozilla Builders MVP 计划的资助,可以继续构建我们想要的东西……做得更快……而不是简单地在执行过程中睡觉。我希望你感到兴奋,但不像我们那样兴奋,以至于你像我们一样为此辞掉了工作。