3个版本

0.1.2 2024年5月21日
0.1.1 2023年11月16日
0.1.0 2023年4月19日

#netfilter中排名第3

Download history 148/week @ 2024-04-16 112/week @ 2024-04-23 66/week @ 2024-04-30 122/week @ 2024-05-07 170/week @ 2024-05-14 363/week @ 2024-05-21 258/week @ 2024-05-28 231/week @ 2024-06-04 243/week @ 2024-06-11 265/week @ 2024-06-18 107/week @ 2024-06-25 182/week @ 2024-07-02 176/week @ 2024-07-09 220/week @ 2024-07-16 106/week @ 2024-07-23 188/week @ 2024-07-30

每月下载量755

自定义许可

48KB
1K SLoC

github crates-io rust-docs Dependency Status


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