Warm through-proxy tests
Node ranking measures exit-side RTT on a warm path — what browsing feels like, not a fake TCP ping to server:port.
Native GUI, CLI, and AsusWRT-Merlin — one Rust stack from your laptop to the whole LAN.
Through-proxy latency, real routing, and a Merlin plugin that shares the same engine as the desktop client.
Node ranking measures exit-side RTT on a warm path — what browsing feels like, not a fake TCP ping to server:port.
Domain, GeoIP (built-in CN CIDRs), and CIDR rules. System proxy for typical apps; TUN when something ignores the OS proxy. How GeoIP works →
Patched rustls (craftls) with REALITY and browser-like ClientHello — built for hostile networks.
Clash, V2Ray / VMess, SingBox URLs. Auto-detect, update, dedupe, batch test.
Native GPUI desktop app and a lean CLI for headless or scripted setups.
Official AsusWRT-Merlin package: one musl binary, Web UI, iptables/DNS, hot-reload node switch.
geoip:CN is powered by a curated in-binary CIDR list — small enough for Merlin flash, accurate enough for domestic direct.
Not MaxMind. Sockrocket ships a lightweight in-memory GeoIP database built from ~7456 aggregated China IPv4 CIDRs (from 17mon/china_ip_list; refresh via scripts/update-china-cidrs.sh), plus private ranges. Rules like geoip: CN → direct hit this table.
domain / domain-suffix / domain-keywordip-cidr, geoip, dst-port (priority + list order)final catch-all → proxy or directdirect · proxy · rejectOut of the box: private/LAN CIDRs, common CN domain suffixes & keywords, then the CN IP list, then match-all → proxy. Your custom rules prepend this set (first match wins).
Same CIDR list can load into a kernel ipset for hardware-NAT direct (cn_ipset_direct). TUN Fake-IP keeps international names on the domain path; domestic answers stay real IPs so geoip/direct still works.
Why not MaxMind GeoLite? A Country MMDB is typically several megabytes — painful on Merlin JFFS next to a ~10 MB musl binary, plus license/update friction. The curated CN list keeps the router package lean; gaps are covered by domain rules and the TUN domestic-IP table.
Same YAML on desktop CLI and Merlin (rules: prepend the built-in set):
What works in the GUI works on Merlin — transparent proxy for every device on your LAN.
Including QUIC next-gen transports and Reality obfuscation.
GUI and Merlin share subscriptions, nodes, and routing rules. CLI uses the same config.yaml shape. Defaults: SOCKS5 :1080 · HTTP :1087.
Sockrocket.exe. Linux: extract the tarball and run install.sh (or launch ./sockrocket).rules:). See Routing & GeoIP.Language: status-bar cycle EN → VI → 中文 (saved). Do not paste subscription URLs into public chats.
config.yaml, then edit listen ports, subscriptions, and rules.subscriptions: set name, url, format: auto. Nodes fill in on start (or when you refresh).active_node: 0 selects the first node; null stays direct.rule_type / pattern / target as GUI and Merlin. Custom rules prepend the built-in China-direct set.Full field reference: docs/configuration.md · example: config.yaml.example.
sockrocket-merlin-<platform>.tar.gz. Match uname -m / SoC: hnd_v8 (aarch64 BCM490x) vs hnd (armv7 BCM675x) is the usual mistake..tar.gz → Install. Wrong platform .valid → reject or Exec format error.http://<router-lan-ip>/ext/sockrocket/sockrocket.asp./jffs/addons/sockrocket/config.yaml (listen 0.0.0.0 for LAN). Service: sockrocket.sh start|stop|restart|status|update-subs.Archive root is always sockrocket/ (koolcenter module name). LAN devices need no client — traffic hits iptables/TUN on the router, then GeoIP/domain rules. Full guide: docs/merlin.md.
Release notes on Telegram; questions on GitHub Discussions. Do not post subscription URLs, tokens, or personal identifiers.
Prebuilt GUI, CLI, and Merlin packages on GitHub Releases.