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的帮助和激励。