5.3 KiB
5.3 KiB
旁路由 + 去广告 部署文档
部署日期: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 万条规则,来源:
- AdGuard DNS filter (16万)
- AdAway Default Blocklist (6500)
- Malicious URL Blocklist (1.7万)
- Peter Lowe's Blocklist (8.1万)
- 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 隔离: 路由器重启后消失,设备互访正常
已知问题
-
TProxy 透明代理不通: 回包路径有问题,和 Docker 网络冲突。目前用 SOCKS5 代理替代,效果一样。
-
路由器 DNS 劫持: 小米路由器 + 电信大内网劫持所有 53 端口。Windows DNS 设成旁路由 IP 可以绕过。
-
sing-box 配置用了废弃字段: DNS 和 inbound 格式使用了 legacy 格式,需要环境变量
ENABLE_DEPRECATED_LEGACY_DNS_SERVERS=true兼容,sing-box 1.14 之前需要迁移到新格式。 -
AdGuard UDP 在 Docker bridge 模式下有问题: 容器内 UDP 监听
[::]:53(IPv6 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