boringtun的使用

boringtun 是 cloudflare 开发的 WireGuard userspace 实现,其开发语言是 Rust,boringtun 可以在各种平台上使用,且效率高于 Wireguard-go, 且不需要内核支持 WireGuard 协议,这意味着 boringtun 可以在没有 WireGuard 内核支持的 lxc/ovz 等虚拟化中使用.

编译

首先需要安装 cargo, 网上随便找的 rust 安装脚本自带.

curl https://sh.rustup.rs -sSf | sh
ource $HOME/.cargo/env
当然也可以尝试使用系统自带的包管理器安装 cargo
然后从 github 上拉取代码和编译

mkdir boringtun
cd boringtun
git clone https://github.com/cloudflare/boringtun .
cargo build –bin boringtun –release
编译后生成的文件在 target/release/boringtun, 将其复制到 bin 目录中使用即可

cp target/release/boringtun /usr/local/bin/boringtun
配合 wg-quick 和 systemd 使用

安装 wireguard-tools, 安装方法不再叙述,使用方法是 wg-quick 前面加 env, 如下

WG_QUICK_USERSPACE_IMPLEMENTATION=boringtun WG_SUDO=1 wg-quick up wg0
使用 systemd 时首先编辑 wg-quick@.service 在 Environment= 后面添加上面的 env 即可,下面给一个随手在机器里 copy 的

[Unit]
Description=WireGuard via wg-quick(8) for %I
After=network-online.target nss-lookup.target
Wants=network-online.target nss-lookup.target
PartOf=wg-quick.target
Documentation=man:wg-quick(8)
Documentation=man:wg(8)
Documentation=https://www.wireguard.com/
Documentation=https://www.wireguard.com/quickstart/
Documentation=https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
Documentation=https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/wg-quick up %i
ExecStop=/usr/bin/wg-quick down %i
Environment=WG_QUICK_USERSPACE_IMPLEMENTATION=boringtun WG_SUDO=1

[Install]
WantedBy=multi-user.target
其它

这是 cloudflare 基于 rust 对 WireGuard 的实现,并非官方的 WireGuard-rs
boringtun 仍然需要 tun 的支持.

From: https://blog.ni-co.moe/public/581.html