5G Proxy Client
透過 TUN 虛擬網卡將整台裝置網路導向遠端 SOCKS5 伺服器。免 Root、支援 TCP/UDP。
新版本 1.6.7
- 修正:走 TCP 的 DNS 查詢(開啟遠端 DNS、查詢本身也穿過隧道)其連線紀錄永遠不會釋放。紀錄與緩衝區一直佔著,連線計數只增不減。累計 512 次之後,用戶端會拒絕所有新的 TCP 連線 —— DNS 與 ping 都還正常,其他全掛,重啟隧道才會恢復。現在答案寫回後連線即自我釋放,並加上迴歸測試斷言連線數會回到連線前的水位(沒有這個修正時該測試會失敗)
- 修正:建立受保護的 socket 失敗時,已經建好的那個 socket 會被留在那裡。最常見的是連線 SOCKS5 伺服器逾時,反覆失敗就會一次漏掉一個檔案描述符。現在所有失敗路徑都會關閉 socket
- 修正:建立受保護的 socket 失敗時,已經建好的那個 socket 會被留在那裡。最常見的是連線 SOCKS5 伺服器逾時,反覆失敗就會一次漏掉一個檔案描述符。現在所有失敗路徑都會關閉 socket
Android SOCKS5 TUN 隧道客戶端 — 透過 TUN 虛擬網卡將整台裝置的網路流量導向遠端 SOCKS5 伺服器,完全無需 Root 權限。
特色功能:
- 使用者空間 TCP 狀態機,透過 SOCKS5 CONNECT 轉發
- 支援 UDP / DNS / QUIC 轉發(RFC 1928 標準 UDP-in-UDP 或自訂擴充 0x04 UDP-in-TCP)
- Remote DNS(fakedns)攔截,支援 fake IPv4(198.18.0.0/15)與 fake IPv6,由伺服器端解析網域
- IPv4 + IPv6 雙棧支援
- Per-App 應用程式分流模式:全局、白名單、排除名單
- 斷線自動軟重連(指數退避,不拆 TUN 避免洩漏真實 IP)
- 常駐通知即時顯示上傳/下載流量與連線數統計
- 自訂主要/次要 DNS 伺服器
- 開機自動啟動隧道
- Quick Settings 快速設定面板磁貼開關
- 多組設定檔儲存與剪貼簿 JSON 匯入/匯出
- 原生 C(epoll)引擎 + JNI + Kotlin UI
隱私說明:
- 隧道運作期間會在隧道外重新解析代理伺服器的主機名(追蹤 DDNS/IP 變動而不拆掉 TUN 介面所需)。這個查詢會送給「隧道實際走的那條網路」自己的 DNS;上面自訂的主要/次要 DNS 只在該解析器沒有回應時才作為後備使用,而且一旦用到後備會寫進記錄。
- 開啟 Remote DNS 時,應用程式的 DNS 查詢會改由代理出口端解析,不在本機回應。
開源專案(MIT 授權)。
特色功能:
- 使用者空間 TCP 狀態機,透過 SOCKS5 CONNECT 轉發
- 支援 UDP / DNS / QUIC 轉發(RFC 1928 標準 UDP-in-UDP 或自訂擴充 0x04 UDP-in-TCP)
- Remote DNS(fakedns)攔截,支援 fake IPv4(198.18.0.0/15)與 fake IPv6,由伺服器端解析網域
- IPv4 + IPv6 雙棧支援
- Per-App 應用程式分流模式:全局、白名單、排除名單
- 斷線自動軟重連(指數退避,不拆 TUN 避免洩漏真實 IP)
- 常駐通知即時顯示上傳/下載流量與連線數統計
- 自訂主要/次要 DNS 伺服器
- 開機自動啟動隧道
- Quick Settings 快速設定面板磁貼開關
- 多組設定檔儲存與剪貼簿 JSON 匯入/匯出
- 原生 C(epoll)引擎 + JNI + Kotlin UI
隱私說明:
- 隧道運作期間會在隧道外重新解析代理伺服器的主機名(追蹤 DDNS/IP 變動而不拆掉 TUN 介面所需)。這個查詢會送給「隧道實際走的那條網路」自己的 DNS;上面自訂的主要/次要 DNS 只在該解析器沒有回應時才作為後備使用,而且一旦用到後備會寫進記錄。
- 開啟 Remote DNS 時,應用程式的 DNS 查詢會改由代理出口端解析,不在本機回應。
開源專案(MIT 授權)。
捐助
版本
雖然在下方可選擇下載 APK 檔案,但要留意這樣的安裝方式將不會收到更新通知,是一種較不安全的下載方法。建議您先安裝 F-Droid 用戶端使用。
下載 F-Droid-
arm64-v8aarmeabi-v7ax86_64此版本需要 Android 8.0 或更高的版本。
此套件包由原開發者建置和簽署,並保證與此原始碼 Tarball 保持一致。
-
arm64-v8aarmeabi-v7ax86_64此版本需要 Android 8.0 或更高的版本。
此套件包由原開發者建置和簽署,並保證與此原始碼 Tarball 保持一致。
-
arm64-v8aarmeabi-v7ax86_64此版本需要 Android 8.0 或更高的版本。
此套件包由原開發者建置和簽署,並保證與此原始碼 Tarball 保持一致。
新版本 1.6.6
- 修正:IPv6 連結本地位址(fe80::/10)的判定改為比對第一個 hextet 的數值,不再把 fe8::1 這類省略前導零的位址誤判成連結本地而丟掉 —— 它實際是 0fe8::,並不在 fe80::/10 之內(F-Droid 1.6.5 審閱指出的過度過濾;原有測試還把這個錯誤行為寫成了斷言)
- 修正:裝置同時有 Wi-Fi 與行動網路、且兩者的 DNS 不同時,換網後的重新解析只有排第一台查得到,後面那台會白等一個 3 秒逾時。原因是查詢 socket 只做了 VPN 繞行、沒有綁回該 DNS 所屬的網路,封包一律走系統預設路由。現在會綁回它來源的網路(綁定失敗只記警告並沿用預設路由,不靜默、不致命;設定值 8.8.8.8 / 1.1.1.1 屬公開解析器,維持不綁)
- 診斷:每次重新解析都會記錄查詢封包的實際出口位址(egress=),「綁對/沒綁/被自己的隧道吃掉」三種情況不再在記錄裡長得一模一樣
- 修正:裝置同時有 Wi-Fi 與行動網路、且兩者的 DNS 不同時,換網後的重新解析只有排第一台查得到,後面那台會白等一個 3 秒逾時。原因是查詢 socket 只做了 VPN 繞行、沒有綁回該 DNS 所屬的網路,封包一律走系統預設路由。現在會綁回它來源的網路(綁定失敗只記警告並沿用預設路由,不靜默、不致命;設定值 8.8.8.8 / 1.1.1.1 屬公開解析器,維持不綁)
- 診斷:每次重新解析都會記錄查詢封包的實際出口位址(egress=),「綁對/沒綁/被自己的隧道吃掉」三種情況不再在記錄裡長得一模一樣
新版本 1.6.5
- 修正:換網後重新解析代理伺服器主機名時,用的 DNS 其實是「隧道自己宣告的那兩個」(預設 8.8.8.8 / 1.1.1.1),而不是隧道實際走的那條網路的 DNS。原本那句「後備用本網路的 DHCP DNS」從來沒有生效過 —— 因為它讀的是 active network,而對 VPN App 而言那就是自己的 VPN 網路。現在會先問底層網路自己的解析器;除非它沒回應,否則主機名不會被送給第三方解析器(一旦用到後備會寫進記錄)
- App 啟動器圖示改為商店頁面上的品牌標誌,並補上 Android 13+ 的主題化單色圖層
- App 啟動器圖示改為商店頁面上的品牌標誌,並補上 Android 13+ 的主題化單色圖層

