Tor 的控制端口
Tor 守护进程的控制端口:只有在 torrc 中显式配置 ControlPort 9051 才会监听(默认不开启),用于程序化控制 Tor——查询网络状态、订阅事件、发出换链路信号。它与 SOCKS 代理口 9050 用途完全不同:9050 转发流量,9051 管理 Tor 进程本身。
基本信息
| 服务 | Tor daemon(ControlPort) |
|---|---|
| 协议 | TCP(Tor 控制协议,文本命令) |
| 默认端口 | 9051(SOCKS 代理为 9050) |
| 认证方式 | CookieAuthentication 或密码 |
| 暴露面 | 仅本机回环地址 |
典型使用场景
- 自动化脚本在出口被封禁时发 NEWNYM 更换链路
- 用 GETINFO 查询 Tor 版本、链路节点与流量计数
- 应用把 Tor 当本地代理时的控制面集成
- 用 SETEVENTS 订阅建链事件,观察链路构建过程
- 安全核查:确认本机 Tor 只监听回环地址
配置与手工验证
配置与手工验证
# torrc 片段:
# ControlPort 9051
# CookieAuthentication 1
printf 'AUTHENTICATE\r\nGETINFO version\r\nQUIT\r\n' | nc 127.0.0.1 9051
ss -lntp | grep -E '9050|9051' # 确认只在回环监听排障与核对
| 检查项 | 做法 | 异常表现 |
|---|---|---|
| 监听地址 | ss -lntp | grep 9051 | 监听在 0.0.0.0:控制口已暴露到网络 |
| 认证状态 | 不带认证直接发命令 | 命令被执行说明认证没开;返回需认证才是正常 |
| Cookie 文件 | CookieAuthentication 与文件权限 | 权限过宽:同机任意用户都能接管控制口 |
| 换链路 | 发 NEWNYM 后查出口地址 | 无变化:目标站点仍按旧身份识别 |
ControlPort 与 SocksPort 常被混淆:9050 是浏览器和应用使用的代理入口,9051 是运维与脚本使用的管理入口。控制口不转发流量,但能对 Tor 的行为做实质干预,因此只监听回环并开启认证是底线配置。
控制口能做什么
通过 GETINFO 可以读到 Tor 版本、当前链路节点与流量计数;SIGNAL NEWNYM 要求 Tor 尽快更换出口节点;SETEVENTS 还能订阅建链、告警等事件流。这些能力对自动化很有价值,同时也意味着控制口一旦被他人接管,Tor 的全部行为都可被观察与干预。
Cookie 认证是官方推荐方式:Tor 启动时生成随机 Cookie 文件,客户端读取后完成认证,文件权限通常限制给 Tor 运行用户或特定组;改用密码认证时口令会落在配置文件里,对文件权限的要求更高。
为了脚本方便关掉认证:本机任意进程都能接管 Tor,查询使用痕迹、强制换链路,甚至影响你的流量走向。