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 計劃的資助,可以繼續建立我們想要的東西……做得更快……而不是簡單地在執行過程中睡覺。我希望你感到興奮,但不像我們那麼興奮,以至於你像我們一樣為此辭掉了工作。