在 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。