Sing-Box自建节点,Trojan协议永不失联!
本文最后更新于 2025-09-22,文章内容可能已过时,如需更新请留言。部分素材来自网络,若不小心影响到您的利益,请联系我删除。
写在前面
为什么我更推荐大家自建节点,而不是购买机场呢。主要是从安全和稳定性两方面来考虑,可能一些人说自己买的机场很安全,又有零日志政策,但你没法确定对方实际上到底是如何操作的,机场也容易发动中间人攻击,从而窃取你的账户和隐私信息。从稳定性来说,尽管机场有若干节点,但很多节点其实是同一条真实线路分出来的而已,而且机场的流量又大,在特殊时期更容易被检测到;个人搭建的尽管只有一个节点,但是使用量少,反而更加隐蔽。
自建机场的麻烦之处是对技术力要求更高,但我认为这算不上什么缺点,如果连解决这点问题的能力都没有,那我认为你可能更适合国内的网络环境,尽管它相对封闭,但好在有完善的审查制度,你受骗的可能性更小。至于成本问题,机场的价格相对来说便宜一些,但是使用起来也是有诸多限制,比如倍率问题,而自建机场价格及时高一些,也没有高出很多。所以综合来看自建节点的选择更好一些。
很多人可能会说,什么年代了还在用trojan协议,早被gfw能精准识别了,别误人子弟了之类的话。实际上在我自己的使用体验中,并没有被封禁过,包括我也给一些朋友分享过这个访问,即使是最敏感的特殊时期,我也没被封禁过,我知道有个叫trojan-killer的项目,可以很简单的检测到trojan协议,我没有测试过,但是我通过wireshark抓包看到的tcp segment len和他提出的区间并不一致,再加上实际体验确实没有封禁过,所以我决定将这个方案分享给大家。
再简单介绍一下sing-box吧,这个真是我用过最好的服务端了,功能繁多而且性能高效,唯一美中不足的是更新后的配置文件里的字段经常更改,如果你经常更新的话配置文件也得跟着改。不过也还好,学习成本不是很高。
准备
一台vps
一个域名,并解析到vps上
vps的购买我推荐大家看看这个「点亮全球VPS」,因为每个人所在的位置不一样,网络环境也不一样,所以我直接推荐的vps可能对于你而言并不适用,再说我也没有vps的广告,所以暂时不给大家推荐,以后有机会了再说。域名的话可以购买,也可以申请免费的域名,不太清楚的可以等我之后的教程,会带领大家走一遍申请和购买的流程。
安装sing-box
我个人更喜欢用debian的发行版,所以教程里相关的命令都是debian的命令。如果你使用其他的发行版,请自行研究相关命令。如果你的服务器内存不到2g,建议你使用debian10或debian11,超过了2g就可以使用debian12或尝鲜debian13。另外我所有的命令都是使用root用户的,尽管这一操作并不十分安全,但考虑这台服务器只用来做代理,倒也无所谓了。如果你的服务器上不只跑一个应用服务,请创建不同的用户并给予sudo权限。
官方脚本一键安装
curl -fsSL https://sing-box.app/install.sh | sh如果有报错的话,可能是缺少curl或sudo命令之类的,可以通过下面的命令进行安装。
apt install curl sudo -y安装nginx
请不要省略这一步,nginx的stream模块是这个方案的重中之重。
apt install nginx -y有时候通过此方法安装的nginx会缺少streaem模块,可以通过以下命令进行安装。保险起见可以直接输入下面的命令安装stream模块。
apt install libnginx-mod-stream -y修改nginx配置文件
# 进入nginx目录
cd /etc/nginx
# 编辑nginx配置文件
nano nginx.conf
# 在nginx的http块输入以下内容
server {
listen 80;
server_name xxx.xxx.com; # 这里填入你的域名
root /var/www/html;
index index.html;
}
# 退出编辑
ctrl + o + 回车
# 对nginx的配置文件进行检测
nginx -t
# 重载nginx配置文件
systemctl reload nginx申请tls证书
# 在root目录下执行该命令
wget -O - https://get.acme.sh | sh
# 让amce.sh命令生效
. .bashrc
# 开启acme.sh自动升级
acme.sh --upgrade --auto-upgrade
# 申请证书测试,尽可能不要省略这一步
acme.sh --issue --server letsencrypt --test -d xxx.xxx.com -w /var/www/html --keylength ec-256
# 切换申请机构
acme.sh --set-default-ca --server letsencrypt
# 正式申请证书
acme.sh --issue -d xxx.xxx.com -w /var/www/html --keylength ec-256 --force
# 申请好后还无法直接使用,需要安装
# 创建目录
mkdir /etc/sing-box/cert
acme.sh --installcert -d xxx.xxx.com --cert-file /etc/sing-box/cert/cert.crt --key-file /etc/sing-box/cert/cert.key --fullchain-file /etc/sing-box/cert/fullchain.crt --ecc再次修改nginx配置
# 在/etc/nginx/nginx.conf最后面补充
stream {
map $ssl_preread_server_name $backend_name {
xxx.xxx.com trojan;
}
upstream trojan {
server 127.0.0.1:8081;
}
server {
listen 443 reuseport;
listen [::]:443 reuseport;
proxy_pass $backend_name;
ssl_preread on;
}
}
# 退出编辑器
ctrl + o + 回车
# 检查nginx配置
nginx -t
# 重载nginx配置
systemctl reload nginx修改sing-box配置
# 编辑sing-box配置
nano /etc/sing-box/config.json
{
"log": {
"disabled": false,
"level": "warn",
"output": "/etc/sing-box/box.log",
"timestamp": true
},
"dns": {
"servers": [
{
"type": "local"
}
]
},
"inbounds": [
{
"type": "trojan",
"tag": "trojan-in",
"listen": "0.0.0.0",
"listen_port": 8081,
"tcp_fast_open": true,
"users": [
{
"name": "admin", # 建议修改,不用在客户端配置
"password": "PASSWORD" #修改,需要在客户端中保持一致
}
],
"tls": {
"enabled": true,
"server_name": "xxx.xxx.com",# 填入你的域名
"alpn": [
"h2",
"http/1.1"
],
"min_version": "1.2",
"max_version": "1.3",
"certificate_path": "/etc/sing-box/cert/fullchain.crt", # 和证书路径保持一致
"key_path": "/etc/sing-box/cert/cert.key" # 和迷药路径保持一致
},
"fallback": {
"server": "127.0.0.1", # 这里是伪装的ip,我在服务器上还部署了一个cloureve的网盘
"server_port": 5212 # 伪装的端口,通过浏览器直接访问域名会访问到我的cloudreve的网盘
},
"multiplex": {
"enabled": true
}
}
],
"outbounds": [
{
"type": "direct",
"tag": "direct-out"
}
],
"route": {
"rules": [
{
"rule_set": ["geoip-cn", "geosite-cn"],
"action": "reject",
"method": "drop",
"no_drop": false
}
],
"rule_set": [
{
"tag": "geoip-cn",
"type": "remote",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs"
},
{
"tag": "geosite-cn",
"type": "remote",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs"
}
],
"final": "direct-out"
}
}
# 退出编辑
ctrl + o + 回车
# 配置检查
sing-box check启动sing-box
# 启动sing-box
systemctl start sing-box
# 设置开机自启
systemctl enable sing-boxsing-box的相关命令可以在sing-box网站中查看
可选但建议
部署cloudreve,不过再这里在写个cloudreve的教程篇幅就太长了,所以直接用官方的教程吧,如果碰到什么问题,欢迎给我留言。
如果服务器内存不够,可以通过谷歌搜索相关的网站
# 谷歌搜索,往后多翻几页,只要域名和cloudreve的官方域名不一样的就行
intitle:cloudreve
# 通过多地ping查看域名的真实ip,如果显示出不只一个ip,说明网站使用了cdn,换一个网站
http://ping.chinaz.com/
# 修改sing-box配置
"fallback": {
"server": "真实ip",
"server_port": 真实端口
},
# 修改配置文件后需要重启sing-box
systemctl restart sing-box客户端使用
客户端用你习惯的就好,小火箭,nekoray这些都不错。我感觉应该不用教了吧?如果真的有纯新手,欢迎留言,看了肯定会回复的。