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 は、Windows、macOS、Linux システム、x86、ARM、MIPS、Risc-V プラットフォームをサポートする約 40 種類のプラットフォームのビルドを提供しています。この記事では、Debian 11 でサーバーを構築し、Juicity-Server のバージョンは v0.1.2 です。

  1. リリースをダウンロードします。
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

例:

{
    "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 サービスの使用を検討してください。

クライアントの設定#

公式ドキュメント

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

例:

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 サービスを作成します。
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 の設定を保存してコンパイルしてください。

クレジット#

@bradfordzhang さんに教えていただき、ありがとうございます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。