3个版本
0.1.2 | 2024年5月21日 |
---|---|
0.1.1 | 2023年11月16日 |
0.1.0 | 2023年4月19日 |
在#netfilter中排名第3
每月下载量755
48KB
1K SLoC
conntrack-rs
用Rust编写的API,提供对Linux内核Conntrack子系统的访问 🦀
该库通过neli
库利用netlink支持,提供对linux内核中conntrack
子系统的访问。
当前版本只为Conntrack
表提供Dump()
功能。利用linux中的conntrack-tools
工具,Dump()
的行为等同于:conntrack -L
。该库支持的模型和属性解析大部分超出了dump()
命令,这允许该库最终覆盖conntrack子系统的全部功能集。
您可以使用sysctl -w net.netfilter.nf_conntrack_acct=1
启用字节和包计数器
权限
为了允许您的应用程序从内核空间接收事件并向内核空间发送命令,您需要具有CAP_NET_ADMIN
能力,除了conntrack表转储操作。
WSL2 Conntrack
请注意,为了在WSL2上通过conntrack
启用连接跟踪,您需要添加以下iptables条目
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
示例
use conntrack::*;
fn main() -> Result<()> {
// Create the Conntrack table via netfilter socket syscall
let mut ct = Conntrack::connect()?;
// Dump conntrack table as a Vec<Flow>
let flows = ct.dump()?;
for flow in flows {
log::info!("{flow:?}");
}
Ok(())
}
依赖关系
~3.5MB
~72K SLoC