Skip to content

An API providing access to the Conntrack subsystem of the Linux kernel written in rust 🦀

License

Notifications You must be signed in to change notification settings

sfcompute/conntrack-rs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

github crates-io rust-docs Dependency Status


conntrack-rs

An API providing access to the Conntrack subsystem of the Linux kernel written in rust 🦀

This library provides access to the conntrack subsystem in the linux kernel leveraging netlink support via the neli library.

The current version only supplies Dump() functionality for the Conntrack table. Leveraging the conntrack-tools utility in linux, the Dump() behavior is equivalent to: conntrack -L. Most of the model and attribute parsing supported in this library extends beyond the dump() command, which allows this library to eventually cover the full feature set of the conntrack subsystem.

You can enable byte and packet counters using sysctl -w net.netfilter.nf_conntrack_acct=1

Privileges

You need the CAP_NET_ADMIN capability in order to allow your application to receive events from and to send commands to kernel-space, excepting the conntrack table dumping operation.

WSL2 Conntrack

Note that in order to enable connection tracking via conntrack on WSL2, you'll need to add the following iptable entry:

iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Example

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(())
}

About

An API providing access to the Conntrack subsystem of the Linux kernel written in rust 🦀

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%