1 个不稳定版本
0.1.0 | 2023 年 11 月 8 日 |
---|
#7 in #sniffing
19KB
344 行
pulso
A simple metrics collector for TCP/IP. Counts new connection events by source IP and port.
设计目标
- 小资源占用
- 最小化接口
- 干净且经过测试
功能
- IP 地址被哈希(可通过
privacy
功能标志禁用) - 支持 IPV6
依赖项
为什么
我想用 Rust 来实践。同样的功能可能可以用 tcpdump
和 awk/
ag
/lnav
实现。这不是一个强大的工具,只是一个基础。
安装
克隆仓库并 cargo install
(假设已安装 libpcap
)。
对于 Linux,发布目录中包含 MUSL 二进制文件。
您需要给予读取套接字的权限 sudo setcap cap_net_raw=eip /path/to/pulso
使用
TCP connection counter
Usage: pulso [OPTIONS] --device <DEVICE>
Options:
-d, --device <DEVICE> device name
-c, --connection-limit <CONNECTION_LIMIT> max connections
-t, --time-limit <TIME_LIMIT> max seconds
-h, --help Print help
-V, --version Print version
Environment Variables:
PULSO_SECRET (required) encryption key used for sensitive information
通过设置 RUST_LOG 环境变量,将日志输出到标准错误流。
示例
在 10 个连接后生成摘要
tar xvfz releases/x86_64-unknown-linux-musl/pulso_0.1.0.tar.gz
sudo setcap cap_net_raw=eip ./pulso
PULSO_SECRET=foo ./pulso -d lo -c 10
# 2da25a664b49c9b5:10 9306:9 9056:1
显示所有日志并在 1 分钟后生成摘要
RUST_LOG=info PULSO_SECRET=test pulso -d eth0 -t 60
有关预期功能的更完整说明,请参阅集成测试。
开发
该项目几乎功能完整。我还没有部署它。我怀疑我不会再投入更多精力,但在野外测试后可能会发布新版本。
cargomake test
依赖项
~13–28MB
~368K SLoC