#iptables #bindings #netfilter

rust-iptables

A iptables bindings for Rust

2 releases

0.0.2 Oct 25, 2021
0.0.1 Oct 22, 2021

#7 in #iptables


Used in leicester

MIT/Apache

15KB
387 lines

rust-iptables

A iptables bindings for Rust.

Overview

Rust bindings for iptables, it provides a few major components:

  • high-level handles, such as save/restore
  • table/chain/rule support
  • IPv4/IPv6 support

Example

A basic chain/table example.

[dependencies]
rust-iptables = { version = "0.0.2" }

Then, on your main.rs:

use rust_iptables::iptables;

fn main() {
    let ipt = iptables::new().unwrap();

    assert!(ipt.new_chain("nat", "TESTINGCHAIN").is_ok());
    assert!(ipt.append("nat", "TESTINGCHAIN", "-j ACCEPT").is_ok());
    assert!(ipt.exists("nat", "TESTINGCHAIN", "-j ACCEPT").unwrap());
    assert!(ipt.delete("nat", "TESTINGCHAIN", "-j ACCEPT").is_ok());
    assert!(ipt.save_all("test").is_ok());
    assert!(ipt.restore_all("test").is_ok());
    assert!(ipt.delete_chain("nat", "TESTINGCHAIN").is_ok());

    assert!(ipt.change_policy("filter", "FORWARD", "ACCEPT").is_ok());
}

More examples can be found here.

Supported Rust Versions

This library is verified to work in rustc 1.51.0 (nightly), and the support of other versions needs more testing.

License

This project is licensed under the Apache License 2.0.

Dependencies

~5MB
~90K SLoC