Dae + Juicity 实现高性能透明代理

推荐使用 VP.S 服务器搭建，推荐购买日本东京（BBTEC）或德国法兰克福（CU Premium AS9929/10099）。

简介

Juicity 是一个在 2023 年 7 月末以 AGPL 协议发布的基于 QUIC 的新兴的代理协议。

Dae 是一个在 2023 年 1 月以 AGPL 协议发布的基于 eBPF 的 Linux 平台高性能透明代理软件。

服务端配置

官方文档

Juicity 官方提供了近 40 种平台的构建，支持 Windows、macOS 和 Linux 系统，x86、ARM、MIPS 和 Risc-V 平台。本文中搭建服务端的环境为 Debian 11，Juicity-Server 版本为 v0.1.2。

下载 Release。

Copy
wget https://github.com/juicity/juicity/releases/download/v0.1.2/juicity-linux-x86_64_v3_avx2.zip

解压压缩文件。

Copy
unzip juicity-linux-x86_64_v3_avx2.zip

使用 在线 UUID 生成器 生成一个 UUID，保留备用。

编辑 server.json。

Copy
cp example-server.json server.json
nano server.json

Example:

Copy
{
"listen": ":<端口>",
"users": {
"<生成的UUID>": "<密码>"
},
"certificate": "<证书链文件>",
"private_key": "<私钥>",
"congestion_control": "bbr",
"fwmark": "0x1000",
"send_through": "<服务器IP>",
"log_level": "info"
}

运行服务端。

Copy
./juicity-server run -c server.json

可以考虑使用守护程序软件或 Systemd Service。

客户端配置

官方文档

Dae 仅支持 Linux，Windows 和 MacOS 用户请移步 Juicity-Client。

本部分为 NixOS 下的配置。

安装 dae。

Copy
environment.systemPackages = with pkgs; [
...
dae
...
];

新建 /etc/dae，编辑配置文件 /etc/dae/config.dae。

Copy
mkdir -p /etc/dae
nano /etc/dae/client.json

Example:

Copy
global {
wan_interface: auto
log_level: info
allow_insecure: false
auto_config_kernel_parameter: true
}

node {
fra: 'juicity://<UUID>:<密码>@<域名>:<端口>?congestion_control=bbr'
}

dns {
upstream {
googledns: 'tcp+udp://dns.google.com:53'
alidns: 'udp://dns.alidns.com:53'
}
routing {
request {
fallback: alidns
}
response {
upstream(googledns) -> accept
!qname(geosite:cn) && ip(geoip:private) -> googledns
fallback: accept
}
}
}

group {
proxy {
policy: min_moving_avg
}
}

routing {
pname(NetworkManager, systemd-resolved, dnsmasq) -> must_direct
dip(224.0.0.0/3, 'ff00::/8') -> direct

dip(geoip:private) -> direct
dip(geoip:cn) -> direct
domain(geosite:cn) -> direct

fallback: proxy
}

新建 Systemd Service

Copy
systemd.services.dae = {
enable = true;
description = "Dae Client Service (config.dae)";
after = [ "network.target" ];
serviceConfig = {
Type = "notify";
User = "root";
LimitNPROC = 512;
LimitNOFILE = 1048576;
ExecStartPre = "/run/current-system/sw/bin/dae validate -c /etc/dae/config.dae";
ExecStart = "/run/current-system/sw/bin/dae run --disable-timestamp -c /etc/dae/config.dae";
ExecReload = "/run/current-system/sw/bin/dae reload $MAINPID";
Restart = "on-abnormal";
WorkingDirectory = "/etc/dae";
};
};

保存编译 NixOS 配置即可。

Credit

感谢 @bradfordzhang 告诉我有这么个东西。