Sing-box 是很强大的通用代理工具,虽然有一定的学习成本,但是,要快速完成 sing-box 的安装和节点搭建,实际是一项非常简单的工作,对于很多人而言并没有任何门槛。本文就简单地加以介绍,不使用任何第三方脚本,而是通过官方仓库进行安装,并快速搭建、配置 shadowsocks 2022 节点,以及最简单的出口设置。
安装与基本配置
并不需要借助任何第三方脚本,直接使用官方给的安装命令即可。
curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc chmod a+r /etc/apt/keyrings/sagernet.asc echo "deb [arch=`dpkg --print-architecture` signed-by=/etc/apt/keyrings/sagernet.asc] https://deb.sagernet.org/ * *" | \ sudo tee /etc/apt/sources.list.d/sagernet.list > /dev/null apt-get update apt-get install sing-box
对于 Debian 12 这样较新的发行版,直接使用 apt install sing-box 命令安装就可以了。
apt install sing-box -y
安装完成后,系统会自动添加一项 systemd 守护进程并设置好开机自启。同时,会在 /etc 下创建 sing-box 目录作为配置文件(config.json)目录。
默认的 config.json 配置文件稍加修改即可使用,默认配置是包含了 shadowsocks 2022 入站的。以修改(添加)为最简单的 shadowsocks 节点为例,修改入站部分内容如下即可。
"inbounds": [ { "type": "shadowsocks", "listen": "::", "listen_port": 8080, "sniff": true, "network": "tcp", "method": "aes-128-gcm", "password": "password-可使用devtools生成一个" } ]
仅需注意一点,即 method 默认为 2022-blake-aes-128-gcm,因为绝大多数 ss 客户端无法兼容,此处可使用 aes-128-gcm 或 aes-256-gcm 代替。使用 systemctl 重启 sing-box 服务,就可以使用你的客户端连接了。
IPv6 only 添加 IPv4 出口
对于 IPv6 only 主机,github、proton 等众多站点和服务无法直接访问,可以使用 warp 为主机添加 IPv4 出口,同样可以使用官方命令,无需额外的第三方脚本。
curl -fsSL https://pkg.cloudflareclient.com/pubkey.gpg | sudo gpg --yes --dearmor --output /usr/share/keyrings/cloudflare-warp-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/cloudflare-warp-archive-keyring.gpg] https://pkg.cloudflareclient.com/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare-client.list apt-get update && apt-get install cloudflare-warp
安装完成之后,同样会添加一项 systemd 守护进程并设置为开机自启动。
接下来,注册 warp 服务。注册过程中输入 y 回车同意 ToS,出现success即注册成功。
warp-cli register
完成注册后务必添加排除路由,否则会导致主机失联。以下命令排除所有的 IPv6 地址经 warp 隧道路由,避免 IPv6 only 主机失联,如果是 IPv4 Only VPS,则应该使用第二行命令。
warp-cli tunnel ip add-range ::0/0 #warp-cli tunnel ip add-range 0.0.0.0/0
连接并测试。
warp-cli connect curl -4 ip.sb
同理,对于 IPv4 only 的 VPS,也可以使用 warp-cli 为其添加 IPv6 出口。无论添加了 IPv6 还是 IPv4,该接口只能用于出站,无法入站。
如果是 IPv4 Only VPS 需要添加 IPv6 接口,并且需要入站,则应使用 HE tunnel broker,具体方法参考本站往期博文「配置使用HE隧道服务获取无穷 IPv6 地址」,此处不再赘述。
添加 http/socks 代理出口
Sing-box 功能很强大,http/socks 出站是其最基本的配置。很多时候,我们会有在远程 sing-box 添加特定代理(如静态住宅代理、游戏加速代理)的需求。这时,很可能会遇到如下场景:
- 静/动态住宅、游戏代理一般仅提供 http/socks 等协议类型
- 出于政策和安全考虑,国内 IP 不允许直接连接国外静/动态住宅代理
这时,我们可以在安装配置好 sing-box 的远程节点上,增加 http/socks 出口即可。首先,本文在配置文件中增加类型为 http 的出口,tag 作为其标识可以自定义。
{ "type": "http", "tag": "http-out", "server": "IP_or_Hostname", "server_port": 1111, "username": "username_basic_auth", "password": "password_basic_auth", }
然后,添加路由规则,这里以按照域名进行出口分流的方式,也即仅访问 netflix、ipinfo.io 的出站流量,才会分配至标识名为 http-out 的 http 代理。实际使用时,可将 ipinfo.io 删除,其作用仅仅是在测试时判断该条规则是否生效、出口 IP 是否为 http 代理节点。
{ "domain_suffix": [ "netflix.com", "netflix.net", "nflximg.com", "nflximg.net", "nflxvideo.net", "nflxso.net", "nflxext.com", "ipinfo.io" ], "outbound": "http-out" }
编辑 config.json 配置文件后,记得使用 systemctl 命令重启 sing-box 服务。
systemctl restart sing-box.service
Sing-box 的介绍内容大多集中在搭建各种加密代理协议方面,反而 http、socks 这些在 uplink 住宅代理、游戏代理或自建解锁服务以及流量转发等方面的内容很少涉及。例如,不采用 DNSMasq 之类的服务进行 DNS 劫持,而是直接借助路由规则转发流量进行流媒体解锁,个人两台 VPS 之间使用 socks 进行转发是最为简洁、高效的,并且不会存在任何 SNI 代理/DNS 解锁方式的特征被探测乃至滥用。
更多精彩,敬请关注老 E 的博客!
文章评论