#icmp #tunnel #encryption #client-server #packets #ip #security

bin+lib icmptunnel-rs

通过 icmp ping 传输 ip 数据包

1 个不稳定版本

0.1.0 2023 年 11 月 21 日

#17#icmp

MIT 许可证

61KB
1.5K SLoC

Icmptunnel-rs

一个完整的 icmp 隧道 Rust 实现,包括身份验证和加密。灵感来自 https://github.com/DhavalKapil/icmptunnel

快速入门

git clone https://github.com/fabi321/icmptunnel-rs.git
cd icmptunnel-rs
cargo build --release

运行服务器

sudo ./target/release/icmptunnel-rs server --password <password>

运行客户端

sudo ./target/release/icmptunnel-rs client --password <password> --server-address <server ip>

特性

  • 身份验证
  • 透明服务器(如果数据包不是隧道数据包,将回复正常的 icmp 回显响应)
  • 加密
  • 为连接的客户端自动分配 IP(每个服务器最多 253 个客户端)
  • 会话处理带超时
  • 会话密钥更新

已知限制

  • 传输介质的 MTU 是硬编码的(如果服务器和客户端之间的 MTU 低于硬编码的 MTU,则不支持)
  • 仅支持 IPv4,包括传输的数据包和封装的 ICMP 数据包
  • 仅在 Linux 上测试过

已知安全问题

  • 密码以明文形式暴露,因为它们在进程列表中可见
  • 可以重用散列密码。然而,以这种方式创建的会话实际上是无用的,因为攻击者需要私有的 dh 密钥才能实际使用它
  • 时间侧信道允许服务器发现(至少在理论上)

依赖项

~8–18MB
~233K SLoC