Tuntox 是一個透過 Tox 協定轉送 TCP 連線的程式。這允許低延遲地存取位於您無法控制的 NAT 後面或具有動態 IP 位址的遠端電腦。
Tutox 是一個單一的二進位文件,可以在客戶端模式或伺服器模式下運作。根據經驗,在要存取的遠端電腦上執行伺服器,在要存取伺服器的本機電腦上執行客戶端。
Tutox 正處於早期工作進展階段。它不會殺死你的山羊,但它可能會出現段錯誤、記憶體洩漏或有安全問題(儘管我試圖使其相當安全)。
如果您不知道 Tox 是什麼 - 它是一種完全 P2P 的即時通訊協議,支援音訊/視訊通話和檔案傳輸。與 Skype 不同,它是完全開放的,也與 XMPP 不同 - 通話和文件傳輸實際上是 P2P。如果有機會,請查看 https://tox.chat/ 並下載客戶端。
從 github 上的「發布」標籤取得二進位檔案。只需下載適合您的架構的正確文件,執行 chmod +x 即可完成。這些二進位檔案使用我的 PGP 金鑰 11C1 B15A 5D5D D662 E469 928A EBDA 6B97 4ED3 D2B7 進行簽署。
如果您懷念人們編寫自己的裝置驅動程式的時代,請參閱 BUILD.md。
在透過 3G 連線的筆記型電腦、六個 NAT 後面的家用電腦或 Raspberry Pi 上執行 Tuntox 伺服器。無需將連接埠轉送到其公用 IP - 該機器將可透過 Tox 覆蓋網路進行存取。
./tuntox
在前台運行伺服器。當伺服器啟動時,它會將其 Tox ID 列印到輸出中 - 請注意,稍後您將需要它從外部存取機器。
如果您終止伺服器 (Ctrl-C) 並再次啟動,它將產生一個新的 Tox ID,您需要再次記下它。這有點違背了目的,因此您需要幫助伺服器將其 Tox ID 儲存在某處。預設情況下,它會在 /etc/tuntox/ 中保存一個文件,因此如果您建立此目錄並對其進行 chown 以便 tuntox 可以存取它,它將具有固定的 Tox ID。
或者,您可以使用 -C 開關:
./tuntox -C /path/to/the/config/directory/
若要在啟動時進行守護進程,請新增 -z:
/path/to/tuntox -z
或者,如果您運行supervisord 或systemd 之類的東西,歡迎您為您選擇的系統貢獻一個設定檔(請參閱#3、#4、#6)。絕對不需要以 root 身分執行伺服器。
因此,筆記型電腦現在已經安裝了 Tuntox 伺服器。你如何連接到它?
./tuntox -i -L 2222:127.0.0.1:22
其中
是您在設定伺服器時記下的 ID。你沒有忘記寫下來吧?
運行此命令後,打開第二個終端機視窗並執行:
ssh -p 2222 myuser@localhost
神奇的是,本機上的連接埠 2222 現在是執行 Tuntox 伺服器的電腦上的 SSH 伺服器。
-L 開關的工作方式(幾乎)與 SSH 中的相同。對於外行人來說,-LA:B:C 表示「將 ip B 上的連接埠 C 轉送到本機上的連接埠 A」。與 SSH 不同,您不能對 B 使用主機名稱(除非動態連結二進位)。
或者,SSH ProxyCommand 模式也可以運作:
ssh -o ProxyCommand='./tuntox -i -W localhost:22' gdr@localhost
有趣的東西:VPN over Tox
客戶端可以作為常規非 root 使用者執行,除非 A < 1024(“A”是本機連接埠)。有一個解決方法可用。
如果沒有 -s 開關,TUNTOX 就不安全。在伺服器和客戶端上提供-s yourpassword ,就可以了。此開關在 0.0.4 中引入,代號「Mr. Lahey's Got My Porno Tape!」。更好的是,在兩側運行TUNTOX_SHARED_SECRET=yourpassword tuntox ...
Tuntox 伺服器在每次啟動時產生新的 Tox ID,或將其私鑰保存在檔案中。任何想要連接到該伺服器的人都需要其 Tox ID,該 ID 由公開的公鑰和秘密的 32 位元「反垃圾郵件」值組成。然後,客戶端發送一個共享金鑰,然後將其與伺服器命令列上提供的金鑰進行比較。如果不匹配,好友請求將不會得到答覆。
因此,擁有伺服器的 Tox ID 和秘密應被視為等同於擁有具有 SSH 存取權限的 Unix 帳戶。 Tutox 沒有實現遠端 shell 功能,但它可能是可利用的。
PSK 驗證是可選的,但建議使用 - 僅當伺服器端存在 -s 開關或設定了 TUNTOX_SHARED_SECRET 環境變數時才啟用它。 PSK 作為 Tox 好友請求訊息發送 - 據作者了解 libtoxcore 代碼,它是使用伺服器的公共 EC 金鑰加密的。
Tuntox 伺服器可以選擇僅允許列入白名單的 ToxID。提供-i yourallowedtoxy一次或多次以將 ToxID 添加到白名單。注意:預設的客戶端行為是為每次運行產生一個新的 ToxID(因為作者認為這是一個很好的隱私功能)。您將需要在用戶端中使用 -C 開關來強制從 tox_save 讀取已儲存的身份。
Tuntox 依托 Tox 協議,該協議本身尚未經過安全研究人員的審查。 Tox 加密是透過 libsodium(基於 Bernstein 的 NaCl)實現的,因此使用黃道曲線 25519 進行金鑰交換,使用 salsa20 進行流加密。就作者所知,libsodium 使密碼錯誤變得盡可能困難,但直到 Tox 被審計後我們才知道。
是的,有一個
對於 GPLv3 感到抱歉 - toxcore 和 utox(我從中藉用了一些程式碼)都是 GPLv3。
感謝 toxcore 和 utox 開發人員,沒有他們,這個程式將永遠不會存在。
感謝Mr_4551的幫助與激勵。