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

putao
5 声望0 粉丝

推动世界向前发展,改善民生。