sing-box Review: A Universal Proxy Platform in Go, Worth Your Time?
sing-box is a universal proxy platform written in Go, supporting Shadowsocks, VMess, Trojan, and more. This review covers installation, configuration, and real-world usage of this 33k+ Star open-source tool.
[广告位: article-top] 请在 .env 中配置至少一个广告平台
sing-box Review: A Universal Proxy Platform in Go, Worth Your Time?
I’ll be honest — when I first heard about sing-box, my immediate reaction was, “Another proxy tool?” I mean, we’ve already got Clash, V2Ray, Shadowrocket, and a dozen others. But after actually using it for a few days, I have to admit: this thing has some real substance.
Project Background
sing-box comes from the SagerNet team, written in Go. The motivation behind it is pretty practical — existing proxy tools are either bloated, a pain to configure, or slow to adopt new protocols. sing-box aims to be the “universal” solution: one binary, all major proxy protocols covered.
That 33k+ star count? It means a lot of people buy into this vision.
Core Features
1. Protocol Buffet
The protocol support is insane: Shadowsocks, VMess, VLESS, Trojan, Hysteria, WireGuard, Tuic… basically if you’ve heard of it, sing-box speaks it. What I love most is having old and new protocols unified under one config. No more juggling multiple clients.
Config example:
{
"outbounds": [
{
"type": "shadowsocks",
"server": "your-server.com",
"server_port": 8388,
"method": "aes-256-gcm",
"password": "your-password"
}
]
}
2. Flexible Routing
The routing system is among the most granular I’ve used. Route by domain, IP, GEOIP, process name — even auto-switch nodes based on network type (WiFi vs cellular). A common setup for me: domestic sites go direct, international through proxy, specific apps to specific nodes. sing-box handles this effortlessly.
{
"route": {
"rules": [
{ "geosite": "cn", "outbound": "direct" },
{ "geosite": "geolocation-!cn", "outbound": "proxy" }
]
}
}
3. Cross-Platform, One Binary
Windows, macOS, Linux, Android, iOS — all supported. The best part? Server and client use the same program. Learn one config syntax and you’re done. I run the server on my VPS and the client on my laptop, and the config barely needs changing.
Quick Start
Installation is dead simple, one command:
# macOS / Linux
bash <(curl -fsSL https://sing-box.app/deb-install.sh)
# Or use brew
brew install sing-box
Fire it up:
sing-box run -c config.json
The config is JSON-based. It looks intimidating at first, but the official docs are decent enough. Copy a few examples, tweak them, and you’re good to go.
Pros and Cons
Pros:
- One program for all protocols — no more software clutter
- Written in Go, so memory usage is way lower than Electron-based clients
- Active development, new protocols get supported quickly
- Routing rules are incredibly powerful for precise traffic splitting
Cons (gotta be real here):
- JSON configs aren’t beginner-friendly. One missing comma and it won’t start, and error messages can be cryptic
- The GUI clients (SFA, SFM) are less capable than the CLI version — some advanced settings still require manual config editing
- Documentation is comprehensive but poorly organized; finding stuff takes time
- Ecosystem isn’t as mature as Clash’s; many third-party tools haven’t adapted to sing-box’s config format
Who’s It For and Final Thoughts
If you’re a tinkerer who loves tweaking configs, sing-box is absolutely worth trying. The flexibility and performance are genuinely impressive, especially when you’re managing multiple protocols — one sing-box can replace three or four tools.
But if you just want “one-click, don’t make me think” connectivity, you’re probably better off with something like Clash Verge or Surge that has a polished GUI. sing-box is more of a power user’s tool.
My advice? Install the CLI version and take it for a spin. If it clicks, dive deeper into the routing rules. It’s free and open source, so what have you got to lose?
[广告位: article-bottom] 请在 .env 中配置至少一个广告平台