feat: multi-Tor round-robin via tor_nodes config
New top-level tor_nodes list distributes traffic across multiple Tor SOCKS proxies. First hop is replaced at connection time by round-robin selection; health tests also rotate across all nodes. FirstHopPools are created for each node when pool_size > 0. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,16 @@ listeners:
|
||||
- socks5://127.0.0.1:9050 # Tor only
|
||||
```
|
||||
|
||||
## Multi-Tor Round-Robin (config)
|
||||
|
||||
```yaml
|
||||
tor_nodes: # overrides first hop in all listeners
|
||||
- socks5://10.200.1.1:9050
|
||||
- socks5://10.200.1.254:9050
|
||||
- socks5://10.200.1.250:9050
|
||||
- socks5://10.200.1.13:9050
|
||||
```
|
||||
|
||||
## Performance Tuning (config)
|
||||
|
||||
```yaml
|
||||
|
||||
@@ -82,6 +82,36 @@ proxy_pool:
|
||||
state_file: "" # empty = ~/.cache/s5p/pool.json
|
||||
```
|
||||
|
||||
## Multi-Tor Round-Robin
|
||||
|
||||
Distribute traffic across multiple Tor nodes instead of funneling everything
|
||||
through a single one. When `tor_nodes` is configured, the first hop in each
|
||||
listener's chain is replaced at connection time by round-robin selection.
|
||||
Health tests also rotate across all nodes.
|
||||
|
||||
```yaml
|
||||
tor_nodes:
|
||||
- socks5://10.200.1.1:9050
|
||||
- socks5://10.200.1.254:9050
|
||||
- socks5://10.200.1.250:9050
|
||||
- socks5://10.200.1.13:9050
|
||||
```
|
||||
|
||||
When `tor_nodes` is absent, listeners use their configured first hop as before.
|
||||
When present, `tor_nodes` overrides the first hop everywhere.
|
||||
|
||||
If `pool_size > 0`, pre-warmed connection pools are created for all nodes
|
||||
automatically.
|
||||
|
||||
### API
|
||||
|
||||
`tor_nodes` appears in both `/config` and `/status` responses:
|
||||
|
||||
```bash
|
||||
curl -s http://127.0.0.1:1090/config | jq '.tor_nodes'
|
||||
curl -s http://127.0.0.1:1090/status | jq '.tor_nodes'
|
||||
```
|
||||
|
||||
## Multi-Listener Mode
|
||||
|
||||
Run multiple listeners on different ports, each with a different number
|
||||
|
||||
Reference in New Issue
Block a user