跳转至

Snell

服務器系統Debian11、12可用

安裝

# 下載 Snell Server https://manual.nssurge.com/others/snell.html
wget https://dl.nssurge.com/snell/snell-server-v5.0.1-linux-amd64.zip
# 解压 Snell Server 到指定目錄
unzip snell-server-v5.0.1-linux-amd64.zip -d /usr/local/bin
# 賦予服務器权限
chmod +x /usr/local/bin/snell-server
#  進入解壓縮後的目錄,執行 ./snell-server 生成設定檔 snell-server.conf。您可以使用文字編輯器修改設定檔,例如更改端口、PSK 等。
cd /usr/local/bin
# ./snell-server 
# 配置文件:
mkdir -p /etc/snell
# 生成配置文件
snell-server --wizard -c /etc/snell/snell-server.conf

服務自啓

nano /etc/systemd/system/snell.service

[Unit]
Description=Snell Proxy Service
After=network.target

[Service]
Type=simple
User=root
Group=root
LimitNOFILE=32768
ExecStart=/usr/local/bin/snell-server -c /etc/snell/snell-server.conf
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

操作

# 重載服務
systemctl daemon-reload
# 自啓 | 啓動 | 停止 | 狀態 Snell
systemctl enable snell
systemctl start snell
systemctl stop snell
systemctl status snell
# 查看端口占用
ss -lpnt | grep snell
# 日志
journalctl -u snell -f

配置參考

snell-server.conf

[Snell Server]
listen = 0.0.0.0:5200
psk = 你的PSK
ipv6 = false
obfs = http

Surge 客戶端配置

[Proxy]
Snell = snell, 你的伺服器IP地址, 你的伺服器端口, psk=你的PSK, version=5

ShadowTLS 安装与配置

下载最新版二进制文件

cd /usr/local/bin
sudo wget -O shadow-tls https://github.com/ihciah/shadow-tls/releases/latest/download/shadow-tls-x86_64-unknown-linux-musl
sudo chmod +x shadow-tls

创建 Systemd 服务文件 创建服务以实现后台运行和开机自启:

sudo nano /etc/systemd/system/shadow-tls.service

写入以下内容(注意修改 password 和 tls 域名):

[Unit]
Description=Shadow-TLS Server
After=network.target

[Service]
Type=simple
# --v3: 使用 v3 协议 (推荐)
# --listen: 对外监听端口 (客户端连这个端口)
# --server: 后端 Snell/SS 服务地址 (本地回环地址)
# --password: ShadowTLS 专用密码 (自设,与 Snell 密码不同)
# --tls: 用于伪装的域名 (必须支持 TLS 1.3 的大厂域名)
ExecStart=/usr/local/bin/shadow-tls --v3 server --listen ::0:443 --server 127.0.0.1:5200 --password 你的ShadowTLS密码 --tls www.microsoft.com:443
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启动服务

systemctl daemon-reload && systemctl enable shadow-tls
systemctl start shadow-tls

Surge 客戶端配置

MyProxy = snell, [你的服务器公网IP], 443, psk=[Snell的PSK], version=5, reuse=true, shadow-tls-password=[ShadowTLS的密码], shadow-tls-version=3, shadow-tls-sni=www.microsoft.com

修改 Nginx 配置 (nginx.conf)

你需要修改顶层配置(在 http {} 块之外,通常是在 nginx.conf 的最后添加 stream {} 块):

http {
    ···
    server {
       listen 4443 ssl default_server;
       ssl_reject_handshake on;
    }
}
stream {
    # 定义分流逻辑
    map $ssl_preread_server_name $backend {
        # 将 ShadowTLS 的伪装域名转发给本地 8443
        www.microsoft.com  shadowtls_backend; 

        # 默认转发给本地 Nginx HTTPS 端口 (需要把原网站监听改为 127.0.0.1:4443)
        default            nginx_web_backend;
    }

    upstream shadowtls_backend {
        server 127.0.0.1:8443;
    }

    upstream nginx_web_backend {
        server 127.0.0.1:4443;
    }

    server {
        listen 443 reuseport;
        listen [::]:443 reuseport;
        proxy_pass $backend;
        ssl_preread on; # 开启 SNI 读取,不解密流量
    }
}

卸载

systemctl stop snell && systemctl disable snell.service && rm /etc/systemd/system/snell.service && systemctl daemon-reload && systemctl status snell
rm -rf /etc/snell/ && rm /usr/local/bin/snell-server