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