安装 iptables 的 TEE 模块:
sudo apt-get install iptables
sudo modprobe xt_TEE
实现双向镜像:
//将 eth0 的流量镜像到 tap0:
sudo iptables -t mangle -A PREROUTING -i eth0 -j TEE --gateway 192.168.0.2
//将 tap0 的流量镜像到 eth0:
sudo iptables -t mangle -A PREROUTING -i tap0 -j TEE --gateway 192.168.0.1
use std::env;
use std::io::{self, Read, Result};
fn main() -> Result<()> {
// 获取命令行参数,指定 TUN 设备名称
let args: Vec<String> = env::args().collect();
let dev_name = if args.len() > 1 {
&args[1]
} else {
"utun1" // MacOS 通常使用 utun 设备
};
// 创建并配置 TUN 设备
let mut config = tun::Configuration::default();
config.name(dev_name).tap();
// 打开指定的 TUN 设备
let mut dev = tun::create(&config).expect("Failed to create TUN device");
// 读取并打印流量
let mut buffer = [0u8; 4096];
loop {
match dev.read(&mut buffer) {
Ok(size) => {
println!("Read {} bytes: {:?}", size, &buffer[..size]);
}
Err(e) => {
eprintln!("Failed to read: {}", e);
break;
}
}
}
Ok(())
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。