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 告訴我有這麼個東西。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。