在 Debian 上配置 Snell Server

我是 Surge 全家桶用户,手机端能远程控制家里其他 Surge 客户端并且配置文件能在设备间同步,非常方便。尤其是 Surge Ponte 支持使用 IPv6 之后,iPhone 甚至可以直接远程访问家里的其他设备,tailscale 可以下岗了。

Snell 是 Surge 官方的代理协议,配置非常简单,这里记录一下配置过程。

下载安装

官网是 https://kb.nssurge.com/surge-knowledge-base/zh/release-notes/snell,高版本 server 可以向下兼容低版本客户端。

cd /root
wget https://dl.nssurge.com/snell/snell-server-v5.0.1-linux-amd64.zip
unzip snell-server-v5.0.1-linux-amd64.zip
mv snell-server /usr/local/bin/
chmod +x /usr/local/bin/snell-server

基础配置文件

路径设定为 /etc/snell/snell-server.conf,先创建目录,再创建文件:

mkdir /etc/snell
nano /etc/snell/snell-server.conf

填写配置文件内容:

[snell-server]
listen = 0.0.0.0:8888
psk = 随机生成的强密码
ipv6 = false

如果需要同时支持 IPv6,即双栈:

[snell-server]
listen = ::0:8888
psk = 随机生成的强密码
ipv6 = true

顺手检查一下内核参数,确保 IPv6 不会有问题:

sysctl net.ipv6.bindv6only
# 若为 1,改为 0:
sysctl -w net.ipv6.bindv6only=0
echo "net.ipv6.bindv6only = 0" >> /etc/sysctl.conf
sysctl -p

记得在防火墙中允许监听的端口入站,有些云服务器的安全组中 IPv4 和 IPv6 防火墙是分开的,要单独配置。

systemd 服务模板

创建并编辑 systemd 服务模板:

nano /etc/systemd/system/snell.service

填写内容:

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

[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/snell-server -c /etc/snell/snell-server.conf
AmbientCapabilities=CAP_NET_BIND_SERVICE
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

常用命令:

systemctl daemon-reload     # 刷新 systemd 配置缓存
systemctl enable snell      # 自启动
systemctl start snell       # 启动服务
systemctl status snell      # 查看状态
journalctl -u snell -f      # 实时日志排查
ss -tulnp | grep snell      # 确认实际监听地址/端口

客户端添加代理服务器时,启用 连接复用TCP Fast Open

评论