首页
关于我们
友链链接
壁纸下载
更多
统计中心
图床上传
Search
1
[Win DD包] wes7-x86-cn-精简,安装后仅占用1.55G存储空间
25,443 阅读
2
保姆级教程!甲骨文ARM DD成Debian10并升级内核成5.10
6,158 阅读
3
N1教程:Openwrt安装docker webui界面(基于flippy openwrt n1固件)
5,174 阅读
4
ZFAKA小店Docker版之 数据的备份和迁移
4,995 阅读
5
甲骨文oracle ARM 重装 Debian 10
4,671 阅读
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
登录
Search
标签搜索
vps
linux
bench
typecho
empirecms
lnmp
nginx
centos
cloudflare
qbittorrent
ssl
n1
rclone
onedrive
google
storage
speedtest
v2ray
openwrt
301
V+变量
累计撰写
173
篇文章
累计收到
45
条评论
首页
栏目
Linux学堂
网站建设
网络资源
主题插件
固件工具
主机评测
页面
关于我们
友链链接
壁纸下载
统计中心
图床上传
搜索到
2
篇与
的结果
2025-01-14
233boy sing-box 一键安装脚本
233BOY大佬的 sing-box 一键安装脚本 & 管理脚本,自动创建 REALITY 协议;支持 TUIC,Trojan,Hysteria2 等所有常见的协议1 介绍Github 地址:https://github.com/233boy/sing-box特点快速安装无敌好用零学习成本自动化 TLS简化所有流程兼容 sing-box 命令强大的快捷参数支持所有常用协议一键添加 VLESS-REALITY (默认)一键添加 TUIC一键添加 Trojan一键添加 Hysteria2一键添加 Shadowsocks 2022一键添加 VMess-(TCP/HTTP/QUIC)一键添加 VMess-(WS/H2/HTTPUpgrade)-TLS一键添加 VLESS-(WS/H2/HTTPUpgrade)-TLS一键添加 Trojan-(WS/H2/HTTPUpgrade)-TLS一键启用 BBR一键更改伪装网站一键更改 (端口/UUID/密码/域名/路径/加密方式/SNI/等…)还有更多…设计理念设计理念为:高效率,超快速,极易用脚本基于作者的自身使用需求,以 多配置同时运行 为核心设计并且专门优化了,添加、更改、查看、删除、这四项常用功能你只需要一条命令即可完成 添加、更改、查看、删除、等操作例如,添加一个配置仅需不到 1 秒!瞬间完成添加!其他操作亦是如此!脚本的参数非常高效率并且超级易用,请掌握参数的使用请认真往下阅读脚本的参数使用,你就会发现可以如此美妙支持协议列表TUICTrojanHysteria2VMess-WSVMess-TCPVMess-HTTPVMess-QUICShadowsocksVMess-H2-TLSVMess-WS-TLSVLESS-H2-TLSVLESS-WS-TLSTrojan-H2-TLSTrojan-WS-TLSVMess-HTTPUpgrade-TLSVLESS-HTTPUpgrade-TLSTrojan-HTTPUpgrade-TLSVLESS-REALITYVLESS-HTTP2-REALITYSocks机场推荐如果你只是单纯的翻,墙需求,可以购买机场的,不用自己搭建什么的,省心省力。2 安装系统支持:Ubuntu,Debian,CentOS,推荐使用 Ubuntu 22,谨慎使用 CentOS,脚本可能无法正常运行!执行如下命令:bash <(wget -qO- -o- https://github.com/233boy/sing-box/raw/main/install.sh)如果需要指定 sing-box 版本,请在安装命令后面加 -v ver 参数如需查看安装命令帮助,在安装命令后面加 -h 即可安装完成当你执行了上面的安装命令,并且没有错误提示的话,就会提示成功脚本特意弄了一个时间显示,给反馈用来检测安装时间的…理论上,绝大多数情况下 15 秒内会安装完成,条件允许的情况下仅需一秒即可完成安装!超过 15 秒的你应该考虑换 VPS 了,推荐使用 搬瓦工 VPS为方便你快速使用,脚本在安装完成后会自动创建一个 VLESS-REALITY 配置此时你可以复制 URL 到相关软件 (例如 v2rayN) 去测试一下是否正常使用。如果无法正常使用,请尝试使用 sing-box add ss auto auto aes-256-gcm 添加一个 SS 来再测试一下3管理面板安装完成后,输入 sing-box 或者 sb 就能看到管理面板,如下图片所示4sing-box 脚本管理面板提示,如果你不想执行任何功能,直接按 Enter 回车退出即可。为方便输入,脚本自动创建 sb 快捷输入命令用来代替 sing-box (sing-box 太长了都无法使用无法使用一般都是两种情况,一是无法连接上端口,二是客户端内核支持有问题。如果你的 VPS 有外部防火墙,请确保你已经开放了端口测试端口是否能连接上:打开:https://tcp.ping.pe/写上你的 VPS IP 跟端口;内容为 ip:端口,示例:1.1.1.1:443,然后点击 Go;或者直接回车如果显示 successful;证明端口能连接;如果显示 failed;那是无法连接上端口。提醒,你可以使用 sb ip 查看 VPS IP。关闭防火墙,执行如下命令:systemctl stop firewalld; systemctl disable firewalld; ufw disable关闭防火墙之后再测试一下端口是否通,如果不通,你可能还有外部防火墙没关,必须要能连接上端口才能正常使用。如果能连接上端口,那就继续使用 sb add ss auto auto aes-256-gcm 添加一个 SS 看看能不能正常使用,如果正常使用,证明运行没有问题。提醒,默认安装的 sing-box 内核为最新版本如果无法使用,可能是你客户端的内核太旧请尝试使用不同的客户端进行测试;比如 v2rayN;v2rayNG 等请尝试设置 VMessAEAD,某些客户端会有相关选项某些客户端得把 额外id(alterid) 填写为 0;比如垃圾苹果那边的东西请更新你的客户端 sing-box 内核跟服务器端版本保持一致!5 快速入门sing-box 脚本简化了很多流程,例如我们常用的是 (添加、更改、查看、删除) 配置,以下内容让你可以快速掌握使用添加配置:sb add -> 添加配置sb add reality -> 添加一个 VLESS-REALITY 配置sb add reality 443 auto dl.google.com -> 同上,自定义参数:端口使用 443, SNI 使用 dl.google.comsb add hy -> 添加一个 Hysteria2 配置sb add ss -> 添加一个 Shadowsocks 2022 配置sb add tcp -> 添加一个 VMess-TCP 配置备注,使用 sb add 添加配置的时候,仅 *TLS 相关协议配置必须提供域名,其他均可自动化处理。如需查看更多 add 参数用法,请查看下面的 add 说明–更改配置:sb change -> 更改配置sb change reality -> 更改 REALITY 相关配置sb change reality sni 1.1.1.1 -> 更改 REALITY 相关配置的 SNI 为 1.1.1.1, 也可以使用 sb sni reality 1.1.1.1sb change tcp -> 更改 TCP 相关配置sb change tcp port auto -> 更改 TCP 相关配置的端口,端口使用自动创建,也可以使用 sb port tcp auto如需查看更多 change 参数用法,请查看下面的 change 说明–查看配置:sb info -> 查看配置sb info REALITY -> 查看 REALITY 相关配置sb info tcp -> 查看 TCP 相关配置–删除配置:sb del -> 删除配置sb del REALITY -> 删除 REALITY 相关配置sb del tcp -> 删除 TCP 相关配置提醒,谨慎使用 del 参数–非常棒!你已经掌握最常用的功能 (添加、更改、查看、删除)add / change / info / del : 添加、更改、查看、删除对于绝大多数用户来说使用 sb add 添加配置,使用 sb change sb info sb del 来 (更改、查看、删除) 配置即可。提醒,如果只匹配到一个配置时则自动选择该配置,否则将显示匹配到的配置列表,要求选择其中一个配置addadd 是一个用来添加配置的参数备注:可选参数中使用 auto 代替即是让脚本自动化处理相关参数用法:sb add [protocol] [args... | auto]举例:sb addsb add h2sb add wssb add sssb add hysb add tcpsb add tuicsb add reality提醒,当 可选参数 不存在时,即默认为 auto,仅 *TLS 协议配置的域名无法自动处理。例如,sb add tcp 等于 sb add tcp auto auto auto–可选参数详细说明如下:添加一个 VLESS-REALITY 配置可选参数:端口,UUID,SNI用法: sb add reality [port] [uuid] [sni]举例:sb add realitysb add reality 443 auto dl.google.com -> 端口使用 443,SNI 使用 dl.google.com备注,此处的 reality 可以直接写成 r,即是 sb add r 等于 sb add reality–添加一个 VLESS-HTTP2-REALITY 配置可选参数:端口,UUID,SNI用法: sb add rh2 [port] [uuid] [sni]举例:sb add rh2sb add rh2 443 auto dl.google.com -> 端口使用 443,SNI 使用 dl.google.com–添加一个 TUIC 配置可选参数:端口,UUID用法: sb add tuic [port] [uuid]举例:sb add tuicsb add tuic 443 -> 端口使用 443–添加一个 Trojan 配置可选参数:端口,password用法: sb add trojan [port] [password]举例:sb add trojansb add trojan 443 -> 端口使用 443–添加一个 Hysteria2 配置可选参数:端口,password用法: sb add trojan [port] [password]举例:sb add hysb add hy 443 -> 端口使用 443备注,此处的 hy 可以换成 hy2 Hysteria2,但是明显没有必要多输入啊(–添加一个 Shadowsocks 配置可选参数:端口,密码,加密方式用法:sb add ss [port] [password] [method]举例:sb add sssb add ss auto auto 2022-blake3-aes-128-gcm -> 加密方式使用 2022-blake3-aes-128-gcmsb add ss 233 233boy aes-128-gcm -> 端口使用 233,密码使用 233boy.com,加密方式使用 aes-128-gcm–添加一个 Socks 配置可选参数:端口,密码,加密方式用法:sb add socks [port] [username] [password]举例:sb add sockssb add socks 233 233boy 233boy.com -> 端口使用 233,用户名使用 233boy,密码使用 233boy.com–添加一个 VMess-(WS/TCP/HTTP/QUIC) 配置可选参数:端口,UUID,伪装类型用法:sb add [ws | tcp | http | quic] [port] [uuid]举例:sb add ws -> 添加一个 VMess-WS 配置sb add tcp -> 添加一个 VMess-TCP 配置sb add http -> 添加一个 VMess-HTTP 配置sb add quic -> 添加一个 VMess-QUIC 配置sb add tcp 233 auto -> 端口使用 233,UUID 自动创建–添加一个 VMess-(WS/H2/HTTPUpgrade)-TLS 配置可选参数:域名,UUID,路径用法: sb add [ws | h2 | hu] [host] [uuid] [/path]举例:sb add wss -> 添加一个 VMess-WS-TLS 配置sb add h2 -> 添加一个 VMess-H2-TLS 配置sb add hu -> 添加一个 VMess-HTTPUpgrade-TLS 配置sb add wss 233boy.com -> 域名使用 233boy.comsb add h2 233boy.com auto /h2 -> 域名使用 233boy.com,路径使用 /h2sb add hu 233boy.com auto /mypath -> 域名使用 233boy.com,路径使用 /mypath–添加一个 VLESS-(WS/H2/HTTPUpgrade)-TLS 配置可选参数:域名,UUID,路径用法: sb add [vws | vh2 | vhu] [host] [uuid] [/path]举例:sb add vws -> 添加一个 VLESS-WS-TLS 配置sb add vh2 -> 添加一个 VLESS-H2-TLS 配置sb add vhu -> 添加一个 VLESS-HTTPUpgrade-TLS 配置sb add vws 233boy.com -> 域名使用 233boy.comsb add vh2 233boy.com auto /h2 -> 域名使用 233boy.com,路径使用 /h2sb add vhu 233boy.com auto /HTTPUpgrade -> 域名使用 233boy.com,路径使用 /HTTPUpgrade–添加一个 Trojan-(WS/H2/HTTPUpgrade)-TLS 配置可选参数:域名,UUID,路径用法: sb add [tws | th2 | vhu] [host] [uuid] [/path]举例:sb add tws -> 添加一个 Trojan-WS-TLS 配置sb add th2 -> 添加一个 Trojan-H2-TLS 配置sb add vhu -> 添加一个 Trojan-HTTPUpgrade-TLS 配置sb add tws 233boy.com -> 域名使用 233boy.comsb add th2 233boy.com auto /h2 -> 域名使用 233boy.com,路径使用 /h2sb add vhu 233boy.com auto /HTTPUpgrade -> 域名使用 233boy.com,路径使用 /HTTPUpgrade–提醒,sb add [protocol] 的 protocol 也可以换完整的协议名称,名称看上面的支持协议列表举例,sb add Hysteria2 跟 sb add hy 是一样的,但当然还是用简化的名称吧,简单好记。举例,sb add Shadowsocks 跟 sb add ss 是一样的,但当然还是用简化的名称吧,简单好记。再说一遍,当可选参数不存在时默认是自动化处理的 (除了 *TLS 的配置必须提供域名),如非必要,可以省去使用可选参数的。所以,绝大多数情况下,只要加上协议即可,举例: sb add tcp,sb add hy,sb add tuicno-auto-tlsno-auto-tls 参数跟 add 参数用法一样,但禁止自动配置 TLS, 可用于 *TLS 相关协议用法:sb no-auto-tls [protocol] [args... | auto]举例:sb no-auto-tlssb no-auto-tls wsssb no-auto-tls vh2 233boy.comsb no-auto-tls vhu 233boy.com提醒,如果你想要手动配置 TLS,请使用此选项,例如你想要用 NGINX 实现 TLS帮助说明:sing-box 脚本 no-auto-tls 参数帮助说明[name]试想一虾,如果你当前有 233 个 VMess-TCP 配置的时候,如何快速选择其中一个配置呢当你有多个配置时,你可以使用 [name] 关键词用来匹配相关配置,以便于快速执行 更改,查看,删除 等操作推荐使用 端口 或者 域名 来匹配,这样更加容易筛选相关配置。请往下查看会使用到 [name] 的举例提醒,如果只匹配到一个配置时则自动选择该配置,否则将显示匹配到的配置列表,要求选择其中一个配置changechange 是一个用来更改配置的参数用法: sb change [name] [option] [args... | auto]提醒:不同的配置可提供更改的相关选项是不同的[option] 名称及选项说明参数如下:名称 可选参数 用途 autofull […] 更改多个参数 其他id [uuid] 更改 UUID 是host [domain] 更改域名 -port [port] 更改端口 是path [/path] 更改路径 是passwd [passowrd] 更改密码 是key [Private key] [Public key] 更改密钥 是method [method] 更改加密方式 是sni [domain] 更改 serverName 是new […] 更改协议 其他web [domain] 更改伪装网站 -备注,支持 auto 的即是可以将可选参数设置为 auto,以执行自动更改相关参数如果 auto 为其他,可选参数请参考 add 参数用法,full 类似于 sb add 当前协议 [...],new 类似于 sb add [...]举例:sb change -> 更改配置sb change tcp -> 更改一个 tcp 相关的配置sb change tcp port 233 -> 更改一个 TCP 配置的端口为 233sb change tcp port auto -> 更改一个 TCP 配置的端口,并且端口自动创建sb change tuic id auto -> 更改一个 TUIC 配置的 UUID,并且 UUID 自动创建sb change tls host 233boy.com -> 更改一个 tls 配置的域名为 233boy.comsb change tls web example.com -> 更改一个 tls 配置的伪装网站为 example.comsb change reality sni 1.1.1.1 -> 更改一个 reality 配置的 SNI 为 1.1.1.1提醒, [option] 名称也支持直接使用用法:sb [option] [name] [...]举例:sb id -> 更改 UUIDsb port -> 更改 端口sb port tcp 233 -> 更改一个 tcp 配置的端口为 233sb id tcp -> 更改一个 tcp 配置的 UUIDsb id tcp auto -> 更改一个 tcp 配置的 UUID,并且 UUID 自动创建sb host tls 233boy.com -> 更改一个 tls 配置的域名为 233boy.comsb web tls example.com -> 更改一个 tls 配置的伪装网站为 example.comsb sni reality 1.1.1.1 -> 更改一个 reality 配置的 SNI 为 1.1.1.1更改配置的选项较多,就不一个一个举例了,绝大多数情况下使用 sb change 即可infoinfo 是一个用来查看配置的参数用法: sb info [name]举例:sb info -> 查看配置sb info tcp -> 查看一个 tcp 配置sb info tuic -> 查看一个 tuic 配置sb info tls -> 查看一个 tls 配置importimport 是一个用来导入 xray/v2ray 脚本配置的参数,方便统一管理使用: sb import仅限使用本人(233boy)的 xray/v2ray脚本创建的配置可自动导入仅部分配置可实现自动导入,并且已导入的配置,将在原脚本上无法查看或管理urlurl 是一个生成配置的 URL 链接的参数用法: sb url [name]举例:sb url -> 查看配置的 URL 链接sb url tcp -> 查看一个 tcp 配置的 URL 链接sb url hy -> 查看一个 Hysteria2 配置的 URL 链接sb url tls -> 查看一个 tls 配置的 URL 链接qrqr 是一个用来生成配置的二维码的参数用法: sb qr [name]举例:sb qr -> 查看配置的二维码sb qr tcp -> 查看一个 tcp 配置的二维码sb qr hy -> 查看一个 Hysteria2 配置的二维码sb qr tls -> 查看一个 tls 配置的二维码deldel 是一个用来删除配置的参数用法: sb del [name]举例:sb del -> 删除配置sb del tcp -> 删除一个 tcp 配置sb del tuic -> 删除一个 tuic 配置sb del tls -> 删除一个 tls 配置谨慎使用此选项ddelddel 是一个用来删除多个配置的参数用法: sb ddel [name...]举例:sb ddel -> 删除配置sb ddel tcp tuic -> 同时删除一个 tcp,一个 tuic 配置提醒,此处的 [name] 只有匹配到相关配置是唯一时,才会执行删除例如,假设你当前有两个 tcp 配置,使用 sb ddel tcp 是不会删除任何文件的谨慎使用此选项gengen 参数跟 add 参数用法一样,但是 gen 参数只返回 JSON 内容,不会创建配置,仅供测试使用用法:sb gen [protocol] [args... | auto]举例:sb gen sssb gen tcpsb gen hy2sb gen tuicsb gen reality 2333sb gen vws 233boy.combbrbbr 参数是启用 BBR 优化的使用: sb bbrbinbin 参数是直接调用 sing-box 核心运行相关命令,此参数可完全兼容所有 sing-box 命令用法:sb bin [...]举例:sb bin help默认兼容的命令: check | completion | format | generate | geoip | geosite | merge | rule-set | run | tools举例:sb generate uuidfix-config.jsonfix-config.json 参数是用来修复 config.json 文件的使用: sb fix-config.jsonupdateupdate 参数是用来更新的用法:sb update [core | sh | caddy] [ver]举例:sb update -> 更新核心sb update core -> 更新核心sb update core v1.8.13 -> 更新核心,使用 v1.8.13 版本sb update sh -> 更新脚本sb update caddy -> 更新 Caddyloglog 参数是用来查看 sing-box 运行的实时日志使用:sb logstatusstatus 是查看运行状态的参数使用:sb statusstart, stop, restartstart, stop, restart 是管理 sing-box 启动,停止,重启 的参数用法:sb [start | stop | restart] [caddy]举例:sb restart -> 重启 sing-boxsb restart caddy -> 重启 Caddyreinstallreinstall 是重装脚本的参数使用: sb reinstalluninstalluninstall 是卸载脚本的参数使用:sb uninstall帮助其他的一些参数用法,请查看帮助使用:sb help目录sing-box 脚本全部身家保存在 /etc/sing-box脚本:/etc/sing-box/sh核心:/etc/sing-box/bin配置:/etc/sing-box/conf友情提醒如果你添加了 *TLS 协议的配置,请务必设置伪装网站,使用 sb web tls 快速设置伪装网站伪装网站伪装网站是一个反代,指的是打开自己域名的时候显示来自伪装网站的内容备份脚本考虑到可能会有不可描述的事情发生,你可以将 sing-box 脚本备份一下以防止万一。Github 地址:https://github.com/233boy/sing-box你可以 Fork 一份,如果作者一键删库跑路了,你也可以照样正常安装使用
2025年01月14日
4 阅读
0 评论
0 点赞
2024-11-29
sing-box 基础教程:sing-box 的配置方法和使用教程
sing-box 是什么sing-box 是新一代超强通用代理工具,对标 ray core 与 clash,而且它的性能以及支持的协议类型已经超过了 ray core 与 clash。目前支持以下协议:入站:Shadowsocks(including shadowsocks2022) Vmess Trojan Naive Hysteria ShadowTLS Vless Tuic Tun Redirect TProxy Socks HTTP出站:Shadowsocks(including shadowsocks2022) Vmess Trojan Wireguard Hysteria ShadowTLS ShadowsocksR VLESS Tuic Hysteria2 Tor SSH DNS除了命令行客户端以外,还提供了图形界面客户端,图形界面支持 Android、iOS、macOS 以及 Apple tvOS,Windows 暂时不支持,还在施工中 这简直就是魔法上网界的瑞士军刀啊!而且所有的客户端都是免费的,iOS 端也不用再买 Shadowrocket 小火箭等付费 App 了。再看看隔壁 Surge 的价格,你玩我呢??还是 sing-box 香。本文将会手把手教大家如何使用 sing-box 来实现任意机器的全局透明代理。sing-box 客户端下载第一步先解决客户端下载的问题。AndroidAndroid 客户端可以到 Play Store 中去下载,也可以直接到 GitHub Releases 页面下载。如果你是 Android 的 Magisk/KernelSU 玩家,可以选择刷入 box_for_magisk 模块。Apple 平台iOS/macOS/Apple tvOS 用户可以到 App Store 中下载(前提是你得有个美区 ID),也可以使用 Homebrew 直接安装:$ brew install sfm除此之外你也可以直接到 GitHub Releases 页面下载客户端或者命令行版本。WindowsWindows 没有图形界面客户端,官方还正在开发中,不过可以直接使用包管理器 Sccop 或者 Chocolatey 安装命令行版本:# Sccop $ scoop install sing-box # Chocolatey $ choco install sing-box你也可以选择第三方开发者开发的图形界面客户端: GUI.for.SingBox图片描述: 2024-01-19-17-28-IrwTam.png还有一个更加成熟的第三方客户端: Hiddify-NextLinuxLinux 就很简单了,直接到 GitHub Releases 页面下载命令行版本即可。sing-box 配置解析sing-box 的核心就是它的配置,所有的配置都在一个 JSON 文件里,每个配置参数的含义可参考 sing-box 官方文档。但是为了能够快速使用起来,我们需要一个示例模板。没问题,我这就给你一个比较完美的透明代理模板:sing-box 透明代理示例模板下面我来给大家解析一下里面的配置,首先来看 DNS 部分。如果你嫌下面的解析太长不看,那就直接使用我的示例模板配置好了。DNS 配置sing-box 对 DNS 的处理比 Clash 强太多了,支持各种分流规则,结构如下:{ "dns": { "servers": [], "rules": [], "final": "", "strategy": "", "disable_cache": false, "disable_expire": false, "independent_cache": false, "reverse_mapping": false, "fakeip": {} } }其中 servers 定义了 DNS 服务器,具体参数含义我就不解释了,自己看官方文档。我给出的 DNS 服务器配置是:{ "dns": { "servers": [ { "tag": "dns_proxy", "address": "https://1.1.1.1/dns-query", "address_resolver": "dns_resolver", "strategy": "ipv4_only", "detour": "select" }, { "tag": "dns_direct", "address": "h3://dns.alidns.com/dns-query", "address_resolver": "dns_resolver", "strategy": "ipv4_only", "detour": "direct" }, { "tag": "dns_block", "address": "rcode://refused" }, { "tag": "dns_resolver", "address": "223.5.5.5", "strategy": "ipv4_only", "detour": "direct" } ] } }这里定义了 3 个 DNS 服务器,当你发起一个域名解析请求时,这些服务器会被用来查找对应的 IP 地址。同时还定义了一个 RCode 协议用来屏蔽请求。rules 定义了 DNS 规则,这些规则用于定义哪些域名应该使用哪个 DNS 服务器解析。它可以让你根据域名的特定模式选择不同的 DNS 服务器。DNS 规则如下:{ "dns": { "rules": [ { "outbound": "any", "server": "dns_resolver" // 注释:对于任何出站连接(不管是直接连接还是通过代理),使用 "dns_resolver" 服务器进行 DNS 解析(这一句主要用来解析代理节点本身的 IP 地址)。 }, { "clash_mode": "direct", "server": "dns_direct" // 注释:在直连模式(不经过代理)下,使用 "dns_direct" 服务器进行 DNS 解析。 }, { "clash_mode": "global", "server": "dns_proxy" // 注释:在全局代理模式下,使用 "dns_proxy" 服务器进行 DNS 解析。 }, { "process_name": [ "TencentMeeting", "NemoDesktop", "ToDesk", "ToDesk_Service", "WeChat", "Tailscale", "wireguard-go", "Tunnelblick", "softwareupdated", "kubectl" ], "server": "dns_direct" // 注释:当特定的进程(如 TencentMeeting、WeChat 等)发起 DNS 请求时,使用 "dns_direct" 服务器进行直连 DNS 解析。 }, { "domain_suffix": [ "icloudnative.io", "fuckcloudnative.io", "sealos.io", "cdn.jsdelivr.net" ], "server": "dns_direct" // 注释:对于特定后缀的域名(如 icloudnative.io 等),使用 "dns_direct" 服务器进行直连 DNS 解析。 }, { "process_name": ["DropboxMacUpdate", "Dropbox"], "server": "dns_proxy" // 注释:当 Dropbox 相关进程发起 DNS 请求时,使用 "dns_proxy" 服务器通过代理进行 DNS 解析。 }, { "package_name": [ "com.google.android.youtube", "com.android.vending", "org.telegram.messenger", "org.telegram.plus" ], "server": "dns_proxy" // 注释:对于特定的 Android 应用包名(如 YouTube、Telegram 等),使用 "dns_proxy" 服务器通过代理进行 DNS 解析。 }, { "rule_set": "geosite-geolocation-!cn", "server": "dns_proxy" // 注释:对于 geosite 数据库中定义的非中国地区的地理位置相关的域名,使用 "dns_proxy" 服务器通过代理进行 DNS 解析。 }, { "rule_set": "Global", "server": "dns_proxy" // 注释:对于定义在 "Global" 规则集中的域名,使用 "dns_proxy" 服务器通过代理进行 DNS 解析。 }, { "rule_set": [ "YouTube", "Telegram", "Netflix", "geoip-google", "geoip-telegram", "geoip-twitter", "geoip-netflix" ], "server": "dns_proxy" // 注释:对于特定的服务和地理位置相关的域名(如 YouTube、Netflix、谷歌、Telegram 相关的域名),使用 "dns_proxy" 服务器通过代理进行 DNS 解析。 } ], "final": "dns_direct" // 注释:如果上述规则都不适用,则默认使用 "dns_direct" 服务器进行直连 DNS 解析。 } }入站配置接下来比较重要的就是入站规则了,入站(Inbound)在网络领域,特别是在代理和网络路由配置中,通常指的是进入某个系统或网络的数据流。在 sing-box 中,入站配置定义了如何处理进入代理服务器的数据。入站配置示例如下:{ "inbounds": [ { "type": "tun", "inet4_address": "198.18.0.1/16", "auto_route": true, "exclude_package": [ "cmb.pb", "cn.gov.pbc.dcep", "com.MobileTicket", "com.adguard.android", "com.ainemo.dragoon", "com.alibaba.android.rimet", "com.alicloud.databox", "com.amazing.cloudisk.tv", "com.autonavi.minimap", "com.bilibili.app.in", "com.bishua666.luxxx1", "com.cainiao.wireless", "com.chebada", "com.chinamworld.main", "com.cmbchina.ccd.pluto.cmbActivity", "com.coolapk.market", "com.ctrip.ct", "com.dianping.v1", "com.douban.frodo", "com.eg.android.AlipayGphone", "com.farplace.qingzhuo", "com.hanweb.android.zhejiang.activity", "com.leoao.fitness", "com.lucinhu.bili_you", "com.mikrotik.android.tikapp", "com.moji.mjweather", "com.motorola.cn.calendar", "com.motorola.cn.lrhealth", "com.netease.cloudmusic", "com.sankuai.meituan", "com.sina.weibo", "com.smartisan.notes", "com.sohu.inputmethod.sogou.moto", "com.sonelli.juicessh", "com.ss.android.article.news", "com.ss.android.lark", "com.ss.android.ugc.aweme", "com.tailscale.ipn", "com.taobao.idlefish", "com.taobao.taobao", "com.tencent.mm", "com.tencent.mp", "com.tencent.soter.soterserver", "com.tencent.wemeet.app", "com.tencent.weread", "com.tencent.wework", "com.ttxapps.wifiadb", "com.unionpay", "com.unnoo.quan", "com.wireguard.android", "com.xingin.xhs", "com.xunmeng.pinduoduo", "com.zui.zhealthy", "ctrip.android.view", "io.kubenav.kubenav", "org.geekbang.geekTime", "tv.danmaku.bili" ], "stack": "mixed", "sniff": true }, { "type": "socks", "tag": "socks-in", "listen": "::", "listen_port": 5353 } ] }下面是对每个字段的详细注释:第一个入站连接的配置:type: "tun" 表示这是一个 tun 虚拟网络接口的配置。 inet4_address: "198.18.0.1/16" 设定了虚拟网络接口的 IPv4 地址和子网掩码。 auto_route: true 表示将自动处理路由,确保数据包正确传输。 exclude_package: 这是一个数组,包含了不通过此虚拟网络接口处理的 Android 应用程序包名列表。列出的 Android 应用程序将使用常规网络接口而不是虚拟接口。 stack: "mixed" 表示混合 system TCP 栈与 gvisor UDP 栈。 sniff: true 表示启用流量嗅探功能,以便自动检测和处理传入的数据流类型。第二个入站连接的配置:type: "socks" 表示这是一个 SOCKS 代理配置。 tag: "socks-in" 为这个入站连接定义了一个标签,方便在其它配置中引用。 listen: "::" 表示监听所有 IPv6 地址。如果需要监听所有 IPv4 地址,可以使用 "0.0.0.0"。 listen_port: 5353 定义了 SOCKS 代理监听的端口号。 其中 tun 接口是核心部分,我们将利用 tun 接口来实现全局透明代理。出站配置出站(Outbound)是指从本地网络或设备发出,向外部网络、服务或互联网发送的数据流量。示例出站配置如下:{ "outbounds": [ { "type": "selector", // 类型为选择器,用于在多个出站中选择一个 "tag": "select", // 标签名为 "select" "outbounds": [ "trojan-out" // 可选择的出站列表,这里只有 "trojan-out" ], "default": "trojan-out" // 默认选择的出站为 "trojan-out" }, { "type": "selector", // 同样是选择器类型 "tag": "openai", // 标签名为 "openai" "outbounds": [ "trojan-out" // 可选择的出站仍然是 "trojan-out" ], "default": "trojan-out" // 默认选择的出站同样是 "trojan-out" }, { "type": "selector", // 选择器类型 "tag": "tiktok", // 标签名为 "tiktok" "outbounds": [ "trojan-out" // 可选择的出站是 "trojan-out" ], "default": "trojan-out" // 默认选择的出站为 "trojan-out" }, { "type": "trojan", // 类型为 Trojan "tag": "trojan-out", // 标签名为 "trojan-out" "server": "xxxxxxxx", // Trojan 服务器地址 "server_port": 9443, // Trojan 服务器端口 "password": "xxxxxxxx", // Trojan 连接密码 "tls": { "enabled": true, // 启用 TLS 加密 "server_name": "xxxxxxxx", // TLS 服务器名称 "insecure": true, // 不验证 TLS 证书,用于自签名证书 "utls": { "fingerprint": "chrome" // 使用 Chrome 的 TLS 指纹 } }, "multiplex": { "protocol": "h2mux", // 使用 h2mux 多路复用协议 "max_connections": 4, // 最大连接数为 4 "min_streams": 4 // 每个连接的最小流数为 4 }, "transport": { "type": "grpc", // 传输协议为 gRPC "service_name": "TunService" // gRPC 服务名称 } }, { "type": "direct", // 直连类型,不通过代理直接访问 "tag": "direct" // 标签名为 "direct" }, { "type": "block", // 阻止类型,用于拦截流量 "tag": "block" // 标签名为 "block" }, { "type": "dns", // DNS 类型,用于 DNS 查询 "tag": "dns-out" // 标签名为 "dns-out" } ] }这个配置定义了不同类型的出站连接方式,包括选择器、Trojan、直连、阻止和 DNS 类型。每种类型都通过标签进行标识,便于在后续的路由规则中引用。路由配置路由部分才是 sing-box 的核心配置,这个部分定义了一系列规则和参数,用于决定如何处理不同的网络请求。通过这些规则和参数,sing-box 可以非常灵活地处理复杂的路由需求,包括基于地理位置、IP 地址、端口号、域名等多种条件的流量分流。配置结构如下:{ "route": { "rules": [], "rule_set": [], "final": "direct", // "final" 字段定义了默认的路由行为。这里设置为 "direct",意味着如果没有匹配任何规则,流量将直接(不经代理)发送。 "auto_detect_interface": true // 表示自动检测网络接口。这有助于自动适应网络变化,确保路由正确。 } }其中的核心配置:路由规则 (rules): 这些规则定义了如何根据不同的条件将流量定向到不同的出站连接。每个规则可以包括多个条件,如域名、IP 地址、端口号、网络协议等。规则集 (rule_set): 从 sing-box 1.8.0 版本开始,规则可以组合成规则集,这使得配置更加灵活和模块化。路由规则以下是我给出的路由规则示例:{ "route": { "rules": [ { "protocol": "dns", // 使用DNS协议的流量 "outbound": "dns-out" // 将通过'dns-out'出口转发 }, { "clash_mode": "direct", // Clash模式为直连 "outbound": "direct" // 将通过'direct'出口直接连接 }, { "clash_mode": "global", // Clash模式为全局 "outbound": "select" // 将通过'select'出口选择转发 }, { "domain_suffix": [ // 特定后缀的域名 "icloudnative.io", "fuckcloudnative.io", "sealos.io", "cdn.jsdelivr.net" ], "outbound": "direct" // 将通过'direct'出口直接连接 }, { "process_name": [ // 特定进程名称 "TencentMeeting", "NemoDesktop", ... ], "outbound": "direct" // 将通过'direct'出口直接连接 }, { "rule_set": [ // 特定的规则集 "WeChat", "Bilibili" ], "outbound": "direct" // 将通过'direct'出口直接连接 }, { "protocol": "quic", // 使用QUIC协议的流量 "outbound": "block" // 将被阻止 }, { "inbound": "socks-in", // 来自'socks-in'入口的流量 "outbound": "select" // 将通过'select'出口选择转发 }, { "rule_set": "OpenAI", // OpenAI规则集 "outbound": "openai" // 将通过'openai'出口转发 }, { "domain_suffix": [ // OpenAI相关的域名后缀 "openai.com", "oaistatic.com", "oaiusercontent.com" ], "outbound": "openai" // 将通过'openai'出口转发 }, { "package_name": "com.openai.chatgpt", // OpenAI ChatGPT应用包名 "outbound": "openai" // 将通过'openai'出口转发 }, { "rule_set": "TikTok", // TikTok规则集 "outbound": "tiktok" // 将通过'tiktok'出口转发 }, { "package_name": "com.zhiliaoapp.musically", // TikTok应用包名 "outbound": "tiktok" // 将通过'tiktok'出口转发 }, { "domain_suffix": [ // 特定的域名后缀 "depay.one", "orbstack.dev" ], "outbound": "select" // 将通过'select'出口选择转发 }, { "process_name": [ // 特定的进程名称 "DropboxMacUpdate", "Dropbox" ], "outbound": "select" // 将通过'select'出口选择转发 }, { "package_name": [ // 特定应用包名 "com.google.android.youtube", ... ], "outbound": "select" // 将通过'select'出口选择转发 }, { "domain": "accounts.google.com", // 特定的域名 "domain_suffix": [ // 特定的域名后缀 "sourceforge.net", "fhjasokiwq.com" ], "outbound": "select" // 将通过'select'出口选择转发 }, { "domain_suffix": "cloud.sealos.io", // 特定的域名后缀 "outbound": "direct" // 将通过'direct'出口直接连接 }, { "type": "logical", // 逻辑类型规则 "mode": "and", // 使用'and'模式 "rules": [ // 组合规则 { "rule_set": "geosite-geolocation-!cn" }, { "rule_set": "geoip-cn", "invert": true } ], "outbound": "select" // 将通过'select'出口选择转发 }, { "rule_set": "Global", // Global规则集 "outbound": "select" // 将通过'select'出口选择转发 }, { "rule_set": "geoip-cn", // 中国地理位置IP规则集 "outbound": "direct" // 将通过'direct'出口直接连接 }, { "ip_is_private": true, // 私有IP地址 "outbound": "direct" // 将通过'direct'出口直接连接 }, { "rule_set": [ // 特定的规则集 "YouTube", "Telegram", "Netflix", "geoip-google", "geoip-telegram", "geoip-twitter", "geoip-netflix" ], "outbound": "select" // 将通过'select'出口选择转发 } ] } }这个配置定义了不同类型的流量(如基于协议、域名后缀、应用包名、进程名称等)如何被路由。每条规则都指定了一种流量类型和相应的“出口”,即流量应该如何被处理或转发。这种灵活的路由配置可以非常精确地控制网络流量。规则集以下是我给出的规则集示例:{ "route": { "rule_set": [ { "type": "remote", "tag": "geosite-geolocation-!cn", "format": "binary", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs", "download_detour": "direct" }, { "type": "remote", "tag": "geoip-cn", "format": "binary", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_ip_rule_set/geoip-cn.srs", "download_detour": "direct" }, { "type": "remote", "tag": "geoip-google", "format": "binary", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_ip_rule_set/geoip-google.srs", "download_detour": "direct" }, { "type": "remote", "tag": "geoip-telegram", "format": "binary", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_ip_rule_set/geoip-telegram.srs", "download_detour": "direct" }, { "type": "remote", "tag": "geoip-twitter", "format": "binary", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_ip_rule_set/geoip-twitter.srs", "download_detour": "direct" }, { "type": "remote", "tag": "geoip-netflix", "format": "binary", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/CHIZI-0618/v2ray-rules-dat/release/singbox_ip_rule_set/geoip-netflix.srs", "download_detour": "direct" }, { "type": "remote", "tag": "Global", "format": "source", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/yangchuansheng/sing-box-geosite/main/rule/Global.json", "download_detour": "direct" }, { "type": "remote", "tag": "YouTube", "format": "source", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/yangchuansheng/sing-box-geosite/main/rule/YouTube.json", "download_detour": "direct" }, { "type": "remote", "tag": "OpenAI", "format": "source", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/yangchuansheng/sing-box-geosite/main/rule/OpenAI.json", "download_detour": "direct" }, { "type": "remote", "tag": "TikTok", "format": "source", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/yangchuansheng/sing-box-geosite/main/rule/TikTok.json", "download_detour": "direct" }, { "type": "remote", "tag": "Telegram", "format": "source", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/yangchuansheng/sing-box-geosite/main/rule/Telegram.json", "download_detour": "direct" }, { "type": "remote", "tag": "Netflix", "format": "source", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/yangchuansheng/sing-box-geosite/main/rule/Netflix.json", "download_detour": "direct" }, { "type": "remote", "tag": "WeChat", "format": "source", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/yangchuansheng/sing-box-geosite/main/rule/WeChat.json", "download_detour": "direct" }, { "type": "remote", "tag": "Bilibili", "format": "source", "url": "https://mirror.ghproxy.com/https://raw.githubusercontent.com/yangchuansheng/sing-box-geosite/main/rule/Bilibili.json", "download_detour": "direct" } ] } }这里有两种不同类型的规则集,一种是 binary,另外一种是 source。binary 规则集一般都是利用 GEOSITE 或者 GEOIP 直接编译好的二进制规则,它们被直接嵌入到应用程序中。而 source 规则集就和 Clash 的 ruleset 比较类似,它是一个文本文件,而不是二进制。目前已经有相关项目可以自动将网络上的 Clash Ruleset 规则自动转换为 sing-box 的 source 规则集,感兴趣的同学可以参考这个项目: sing-box-geositeClash API最后的实验性配置用来开启 Clash API。没错,sing-box 是兼容 Clash API 滴!那么我们就可以使用 Clash 的 dashboard 来管理 sing-box 了,直接用这个项目好了: metacubexd示例配置如下:{ "experimental": { "cache_file": { "enabled": true // 启用缓存文件功能。当此项设置为true时,启用 DNS 查询的缓存,以便加快后续相同查询的响应速度。 }, "clash_api": { "external_controller": "0.0.0.0:9090", // 定义 Clash API 的外部控制器地址。"0.0.0.0:9090" 表示在本机的9090端口上监听外部的连接请求。 "external_ui": "metacubexd", // 指定外部用户界面(UI)的名称。这里的 "metacubexd" 是一个自定义 UI 的名称。 "external_ui_download_url": "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip", // 提供外部 UI 的下载 URL。这个 URL 是从 GitHub 上下载 "metacubexd" UI 的压缩包。 "external_ui_download_detour": "select", // 定义下载外部 UI 时使用的转发策略。"select" 表示将通过'select'出口选择转发 "default_mode": "rule" // 设置 Clash API 的默认模式。"rule" 模式意味着流量将根据用户定义的规则进行路由。 } } }最终启动 sing-box 之后就可以通过 Clash dashboard 来查看和管理流量啦:注意: 图形界面客户端会自动把外部控制器相关的配置给屏蔽掉,如果你想使用 Dashboard,只能使用命令行来启动 sing-box。订阅转换我想大部分小伙伴使用的还是订阅链接,不可能傻乎乎的自己写配置和规则。但是目前大部分ji场都不提供 sing-box 的配置格式,仅有少量ji场提供支持,其他ji场可使用下面这个项目将常见订阅转换为 sing-box 订阅格式: sing-box-subscribe你可以将这个项目部署到自己的 Vercel 中,然后使用以下的链接格式来将常见订阅转换为 sing-box 订阅格式:<URL>/url=<subscription_url>/&file=<sing-box_template_url> <URL>:这是你的 sing-box-subscribe 访问链接; <subscription_url>:这是你的订阅链接; <sing-box_template_url>:这是你的 sing-box 模板配置链接,你可以直接使用 我的模板。例如:https://sing-box-subscribe.vercel.app/config/url=https://xxxxxx?clash=1/&file=https://gist.githubusercontent.com/yangchuansheng/5182974442015feeeeb058de543a00fd/raw/45b11ff08188af021da98e7174923d719dc42dd9/gistfile1.txt如果你有多个订阅链接,需要先将订阅链接合并为一个链接,然后再进行转换,具体看参考 sing-box-subscribe 的官方文档。更多配置示例更多的配置示例可以参考这个项目: sing-box-examples这个项目针对每一个代理协议都提供了详细的配置示例,还有很多的骚操作,比如 将 Cloudflare 的 Warp 节点信息直接提取出来加到 sing-box 出站配置中去,妙啊!透明网关如果你想让局域网中的所有机器都能够根据规则智能分流,那就在局域网中找一台机器作为透明网关,在这台机器上运行一个 sing-box 就行了,不需要像 Clash 一样写什么乱七八糟的 iptables 规则,直接一个配置文件就行了,非常简单。通常我们使用软路由来完成这个任务,如果你不想使用软路由,那随便找一台机器就行了,当然最好还是使用 Linux 比较靠谱。在网关上运行 sing-box 之后,其他机器只需要将网关指向这台机器,便可以无痛开启魔法智能分流了。注意: 其他机器的 DNS 必须是公网 DNS,不能使用内网 DNS!你的 DNS 可以指向任意的公网 DNS,反正只要是公网就行,比如:114.114.114.114,因为 sing-box 会劫持局域网中的所有 DNS 请求。当然,如果你不想让 sing-box 劫持局域网中的所有 DNS 请求,可以使用如下的方案:首先在入站配置中添加一个监听端口:{ "inbounds": [ { "type": "direct", "tag": "dns-in", "listen": "0.0.0.0", "listen_port": 53 } ] }然后在路由规则中将 DNS 的规则改成如下的配置: { "route": { "rules": [ { "inbound": "dns-in", "outbound": "dns-out" } ] } }这样就保证了只有从 53 端口进来的流量才会进入 DNS 解析。重启生效后,将其他机器的网关和 DNS 均指向这台机器就可以了。如果你使用的是 DHCP,只需要在 DHCP 服务器中将 DHCP 分配的网关和 DNS 改成 sing-box 所在的机器 IP 即可。
2024年11月29日
132 阅读
1 评论
0 点赞