6次发布
| 0.2.2 | 2023年11月9日 |
|---|---|
| 0.2.1 | 2021年1月31日 |
| 0.1.2 | 2021年1月30日 |
#5 in #封装
23KB
363 行
ERSPAN-RS
这是一个辅助库,用于从GRE封装的数据包中提取原始数据包。这是一个网络监控应用程序从远程目的地接收span数据时的便捷工具。
封装到GRE数据包中的数据可能是Cisco或其他支持的交换机生成的SPAN数据。封装的数据可以通过TCP/IP网络发送到远程目的地。与路由器上的本地SPAN端口相比,这是网络监控的更灵活的解决方案。该库允许基于Rust的服务解封装GRE封装的数据包,如ERSPAN。
该库仅在Linux和Cisco路由器上对ERSPAN类型II和III进行了测试。
库的入口点是 erspan_decap(packet_bytes) 函数,该函数返回一个包含 ErspanHeader 标头或 ErspanError 的 Result。该标头提供了封装数据包的二元细节以及来自路由器的带有span交通的 original_data_packet。如果数据包是无效的数据结构,则返回错误。
ipv6erspan 的解析尚未涵盖。
更多文档
- GRE数据包结构和RFC请参阅维基百科上的描述
- 关于SPAN和远程ERSPAN的介绍
- 在Cisco路由器上设置ERSPAN,如Nexus 7000
- Cisco网络分析(又名Stealthwatch)ERSPAN解封装配置指南请参阅SNA配置指南
- ERSPAN数据包也由Linux内核支持,请参阅手册页
用法
请参阅项目中的示例以获取Type2或Type3 ERSPAN数据包解封装
对于类型2数据包运行
cargo run --example type_2
对于类型3数据包运行
cargo run --example type_3
监控本地接口的GRE/ERSPAN数据包
cargo run --example packet_capture <interface name>
注意:示例需要在*nix系统和Mac上安装libpcap。对于Windows安装,请参阅此处WinPcap的安装手册
构建和测试
cargo build
cargo test
配置Linux机器以生成ERSPAN数据包
Linux内核有一个模块可以生成ERSPAN流量,作为本地接口上流量的副本。以下步骤展示了在Ubuntu 22 LTS上创建erspan网络接口的配置
创建新的erspan接口,报告来自10.0.10.140到ip 10.0.10.135的ERSPAN包,版本2,会话ID 1,来自原始接口ens4
sudo ifconfig ens4 mtu 1900
sudo ip link add dev erspan mtu 1900 type erspan seq key 10 local 10.0.10.140 remote 10.0.10.135 erspan_ver 2 erspan 1 dev ens4 erspan_dir egress erspan_dir ingress
这可以防止内核丢弃数据包
sudo ip link set dev erspan type erspan noiseq
设置接口并启动
sudo ip link set erspan up
使用tcpdump监控处理流量
sudo tcpdump -i erspan
将ens4的流量复制到erspan接口
tc qdisc add dev ens4 handle ffff: ingress
tc filter add dev ens4 parent ffff: matchall skip_hw action mirred egress mirror dev erspan
贡献
查看此项目的贡献指南:https://github.com/skoky/erspan-rs/blob/HEAD/CONTRIBUTING.md
许可证
查看LICENSE
依赖项
~3–4.5MB
~82K SLoC