#daemon #tun #routes #devices #routing #configuration #system

bin+lib tun-route-daemon

一个基于Rust的守护进程,用于管理和监控TUN设备和它们的路由配置

4个版本

0.1.5 2023年8月31日
0.1.3 2023年8月31日
0.1.2 2023年8月31日
0.1.1 2023年8月26日
0.1.0 2023年8月26日

265 in 操作系统

MIT 许可证

24KB
384

Tun Route Daemon

一个Rust crate,提供管理TUN设备路由和配置的工具。

使用方法

  1. 编译:确保您的系统已安装Rust。克隆仓库并导航到项目目录。

  2. 构建守护进程:使用以下命令构建守护进程

    cargo build --release
    
  3. 运行守护进程:要运行守护进程,提供所需的参数 tun_device_nametun_device_ip。例如

    ./target/release/tun-dev-daemon tun0 192.168.1.2
    

    tun0 替换为实际的TUN设备名称,将 192.168.1.2 替换为您希望的IP地址。

  4. 工作流程:守护进程遵循以下ASCII艺术图示中概述的工作流程。它初始化,检查TUN设备,存储旧路由,设置特定和默认路由,监控TUN设备,并在必要时恢复更改。

  5. 停止守护进程:要停止守护进程,请在运行守护进程的终端中按Ctrl+C。

请确保您有修改路由和与网络配置交互的必要权限。守护进程将根据提供的流程处理路由更改。

守护进程工作流程

  +-------+             +-------------------+
  | Start |------------>| Initialize Daemon |
  +-------+             +-------------------+
                                   |
                                   v
           +--------------------------------------+
           | Receive 'tun device name' and 'tun   |
           | device connection IP address'        |
           +--------------------------------------+
                                   |
                                   v
                        +------------------------+
                        | Check Tun Device        |
                        | Existence              |
                        +------------------------+
                                   |
                          +--------+---------+
                          |                  |
                          |                  |
                          v                  v
              +-------------------+    +-----------------+
              | Store Old Default |    | Log an error and|
              | Route             |    | exit or retry   |
              +-------------------+    +-----------------+
                          |
                          v
              +-------------------+
              | Set Specific Route|
              +-------------------+
                          |
                          v
              +-------------------+
              | Set Default Route |
              +-------------------+
                          |
                          v
              +-------------------+
              | Monitor Tun Device|
              +-------------------+
                          |
                +---------+----------+
                |                    |
                v                    v
    +----------------------+   +------------------+
    | Revert to Old Default|   | Keep Monitoring  |
    | Route                |   +------------------+
    +----------------------+
                |
                v
    +----------------------+
    | Remove Specific Route |
    +----------------------+
                |
                v
    +----------------------+
    |         Stop         |
    +----------------------+

示例用法

use std::env;
use std::io::Result;
use tun_route_daemon::route_utils as tun_route_utils;

#[tokio::main]
async fn main() -> Result<()> {
    // Parse command-line arguments for 'tun_device_name' and 'tun_device_ip'
    let args: Vec<String> = env::args().collect();
    if args.len() < 3 {
        println!("Usage: {} <tun_device_name> <tun_device_ip>", args[0]);
        return Ok(());
    }
    let tun_device_name = &args[1];
    let tun_device_ip = &args[2];

    // Run the daemon logic using the run_daemon function
    if let Err(err) = tun_route_utils::run_daemon(tun_device_name, tun_device_ip).await {
        eprintln!("Error: {}", err);
    }

    Ok(())
}

有关更多详细信息和高级用法,请参阅文档和源代码。

依赖项

~7–17MB
~218K SLoC