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

143 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 旁路由 + 去广告 部署文档
> 部署日期: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 <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:7890`GNOME 已配)
- 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 监听 `[::]:53`IPv6 dual-stack)导致本地回环 UDP DNS 偶尔超时。解决方法是 `--net host` 模式。
## 重启后恢复
```bash
# 大部分自动恢复。如果翻墙或去广告挂了,依次检查:
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
```
## 添加新的广告域名到拦截列表
```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
```