Files
notebook/docs/技术/旁路由部署.md
T

5.3 KiB
Raw Blame History

旁路由 + 去广告 部署文档

部署日期:2026-06-02 | 服务器:香港 VPS | 旁路由:Ubuntu 24.04

架构总览

香港 VPS                            本机 - 旁路由
┌──────────────────────┐          ┌──────────────────────────────┐
│ sing-box 服务端       │  VLESS  │ sing-box 客户端               │
│ VLESS + Reality      │←────────│ ├─ SOCKS5 :7890 → 本机+LAN翻墙│
│ 伪装 microsoft.com   │ Reality │ ├─ TProxy  :7895 → 透明代理   │
│ 端口: 8443           │          │ └─ 规则: 内网直连/其余走代理  │
└──────────────────────┘          │                              │
                                  │ AdGuard Home (Docker)        │
                                  │ ├─ DNS :53    → 全屋去广告   │
                                  │ ├─ Web :8080  → 管理面板     │
                                  │ └─ 45万条过滤规则             │
                                  └──────────────────────────────┘

关键配置

1. 本机网络

  • IP: 静态 IP(通过 NetworkManager 设置)
  • 连接名: 有线连接 1
  • 网关: 192.168.31.1(小米路由器 Redmi RM2100
  • IP 转发: 已开启 (net.ipv4.ip_forward=1)

2. 端口清单

端口 服务 用途
7890 sing-box mixed SOCKS5/HTTP 代理(翻墙)
7895 sing-box tproxy 透明代理(TProxy,回包有问题暂未用)
53 AdGuard Home DNS(去广告)
8080 AdGuard Home Web 管理面板
8443 HK VPS VLESS+Reality 服务端

3. 服务管理

# 本机
sudo systemctl restart sing-box    # 重启翻墙客户端
docker restart adguardhome         # 重启去广告
sudo journalctl -u sing-box -f    # 查看翻墙日志
docker logs adguardhome -f         # 查看去广告日志

# 香港 VPS
ssh -i ~/.ssh/hk_vps -p <SSH端口> root@<VPS IP>
systemctl restart sing-box

4. 配置文件路径

文件 说明
/etc/sing-box/config.json sing-box 客户端配置
/opt/adguard/conf/AdGuardHome.yaml AdGuard Home 配置
/opt/adguard/work/data/filters/ 过滤规则文件
/etc/iptables/rules.v4 iptables 持久化规则
/etc/systemd/system/sing-box.service sing-box systemd 服务
/etc/systemd/system/tproxy-route.service TProxy 路由(fwmark

5. 广告过滤规则

当前 45 万条规则,来源:

  1. AdGuard DNS filter (16万)
  2. AdAway Default Blocklist (6500)
  3. Malicious URL Blocklist (1.7万)
  4. Peter Lowe's Blocklist (8.1万)
  5. AdRules DNS Filter 中国广告 (18.5万)

自定义拦截:wwads.cn, tanx.com, sdkclick.qq.com, byteimg.com, bytecdn.com, snssdk.com, toutiao.com

各设备配置

本机 (Ubuntu)

  • 系统代理: SOCKS5 127.0.0.1:7890GNOME 已配)
  • DNS: 自动(走 AdGuard 127.0.0.1:53

Windows

  • DNS: 手动设为旁路由 IP(去广告)
  • 备用 DNS: 223.5.5.5
  • 翻墙: 系统代理 SOCKS5 旁路由IP:7890(需要时开)
  • 关掉浏览器 DNS over HTTPSChrome/Edge 设置)

手机 - 在家(连 WiFi

  • DNS: 设为旁路由 IP(去广告)
  • 翻墙: WiFi 设置 → 代理 → 手动 → 旁路由IP:7890

手机 - 出门(4G/5G

  • App: Shadowrocket / Hiddify Next
  • 协议: VLESS Reality,直连 HK VPS
  • 配置参数与 VPS 一致

网络背景

  • 路由器: 小米 Redmi RM2100,固件 2.0.23
  • 上游: 电信大内网,光猫 192.168.1.1 由运营商管控
  • DNS 劫持: 运营商强制接管 53 端口,所以路由器改 WAN DNS 无效
  • 解决: 各设备 DNS 手动设为旁路由 IP,绕过运营商劫持
  • AP 隔离: 路由器重启后消失,设备互访正常

已知问题

  1. TProxy 透明代理不通: 回包路径有问题,和 Docker 网络冲突。目前用 SOCKS5 代理替代,效果一样。

  2. 路由器 DNS 劫持: 小米路由器 + 电信大内网劫持所有 53 端口。Windows DNS 设成旁路由 IP 可以绕过。

  3. sing-box 配置用了废弃字段: DNS 和 inbound 格式使用了 legacy 格式,需要环境变量 ENABLE_DEPRECATED_LEGACY_DNS_SERVERS=true 兼容,sing-box 1.14 之前需要迁移到新格式。

  4. AdGuard UDP 在 Docker bridge 模式下有问题: 容器内 UDP 监听 [::]:53IPv6 dual-stack)导致本地回环 UDP DNS 偶尔超时。解决方法是 --net host 模式。

重启后恢复

# 大部分自动恢复。如果翻墙或去广告挂了,依次检查:
sudo systemctl status sing-box     # 翻墙
docker ps | grep adguardhome       # 去广告
ssh -i ~/.ssh/hk_vps -p <SSH端口> root@<VPS IP> 'systemctl status sing-box'  # HK VPS

添加新的广告域名到拦截列表

sudo python3 << 'PYEOF'
import yaml
with open('/opt/adguard/conf/AdGuardHome.yaml') as f:
    cfg = yaml.safe_load(f)
cfg['user_rules'].append('||新域名.com^')
with open('/opt/adguard/conf/AdGuardHome.yaml', 'w') as f:
    yaml.dump(cfg, f, default_flow_style=False)
PYEOF
docker restart adguardhome