Skip to content

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-libev3.3.5+ds-7build1Ubuntu 22.04 universe(阿里云镜像)提供 ss-local
privoxy3.0.33-1build1Ubuntu 22.04 universeSOCKS5 → HTTP 代理转换

✅ 两个包都在 Ubuntu 官方源里,不需要从 GitHub 下载 —— 完美避开了 raw.githubusercontent 被墙的死循环。

配置文件 ​

路径权限内容
/etc/shadowsocks-libev/us01.json600节点配置(含密码)
/etc/systemd/system/ss-local-us01.service644ss-local 服务单元
/etc/privoxy/config644追加 forward-socks5t / 127.0.0.1:1080 .

服务 ​

服务状态监听
ss-local-us01.serviceenabled + active127.0.0.1:1080 (SOCKS5)
privoxy.serviceenabled + active127.0.0.1:8118 (HTTP)
shadowsocks-libev.servicedisabled— (服务器模式,不需要)

两个服务都只监听 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:8118

5. 验证结果 ​

目标直连经代理
myip.ipip.net39.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

TenoDX · 内部文档