-
项目面向自建或需要修改配置的用户
-
一般普遍用法是
sing-box服务端运行在各Linux发行版上,电脑、手机、平板、路由器、安卓电视、安卓电视盒子等作为客户端 -
配置样例服务端是
sing-box实现的ShadowTLS v3和AnyTLS + Reality协议,各平台sing-box作为客户端,AnyTLS + Reality协议需要sing-box ≥ 1.12.0 -
sing-box作为服务端或是客户端取决于你的配置文件,它二进制文件不区分服务端客户端 -
修改配置需要有基本的JSON语法基础,使用其他协议参考官方项目文档修改服务端的入站、客户端的出站,样例默认添加了广告屏蔽规则集,不需要可删除,sing-box官方项目文档地址:
https://sing-box.sagernet.org/zh/configuration -
服务端和客户端配置文件默认文件名
config.json,使用默认名需要修改为config.json -
配置样例经过实际验证,对应版本可用。配置样例并非完美,不足之处欢迎提出意见
-
sing-box-GeoIP-Geosite:指sing-box ≤ 1.7.8版本使用GeoIP、Geosite进行国内外、私有地址分流。sing-box ≤ 1.7.8的版本可以使用,已在sing-box 1.8.0及以后的版本废弃
-
sing-box-rule-set:指从sing-box 1.8.0版本后使用规则集方式进行国内外、私有地址分流,更加灵活
-
文件名包含IPv4:服务端和客户端都使用IPv4地址进行配置,受Golang的特性,监听IPv4地址也使用
"::"形式,它等同于"0.0.0.0",IPv4和IPv6服务端都是["listen": "::"],为了和官方项目一致不做修改 -
文件名包含IPv6:服务端和客户端都使用IPv6地址进行配置,IPv6的服务端兼容IPv4客户端
-
文件名包含
mixed表示使用Mixed模式,官方项目描述:mixed入站是一个 socks4, socks4a, socks5 和 http 服务器。 -
文件名包含
tun表示使用Tun模式,它在目标系统上创建虚拟网卡接管流量,在Windows上需要管理员权限
-
[安全风险提示] 使用非
GREASE ECH加密套件来缓解uTLS中的Chrome指纹Bug: 如果你的sing-box < 1.12.10或sing-box < 1.13.0-alpha.22,那么需要修改你全平台本地配置文件中 "fingerprint" 为使用非GREASE ECH加密方式的指纹,目前可用的是 "firefox"、"ios"。否则可能你会被检测到使用模拟 Chrome 指纹,这是一种安全风险,uTLS v1.8.1已经修复。详见:refraction-networking/utls#375 -
[关于DNS解析泄露的纷争] 我知道有很多人在博客/论坛/群组中说不要在意DNS泄露,甚至有些代理圈的开发者也大意说只有小白在意DNS泄露,防DNS泄露功能是为小白准备的,为了堵住他们的嘴。但从网络安全/信息安全的角度不赞成他们的观点,用这些代理软件不仅仅是解决能上网的问题,更要保证你网络活动的匿名和数据的隐私。如果你接入的第一层运营商/公共DNS/递归DNS服务器本身不可靠,遇到敏感域名时会上报/记录该怎么做?它们肯定会记录你的DNS请求,需要远程解析等方法来规避
-
为了防止DNS解析泄露,Tun模式启用了防DNS泄漏的规则,防止国内第三者知道你访问了哪些网站。使用
https://ipleak.net、https://browserleaks.com/dns来检测现有软件的DNS是否泄露 -
如果你不完全理解官方项目文档,尽量不要自己配置DNS分流,配置不合理会造成DNS泄露
-
Shadowrocket(AKA “小火箭”)会泄露你的DNS记录,它只在配置文件中让
ipleak、browserleaks等检测网站走代理,让你看起来没有DNS泄漏,这是掩耳盗铃的做法,具体可以查看它的配置文件 -
[
1.11.0版本已废弃]不要在客户端入站[inbounds]监听字段中配置"domain_strategy",可选值:prefer_ipv4 prefer_ipv6 ipv4_only ipv6_only。如果设置,域名在请求发出之前抢先在本地解析成IP,这可能会造成DNS泄露,使你的浏览隐私不再安全 -
除DNS泄漏外,还需要注意WebRTC泄漏,Tun模式已启用防WebRTC泄漏。Mixed模式无法防止WebRTC泄漏,需要额外步骤,浏览器禁用WebRTC参考:
How to Disable WebRTC A.WebRTC in Firefox To disable WebRTC in Firefox: 1.Type `about:config` in the address bar and press Enter. 2.In the search bar, type `media.peerconnection.enabled` and `double-click` the preference to set its value to false. B.WebRTC in Chrome 1.The recommended solution to limit the risk of IP leakage via WebRTC is to use the official Google extension called [WebRTC Network Limiter](https://chrome.google.com/webstore/detail/webrtc-network-limiter/npeicpdbkakmehahjeeohfdhnlpdklia), which provides a range of options with varying levels of protection. -
配置文件使用了规则集方式进行国内外、私有地址分流。国外走代理,国内和私有IP直连,节省服务器流量并提高国内访问速度
-
因
SagerNet官方项目的geosite-cn.srs域名不全,Bypass后不在列表内的cn网站也走代理,有些政府事业网站屏蔽了海外IP导致无法访问。为了解决这一问题,geosite-category-ads-all、geosite-cn、geoip-cn全部替换成MetaCubeXmeta-rules-dat库中的srs源 -
配置文件部分字段为空表示使用内置默认值,方便你完全理解官方项目文档后按需修改
-
在Windows上不要使用记事本编辑配置文件,Windows(CR LF)和Linux(LF)、MacOS(CR)文本换行符不一致,导致服务端读取配置时出现问题,使用专业文本工具编辑,如果发现配置文件在Git提交/拉取时自动转换成
CR LF换行符,必要时需要手动改成LF换行符
-
[
已解决:根据反馈,小米 MIUI 14.0.25 (Android 13)使用sing-box 1.9.3以上版本会出现异常,包括不限于APP卡死、崩溃]。调查后sing-box从某个版本起需要定位权限,用以获取网络相关配置,国产系统限制了定位权限,AOSP没此问题 -
在Windows 10 LTSC Tun模式中,sing-box ≤ 1.10.0,如果出现DNS解析正常,出站异常无法连接/打开失败,
stack需设置为:"stack": "gvisor",同时可能IPv6支持不佳,如需使用IPv6更新sing-box到1.11.0以上 -
Armbian 6.1.99内核中使用tun模式,并且Armbian本地DHCP IPv4/IPv6双栈,服务器IPv4,Armbian系统日志频繁出现
NetworkManager[...]: <warn> [....4308] ndisc[0x...,"eth0"]: solicit: failure sending router solicitation: Operation not permitted (1)检查你Armbian本地的config.json配置文件,从IPv4改成IPv4/IPv6双栈来解决
"address": [ "172.17.0.1/30", "fdfe:dcba:9876::1/126" ],
使用以下命令来查看日志是否出现错误
journalctl -u NetworkManager -n 50 --no-pager
-
在
https://github.com/SagerNet/sing-box/releases下载符合你系统的正式版本 -
想要Windows最小化运行,新建bat文件,假设名为
Run-sing-box.bat -
如果你下载的包是sing-box-x.x.x-windows-amd64.zip
-
假设sing-box-x.x.x-windows-amd64在 D:\Program Files 文件夹中
-
配置文件config.json和sing-box.exe程序在同一目录
cd /D "D:\Program Files\sing-box-x.x.x-windows-amd64" start /min sing-box.exe run
-
保存后你可以在任意地方双击
Run-sing-box.bat运行sing-box -
另外,可以用"-c"参数指定其他配置文件,典型用法是一个配置对应一个服务端,假设名为
Run-sing-box-a.bat或Run-sing-box-b.bat...cd /D "D:\Program Files\sing-box-x.x.x-windows-amd64" start /min sing-box.exe run -c config-a.json
cd /D "D:\Program Files\sing-box-x.x.x-windows-amd64" start /min sing-box.exe run -c config-b.json
-
保存后在任意地方双击
Run-sing-box-a.bat或Run-sing-box-b.bat运行sing-box
-
其他同上,双击bat后弹出UAC对话框,不用右键
以管理员身份运行@echo off net session >nul 2>&1 if %errorlevel% neq 0 ( powershell -Command "Start-Process '%~f0' -Verb RunAs" exit /b ) cd /D "D:\Program Files\sing-box-x.x.x-windows-amd64" start /min sing-box.exe run -c config-a.json
-
保存后你可以在任意地方双击
Run-sing-box.bat运行sing-box
- 下载符合你架构、OS版本的sing-box
- 系统要求
Android 5.0+ - 使用
LocalSend或类似工具发送配置好的客户端配置文件到你的设备 - 接收配置文件后,点右下角
+图标-->选择Creat Manually创建New Profile-->命名后-->Source选择Import-->点击Import File选择接收到的配置文件,导入到sing-box中使用 - 如果你的设备不支持直接导入
config.json文件,尝试用远程的方式导入HTTP URL文件,具体步骤见在安卓电视上使用sing-box
- 中国区外APP Store下载sing-box vt
- 系统要求
iOS 15.0+ - 使用
LocalSend或类似工具发送配置好的客户端配置文件到你的设备 - 接收配置文件后,创建
New Profile-->命名后-->File类型选择Import-->File Path选择接收到的配置文件,导入到sing-box中使用
- 在Armbian SSH中用
dpkg --print-architecture命令来确认系统/处理器是哪种架构,根据结果来选择sing-box安装包,arm64/armel/armhf等 - 在
https://github.com/SagerNet/sing-box/releases/latest下载armbian安装包,deb格式 - 目前
sing-box 1.10.7、sing-box 1.11.15、sing-box 1.12.x经过验证,跟随sing-box项目添加更新的正式版本
以下方式选一:
-
在路由器 SSH中用
opkg print-architecture命令来确认系统/处理器是哪种架构,根据结果来选择sing-box安装包,a53/a55/a72/a76等 -
推荐使用
nikkinikki-org/OpenWrt-momo项目地址,在线安装路由器需要有代理环境,不然安装包或依赖极有可能下载失败。根据说明用官方项目源或上传发布的ipk文件安装好后:建议仔细阅读项目文档后进行配置。在仅核心模式下,OpenWrt-momo作为sing-box启动管理器,此时OpenWrt-momo中其他选项对sing-box无效,sing-box依靠你上传的config.json来创建路由器系统中tun网卡 A. 在`配置文件`标签页按提示上传完整的`sing-box tun模式`配置, B. 在`插件配置`标签页中,`选择你上传的配置文件`——>勾选`启用` `检查配置文件` `仅核心` ——>保存并应用 C. 不用配置`代理配置`页中的所有选项,你的配置在上传的配置文件中,包括节点、DNS规则、出入站等信息 D. OpenWrt-momo仅核心模式下,根据你上传的配置文件,它完成防火墙规则等工作,让LAN,WLAN接入的所有设备透明无感上网 -
直接安装
sing-box ipk及其依赖用命令运行,并手动配置防火墙,适合有动手能力的用户选择。sing-box 1.10以后auto_redirect还会自动将兼容性规则插入 OpenWrt 的 fw4 表中,即无需额外配置即可在路由器上工作
-
使用方法同
在Android上使用sing-box -
有些安卓电视、安卓盒子不支持从文件浏览器框架中直接导入配置文件,你需要本地建立一个HTTP服务器,sing-box在
新建配置中类型选择远程,URL填写你本地HTTP服务器上的JSON配置文件地址,例如192.168.2.1/config.json,自动更新选择禁用,再点击创建完成配置 -
在本地搭建简易HTTP服务器的方法很多,你的局域网中有NAS、OpenWrt等设备安装软件都可以实现。如果你电脑装有Python,那么一个命令就可以让
执行命令的文件夹的位置变成HTTP服务器的根目录,命令python -m http.server 80,其中80是端口,可以自定义端口,含义是在当前文件夹/目录作为HTTP服务器根目录,生成一个HTTP Web服务器,cmd命令窗口执行:python -m http.server 80假如,执行cmd命令的目录下只有一个
config.json,那么URL就是你本机IP/config.json,在Chrome/Firefox浏览器访问你的本机IP将是这样的Directory listing for / config.json假如,执行cmd命令的目录文件层级是
1.12/config.json,那么URL就是你本机IP/1.12/config.json,在Chrome/Firefox浏览器访问你的本机IP将是这样的Directory listing for / 1.12/ -
这种方法全平台的设备都可以使用,安卓手机/苹果手机/安卓电视/安卓盒子
-
如果其他设备无法访问,记得临时关闭防火墙或配置防火墙对应端口的入站规则允许外部访问
-
遥控器不方便输入字符/操作可使用USB鼠标键盘,或无线USB鼠标键盘套装,它们共用一个收发器只占用一个USB端口