1 个不稳定版本
0.1.0 | 2024年3月26日 |
---|
#6 在 #free-bsd
91KB
2.5K SLoC
#ipfw-rs
问题跟踪在 https://gitlab.com/4neko/ipfw-rs
一个提供用户空间接口到FreeBSD IPFW防火墙的包,允许直接控制IPFW,而无需每次需要阻止网络主机或检查列表时都执行 ipfw(8)
此包只支持实际的FreeBSD最新版本,即14.0,但似乎协议变化不大,因此可能在FreeBSD 13上也能工作!
这是一个实验性包,并在"Aienma"项目中使用。
目前支持以下功能
- 在表中添加、删除、测试命令(目前为IP/IPv6/DNS的主机列表)
- 刷新表
示例
extern crate ipfw_rs;
use ipfw_rs::{Ipfw, IpfwCmd};
fn main()
{
let ipfw = Ipfw::new().unwrap();
let res =
ipfw.ipfw_table_handler("testtable", IpfwCmd::Add { hosts: vec!["127.0.1.1", "127.0.2.0/24"], req_atomic_op: true }, false);
match res
{
Ok(r) => println!("res: '{}'", r),
Err(e) => println!("err: '{}'", e)
}
let res =
ipfw.ipfw_table_handler("testtable", IpfwCmd::Test { hosts: vec!["127.0.1.1", "127.0.2.0/24"]}, false);
match res
{
Ok(r) => println!("res: '{}'", r),
Err(e) => println!("err: '{}'", e)
}
let res =
ipfw.ipfw_table_handler("testtable", IpfwCmd::Flush, false); //{ hosts: vec!["127.0.1.2"] }, false);// { hosts: vec!["127.0.1.1", "127.0.2.0/24"], req_atomic_op: true }, false);
match res
{
Ok(r) => println!("res: '{}'", r),
Err(e) => println!("err: '{}'", e)
}
println!("Hello, world!");
}
依赖关系
~5–14MB
~161K SLoC