#turn #channel #communication-channel #mobility #ip-address #command-line-tool #rfc8016

app turntie-cli

用于在TURN服务器上创建不可靠的不安全通道的命令行工具

1个不稳定版本

0.1.0 2023年3月28日

#4#mobility

MIT/Apache

21KB
296

turntie-cli

此工具演示了使用turntie库的用法,该库允许启用Mobility扩展将两个TURN分配绑定在一起,以便端点可以移动到其他位置并用于通信。

功能

  • 在由IP、端口、用户名和密码指定的TURN服务器上创建一对分配,并将中继地址作为权限添加到对方。
  • 将TURN客户端状态(包括凭据)序列化为不太长的base64行。
  • 从这些行中恢复TURN客户端,并将stdin行作为UDP数据包发送到另一个对等方到TURN服务器。
  • 序列化的TURN客户端状态(指定器)可以移动到另一个主机/网络。
  • 作为Rust库(适用于Tokio)提供

限制

  • 安全性不确定:指定的行包含明文中的TURN凭据,通信通道不可靠和不安全(基本上是原始UDP数据包)
  • TURN客户端实现简化 - 不检查TURN服务器的身份验证,可能不是生产就绪。我在实现它时没有完全阅读RFC。
  • 未连接的通道相对较快过期
  • 连接后,端点不能再移动到下一个主机(在此实现中)

安装

GitHub发行版下载预构建的可执行文件或使用源代码通过cargo install --path crates/turntie-clicargo install turntie-cli安装。

示例

hostA$ turntie tie 203.0.113.65:3478  myuser  mypassword
eJwtj?REDACTED?kvUYOw==
eJwtj?REDACTED?xjF6Y=

hostB$ turntie connect eJwtj?REDACTED?kvUYOw==
> 12345
< QQQQQ
^C

hostC$ turntie connect eJwtj?REDACTED?xjF6Y=
< 12345
> QQQQQ
^C

两个turntie connect都应该同时运行才能工作。

完整的未编辑的指定器通常由约150个base64字符组成。

CLI选项

turntie --help 输出
Usage: turntie <command> [<args>]

Use TURN server as a communication channel with movable ends Top-level command.

Options:
  --help            display usage information

Commands:
  tie               Create two allocation and return two specifier lines for
                    their resumption
  connect           Connect to one of the lines


Usage: turntie tie <turn_server> <username> <password>

Create two tied allocations and print two specifier lines for usage with 'turntie connect'.

Positional Arguments:
  turn_server       address of TURN server to create allocations in
  username          username to authenticate on TURN server with
  password          password to authenticate on TURN server with

Options:
  --help            display usage information

Usage: turntie connect <specifier>

Connect to one of the endpoints created by 'turntie tie' and exchange stdin/stdout lines with the peer which connected to the other endpoint.

Positional Arguments:
  specifier         serialized data describing the channel end

Options:
  --help            display usage information


依赖关系

~6–18MB
~200K SLoC