主题
08 — 网络代理(出站加速)
配置时间:2026-11-08 04:08~04:12 CST
1. 为什么需要
服务器在北京阿里云,直连实测:
| 目标 | 直连 | 说明 |
|---|---|---|
github.com | ✅ 200 | 可用但慢 |
raw.githubusercontent.com | ❌ 000 阻断 | GitHub Raw 全站不可达 |
registry-1.docker.io | ❌ 000 阻断 | Docker Hub 官方源不可达 |
api.ipify.org / google.com | ❌ 000 | 不可达 |
mirrors.cloud.aliyuncs.com | ✅ 200 (0.09s) | 阿里云内网镜像,极快 |
mirrors.aliyun.com | ✅ 200 (0.18s) | 阿里云公网镜像 |
结论:apt / Docker Hub 走阿里云镜像即可,不需要代理;但 GitHub Raw、部分包源、境外 API 必须走代理。
因此本次设计为按需代理(opt-in),而不是全局代理 —— 全局代理会让 apt 和阿里云内网元数据服务变慢。
⚠️ 合规提示:阿里云服务条款禁止将 ECS 用于未经许可的代理/VPN 用途。 本次仅将实例作为客户端出站使用(代理仅监听
127.0.0.1,不对外提供服务), 风险低于对外提供代理,但仍属灰色地带。请自行评估。
2. 架构
┌──────────────────────────────────┐
本机命令 (px) │ HTTP_PROXY = 127.0.0.1:8118 │
───────────────► │ privoxy (3.0.33) │
│ │ forward-socks5t │
│ ▼ │
│ SOCKS5 = 127.0.0.1:1080 │
│ ss-local (shadowsocks-libev)│
└────────────┬─────────────────────┘
│ aes-256-gcm, TCP
▼
p.x.4.e.k.l.r.8.d.us01-ae5.entry.v51124-4.qpon:20012
美国Z01 | IEPL | x1.5 → 142.249.36.77 (Los Angeles)为什么套一层 privoxy:很多工具(docker、apt、wget、node)只认 HTTP 代理不认 SOCKS5, privoxy 把 SOCKS5 转成 HTTP 代理,覆盖面更广。
3. 组件与配置
节点信息
| 字段 | 值 |
|---|---|
| 节点名 | 美国Z01 | IEPL | x1.5 |
| 协议 | Shadowsocks |
| 服务器 | p.x.4.e.k.l.r.8.d.us01-ae5.entry.v51124-4.qpon |
| 端口 | 20012 |
| 加密 | aes-256-gcm |
| 实测出口 | 142.249.36.77(美国 加利福尼亚州 洛杉矶, hytron.io) |
软件包
| 包 | 版本 | 来源 | 用途 |
|---|---|---|---|
shadowsocks-libev | 3.3.5+ds-7build1 | Ubuntu 22.04 universe(阿里云镜像) | 提供 ss-local |
privoxy | 3.0.33-1build1 | Ubuntu 22.04 universe | SOCKS5 → HTTP 代理转换 |
✅ 两个包都在 Ubuntu 官方源里,不需要从 GitHub 下载 —— 完美避开了 raw.githubusercontent 被墙的死循环。
配置文件
| 路径 | 权限 | 内容 |
|---|---|---|
/etc/shadowsocks-libev/us01.json | 600 | 节点配置(含密码) |
/etc/systemd/system/ss-local-us01.service | 644 | ss-local 服务单元 |
/etc/privoxy/config | 644 | 追加 forward-socks5t / 127.0.0.1:1080 . |
服务
| 服务 | 状态 | 监听 |
|---|---|---|
ss-local-us01.service | enabled + active | 127.0.0.1:1080 (SOCKS5) |
privoxy.service | enabled + active | 127.0.0.1:8118 (HTTP) |
shadowsocks-libev.service | disabled | — (服务器模式,不需要) |
两个服务都只监听 loopback,公网无法访问,ufw 无需额外放行。
⚠️ 踩坑记录
Ubuntu 包自带的 shadowsocks-libev-local@.service 模板单元启动会失败:
ss-local[xxxx]: ERROR: Invalid config path.原因:该单元用 ExecStart=/usr/bin/ss-local -c /etc/shadowsocks-libev/%i.json, 但实例以非 root 用户运行,读不到 600 权限的配置文件(stat() 失败即报此错)。 手动以 root 执行同样命令完全正常。
解决:改用自建单元 ss-local-us01.service(以 root 运行,配置保持 600)。
4. 使用方式
推荐:px 包装器
bash
px -s # 查看状态 + 直连/代理出口 IP 对比
px -o # 只看直连出口 IP
px curl https://raw.githubusercontent.com/xxx/yyy
px git clone https://github.com/xxx/yyy
px bash -c 'npm install'px 位于 /usr/local/bin/px,会为子命令注入:
ALL_PROXY = socks5h://127.0.0.1:1080
HTTP_PROXY = http://127.0.0.1:8118
HTTPS_PROXY = http://127.0.0.1:8118
NO_PROXY = localhost,127.0.0.1,::1,*.aliyuncs.com,100.100.0.0/8手工方式
bash
# 单条命令走 SOCKS5
curl --socks5-hostname 127.0.0.1:1080 https://raw.githubusercontent.com/...
# 单条命令走 HTTP 代理
curl -x http://127.0.0.1:8118 https://api.ipify.org
# 当前 shell 全局代理
export ALL_PROXY=socks5h://127.0.0.1:1080
export HTTPS_PROXY=http://127.0.0.1:81185. 验证结果
| 目标 | 直连 | 经代理 |
|---|---|---|
myip.ipip.net | 39.107.41.224(北京·阿里云) | 142.249.36.77(美国·洛杉矶) |
raw.githubusercontent.com | ❌ 000 | ✅ 200 |
registry-1.docker.io/v2/ | ❌ 000 | ✅ 401(正常鉴权响应) |
api.ipify.org | ❌ 000 | ✅ 200 |
google.com | ❌ 000 | ✅ 200 |
privoxy 链路(HTTP → SOCKS5 → 美国)实测拉取 raw.githubusercontent.com/git/git/master/README.md → 200。
6. 刻意不做代理的部分
| 组件 | 原因 |
|---|---|
apt | 阿里云内网镜像 0.09s,走代理反而慢 |
dockerd (registry-mirrors) | 阿里云加速器已可用,无需出口代理 |
systemd-resolved DNS | 阿里云内网 DNS 解析境外域名正常,改动会引入风险 |
| 全局路由 / TPROXY | 会造成 apt、元数据服务(100.100.100.200)异常 |
7. 运维要点
节点到期
订阅信息显示:过期时间 2027-07-18,剩余流量 52.95%(158.84 GB)。
切换节点
订阅里共 48 个节点,同为 Shadowsocks 的包括(美国Z02、日本Z01~Z11、香港Z01~Z08、新加坡、台湾、韩国 等): 直接修改 /etc/shadowsocks-libev/us01.json 的 server/server_port/password/method, 然后 systemctl restart ss-local-us01。
排障
bash
systemctl status ss-local-us01 privoxy
journalctl -u ss-local-us01 -n 30 --no-pager
px -s # 一键看状态与出口 IP
/usr/bin/ss-local -c /etc/shadowsocks-libev/us01.json -v # 前台调试安全
- 配置文件含节点密码,保持
600,仅 root 可读 ss-local-us01.service中已加NoNewPrivileges=true、PrivateTmp=true- 若不再需要,停用即可完全恢复原状:bash
systemctl disable --now ss-local-us01 privoxy