# 旁路由 + 去广告 部署文档 > 部署日期: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. 服务管理 ```bash # 本机 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 root@ 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:7890`(GNOME 已配) - DNS: 自动(走 AdGuard `127.0.0.1:53`) ### Windows - DNS: 手动设为旁路由 IP(去广告) - 备用 DNS: `223.5.5.5` - 翻墙: 系统代理 SOCKS5 `旁路由IP:7890`(需要时开) - 关掉浏览器 DNS over HTTPS(Chrome/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 监听 `[::]:53`(IPv6 dual-stack)导致本地回环 UDP DNS 偶尔超时。解决方法是 `--net host` 模式。 ## 重启后恢复 ```bash # 大部分自动恢复。如果翻墙或去广告挂了,依次检查: sudo systemctl status sing-box # 翻墙 docker ps | grep adguardhome # 去广告 ssh -i ~/.ssh/hk_vps -p root@ 'systemctl status sing-box' # HK VPS ``` ## 添加新的广告域名到拦截列表 ```bash 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 ```