banner
Yuzhen

Yuzhen's Blog

🇨🇳 13 y.o. / Student & Developer & OIer / HAM & BGP Player
telegram
tg_channel
github
mastodon
email
zhihu

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。

  1. 下载 Release。
wget https://github.com/juicity/juicity/releases/download/v0.1.2/juicity-linux-x86_64_v3_avx2.zip
  1. 解压压缩文件。
unzip juicity-linux-x86_64_v3_avx2.zip
  1. 使用 在线 UUID 生成器 生成一个 UUID,保留备用。
  2. 编辑 server.json。
cp example-server.json server.json
nano server.json

Example:

{
    "listen": ":<端口>",
    "users": {
         "<生成的UUID>": "<密码>"
     },
     "certificate": "<证书链文件>",
     "private_key": "<私钥>",
     "congestion_control": "bbr",
     "fwmark": "0x1000",
     "send_through": "<服务器IP>",
     "log_level": "info"
}
  1. 运行服务端。
./juicity-server run -c server.json

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

客户端配置#

官方文档

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

本部分为 NixOS 下的配置。

  1. 安装 dae。
environment.systemPackages = with pkgs; [
  ...
  dae
  ...
];
  1. 新建 /etc/dae,编辑配置文件 /etc/dae/config.dae
mkdir -p /etc/dae
nano /etc/dae/client.json

Example:

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
}
  1. 新建 Systemd Service
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 告诉我有这么个东西。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。