Total Pageviews

Wednesday, 13 April 2022

vopono是一个linux上的VPN工具

vopono 是文章作者自己的第一个有用的 Rust 项目. vopono 是一个linux 的 VPN 工具, 可以让不同的程序在临时的 network namespace 上启动, 以便每个程序都使用各自独立的 VPN连接,而不影响系统上的其他程序.

作者从项目背景, Rust带来的好处, 困难点, 目前存在的问题这几方面来回顾这个项目的开发,这一篇干货满满的分享,下面为部分节选:

Rust 带来的益处:
  1. Enums
    Rust对 enum 的原生支持,让推导和 debug 更加的简单和方便(例如在为OpenVPN协议上选择 TCP 还是 UDP), Rust 编译器会强制我们处理 enum 的所有可能情况来减少 bug.
  2. StructOpt
    StructOpt是一个通过  derive 宏来处理命令行参数 非常棒的 crate.
  3. Result  anyhow
    Rust 的  Result  和  ?  操作符让我们可以非常优雅的处理错误. 结合  anyhow  这个 crate 会非常容易的处理错误.
  4. Serde
    Serde  可以让你非常方便的序列化和反序列化你的结构体.
  5. Drop
    Drop  trait可以允许我们再在 struct 失去作用范围的时候运行desctructor. 当程序退出的时候, vopono用他来自动销毁一些临时的 network namespace.
  6. Cargo
    Cargo 作为 crate 管理器, 本身就是使用 Rust 的一大好处.
  7. include_str 
    include_str 宏可以在编译期间将硬盘上的文件作为静态 string 加载编译到 binary 中.
  8. Rustls
    Rustls 是一个TLS库,可以用来替代 OpenSSL.
  9. musl 和静态链接
    x86_64-unknown-linux-musl  target可以用来做(交叉)编译,静态的连接到 musl 而不是默认的 glibc .
原文链接:  http://jamesmcm.github.io/blog/2020/09/05/vopono/#en

No comments:

Post a Comment