6次发布

0.2.2 2023年11月9日
0.2.1 2021年1月31日
0.1.2 2021年1月30日

#5 in #封装

MIT许可证

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 标头或 ErspanErrorResult。该标头提供了封装数据包的二元细节以及来自路由器的带有span交通的 original_data_packet。如果数据包是无效的数据结构,则返回错误。

ipv6erspan 的解析尚未涵盖。

更多文档

用法

请参阅项目中的示例以获取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