我原服务器是使用Shadowsocks-rust作为服务端进行前置代理的,搭设略显复杂,周末折腾了下sing-box作为服务端,搭设十分简单,且支持更多协议,配合路由器上homeproxy,感觉速度更快了(可能心理作用)。
Sing-box支持Shadowsocks、Socks5、REALITY、Hysteria2、TUIC、 Trojan、VLESS-WS-TLS等多种协议使用。只要配置得当,通过不同的端口号,可以同时使用这些协议。这里以Shadowsocks、Socks5、REALITY这3个为例,介绍下搭建过程。

一、安装Sing-box服务端
Singbox官方有一键脚本,debian搭设一行命令解决。
bash <(curl -fsSL https://sing-box.app/deb-install.sh)
如果报错curl,可以用下列命令解决
apt update apt install curl -y
有的debian系统还报错脚本,是没有安装sudo的原因
apt install sudo
执行完,只需要写入配置文件就可以使用了,配置文件文件位置在/etc/sing-box/config.json。
先启用singbox,
# 开机自启 systemctl enable sing-box # 启动singbox systemctl start sing-box
二、更改配置文件
官网wiki提供了配置文件解读,可以查看https://sing-box.sagernet.org/configuration/,这里介绍下Shadowsocks、Socks5、REALITY这3个,简单方便,无需自己配置TLS。
Socks5这个无特殊的配置要求,REALITY由于需要”借用证书“,有些要求。通过下列命令生成uuid,及公私钥。Shaodowsocks如果用2022系列加密方式也需要通过命令获取密码。
# 生成Shaodowsocks 2022 methods key 16位2022-blake3-aes-128-gcm sing-box generate rand --base64 16 # 生成uuid sing-box generate uuid # 生成公私钥,请记录保存 sing-box generate reality-keypair
REALITY对于非合法的代理流量会转发至TLS指向的源站,如果源站套用了CDN会导致流量被有心人士偷跑。所以借用证书的网站需没有套知名的CDN,如Cloudflare、Gcore等。也不要选用大公司的网站如amazon.com等,大公司会公开他们的IP地址段,非他们IP段内服务都是假冒或反代,这给GFW封锁提供了便利。所以我们需要找寻那些没有套CDN的不知名网站域名或自己的域名。
singbox完整配置文件如下:
{
"log": {
"disabled": false,
"level": "warn",
"timestamp": true
},
"inbounds": [
{
"type": "socks",
"tag": "socks-in",
"listen": "::",
"listen_port": 1080,
"users": [
{
"username": "vpssocks5",
"password": "SE63DkP46pMBd8N4"
}
],
},
{
"type": "shadowsocks",
"tag": "ss-in",
"listen": "::",
"udp_timeout": "5m",
"udp_fragment": true,
"listen_port": 9527,
"method": "2022-blake3-aes-128-gcm",
"password": "PdvPaKfhCPH/aFO7M7NBZw=="
},
{
"type": "vless",
"tag": "vless-in",
"listen": "::",
"listen_port": 443,
"users": [
{
"uuid": "97672916-60a5-4581-a915-22a707c614fc",
"flow": "xtls-rprx-vision"
}
],
"tls": {
"enabled": true,
"server_name": "www.wow.com", // 借用证书的域名,tls1.3,h2
"reality": {
"enabled": true,
"handshake": {
"server": "www.wow.com",
"server_port": 443,
},
"private_key": "SEwxvL8O_O1qee-T7LnajVvy3uZNiOhnV0YxjXFLikU", // 刚才生成的私钥
"short_id": [
"8848" //// 客户端ID之一,0 到 f,长度为 2 的倍数,长度上限为 16
],
"max_time_difference": "1m"
}
}
}
],
"outbounds": [
{
"type": "direct",
"routing_mark": 100 //设置 netfilter 路由标记,供防火墙使用
}
]
}
将上述文件放到记事本里修改为自己的。"uuid": "97672916-60a5-4581-a915-22a707c614fc", 后面不能加注释否则报错。
然后写入配置文件:
rm /etc/sing-box/config.json nano /etc/sing-box/config.json
黏贴自己的配置文件后 ctrt+x 退出, y 并保存。
重启singbox
systemctl restart sing-box
查看状态:
systemctl status sing-box
如果失败,没有”active (running) “,可以查看日志看看哪里配置错误
journalctl -u sing-box --output cat -e
至此服务器搭建sing-box完成了。1080是socks5代理端口,9527是shadowsocks代理端口,443是reality代理端口,一个服务器同时提供3种服务,可玩性还是不错的。
查看sing-box端口占用情况:
root@example:~# netstat -tulnp |grep sing-box tcp6 0 0 :::1080 :::* LISTEN 522/sing-box tcp6 0 0 :::443 :::* LISTEN 522/sing-box tcp6 0 0 :::9527 :::* LISTEN 522/sing-box udp6 0 0 :::9527 :::* 522/sing-box
三、客户端设置
上面没报错的话,根据配置文件的协议、端口、密码等填入客户端,现在就可以完美科学上网了。reality配置里需要填入上述生成的公钥。homeproxy的reality设置图:

技术不断升级,请注意文章时效性。
本站文章,欢迎转发。转载请注明出处:https://www.bandwh.com/net/2175.html
