使用 Caddy-L4 为 Xray REALITY 与网站实现 443 端口复用

一、前言

在使用 Xray REALITY 时,一个很现实的问题是:

REALITY 最适合跑在 443 端口,但网站本身也需要 443 端口。

虽然 REALITY 也可以使用 8443、2096、30001 等奇怪端口,但从“流量外观”上就会显得不自然。

这种情况下需要进行 443 端口的复用,一般由 Nginx 来实现:REALITY 监听 443,其他流量 fallback 到网站服务。

Nginx 的配置对于我的脑子来说实在是难 ,所以我一直用的是 Caddy,本文将会使用 Caddy-L4 来实现 443 端口的复用。

二、安装 Caddy-L4

Caddy-L4 是 Caddy 的一个传输层(OSI Layer 4)扩展,用于处理 TCP/UDP 流量,并支持基于 TLS SNI 的连接分流。

该扩展并不自带于 Caddy,因此需要去 下载页面 勾选 caddy-l4 并下载系统对应版本的 Caddy。

参照 Manual Installation 安装到系统。

三、配置 Caddyfile

REALITY 使用 10443 端口作为入站,TLS SNI 使用 intel.com 与 www.intel.com。

barku.re 是一个运行在本地的网站,监听 3000 端口。

下面是一个可能的配置:

{
    email hi@barku.re
    https_port 8443

    layer4 {
        :443 {
            @reality tls sni intel.com www.intel.com
            route @reality {
                proxy 127.0.0.1:10443
            }

            route {
                proxy 127.0.0.1:8443
            }
        }
    }
}

https://barku.re:8443 {
    bind 127.0.0.1
    tls hi@barku.re
    reverse_proxy 127.0.0.1:3000
}
dark
sans