Files
knowledge-base/2 - Projects/VLESS-Reality/VLESS-REALITY-Router-iStoreOS.md
Yaojia Wang e4382d01bb Openclash
2026-03-19 17:09:45 +01:00

307 lines
9.0 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.

---
tags:
- openclash
- vless-reality
- iStoreOS
- router
- dns
- homelab
---
# iStoreOS 主网关配置文档
> 主网关:`192.168.68.63` (iStoreOS 24.10.2, aarch64, EasePi Pro)
> WiFiDeco BE65AP 模式)
> 服务器:`8.138.1.192`(阿里云广州)
> 用途:国内视频/音乐翻墙回国 + 广告拦截 + 内网 DNS
> 状态:**已完成,正常工作** (2026-03-19 规则精简)
---
## 1. 网络拓扑
```
光猫 (拨号, Dynamic IP)
▼ WAN (eth0, DHCP)
iStoreOS (192.168.68.63) ← 主网关
├── dnsmasq (:53) → 内网 DNS + 转发到 OpenClash
├── OpenClash / mihomo (:7874) → fake-ip + TUN → 翻墙回国 + 广告拦截
├── 端口映射 (2200, 443, 51888)
├── DHCP (网关=.63, DNS=.63)
▼ LAN (eth1/eth2/eth3)
├── Deco BE65 (AP) → WiFi → 手机/平板/笔记本
└── 交换机 (2楼) → PVE + NAS
```
### DNS 解析链路
```
设备 → dnsmasq (:53)
├─ 内网域名 (*.colacoder.com, *.k8s.home) → 直接返回真实 IP
└─ 外部域名 → OpenClash (:7874, fake-ip)
├─ fake-ip-filter 匹配 → 返回真实 IP
├─ 广告域名 → REJECT
├─ 国内视频/音乐域名 → fake-ip → VLESS 代理回国
└─ 其余所有域名 → fake-ip → 直连
```
---
## 2. OpenClash 配置
### LuCI 后台设置
| 设置 | 值 |
|------|-----|
| 运行模式 | Fake-IP (TUN) |
| 代理模式 | Rule 策略代理 |
| 区域绕过 | **停用** |
| 域名嗅探 | 启用 |
| DNS 代理 | 停用 |
| 本地 DNS 劫持 | 使用 Dnsmasq 转发 |
### 覆写设置 → DNS
| 设置 | 值 |
|------|-----|
| Default-NameServer | `8.8.8.8`, `1.1.1.1` |
| NameServer | `8.8.8.8`, `1.1.1.1` |
| Fallback | `dns.google`, `cloudflare-dns.com` |
> **重要:** NameServer 必须用海外 DNS不能用国内 DNS114、119、223 等),
> 否则会产生 DNS 环路(国内 DNS IP 匹配 GEOIP,CN → 走代理 → 代理需要 DNS → 死循环)。
### 分流规则2026-03-19 精简)
只有国内视频和音乐走代理回国,其余全部直连:
```yaml
rules:
# K8s 节点直连
- SRC-IP-CIDR,192.168.68.11/32,DIRECT # k8s-cp1
- SRC-IP-CIDR,192.168.68.21/32,DIRECT # k8s-w1
- SRC-IP-CIDR,192.168.68.22/32,DIRECT # k8s-w2
# 代理服务器本身直连(防环路)
- IP-CIDR,8.138.1.192/32,DIRECT
# 广告拦截
- GEOSITE,category-ads-all,REJECT
# 私有网络直连
- IP-CIDR,192.168.0.0/16,DIRECT
# 国内视频B站/爱奇艺/优酷/芒果TV/搜狐/腾讯视频/抖音/西瓜/小红书)→ Proxy
# 国内音乐(网易云/酷狗/酷我/QQ音乐→ Proxy
# 其余全部直连
- MATCH,DIRECT
```
> 之前配置了 GEOSITE,cn + GEOIP,CN 导致所有国内流量走代理,
> 2026-03-19 精简为只代理视频和音乐。
K8s 节点 DNS 也改为 `8.8.8.8`(不经过 OpenClash详见 [[家庭网络基础设施#K8s 节点绕过 OpenClash]]
### 配置文件
- 源配置:`/etc/openclash/config/vless-reality.yaml`
- 运行配置:`/etc/openclash/vless-reality.yaml`(自动生成,勿手动改)
- API Secret`Dc7jZkmO`
- Dashboardhttp://192.168.68.63:9090
### 自定义文件(持久化,不被覆盖)
| 文件 | 用途 |
|------|------|
| `/etc/openclash/custom/openclash_custom_hosts.list` | 内网 DNS 映射 |
| `/etc/openclash/custom/openclash_custom_fake_filter.list` | fake-ip 排除域名 |
---
## 3. 内网 DNS
双重保障dnsmasq 和 OpenClash hosts 都配了内网记录。
### dnsmasq 配置
文件:`/etc/dnsmasq.d/internal-dns.conf`
```
address=/k8s.home/192.168.68.70
address=/nas.colacoder.com/192.168.68.70
address=/pve.colacoder.com/192.168.68.70
address=/npm.colacoder.com/192.168.68.70
address=/router.colacoder.com/192.168.68.63
address=/adguard.colacoder.com/192.168.68.63
address=/claw.colacoder.com/192.168.68.70
address=/openvas.colacoder.com/192.168.68.70
address=/invest-api.k8s.home/192.168.68.240
```
### OpenClash 自定义 hosts
文件:`/etc/openclash/custom/openclash_custom_hosts.list`
```yaml
nas.colacoder.com: 192.168.68.70
pve.colacoder.com: 192.168.68.70
npm.colacoder.com: 192.168.68.70
router.colacoder.com: 192.168.68.63
adguard.colacoder.com: 192.168.68.63
claw.colacoder.com: 192.168.68.70
openvas.colacoder.com: 192.168.68.70
invest-api.k8s.home: 192.168.68.240
argocd.k8s.home: 192.168.68.240
drone.k8s.home: 192.168.68.240
```
### fake-ip 排除列表
文件:`/etc/openclash/custom/openclash_custom_fake_filter.list`
```
*.colacoder.com
+.colacoder.com
*.k8s.home
+.k8s.home
*.lan
*.local
*.localdomain
*.home.arpa
```
---
## 4. 端口映射
| 规则名 | 外部端口 | 目标 |
|--------|---------|------|
| NAS-SSH-2200 | 2200 | 192.168.68.70:2200 |
| NAS-HTTPS-443 | 443 | 192.168.68.70:443 |
| Device-51888 | 51888 | 192.168.68.107:51888 |
---
## 5. DHCP 静态绑定22 台设备)
DHCP 范围:`.100` ~ `.229`start=100, limit=130避开 MetalLB `.240-.242`
详细分段和完整列表见 [[家庭网络基础设施#DHCP 静态绑定22 台设备)]]
### 摘要
| 名称 | IP | MAC |
|------|-----|-----|
| pve-docker | 192.168.68.102 | BC:24:11:3B:9C:8A |
| wireguard | 192.168.68.107 | BC:24:11:00:4D:D2 |
| Yaojia-ipad | 192.168.68.77 | 64:0B:D7:F0:D0:4C |
| Yaojias-iPhone | 192.168.68.73 | 68:EF:DC:B7:36:40 |
| Yiukai | 192.168.68.89 | 10:FF:E0:CC:1D:00 |
| Yiukai-Asus-wifi | 192.168.68.79 | 08:3A:88:59:1F:A6 |
| Yiukai-Asus-lan | 192.168.68.60 | 44:E5:17:DD:26:01 |
| yiukai-ubuntu | 192.168.68.108 | 1C:79:2D:5C:2C:C4 |
| YIUKAINAS | 192.168.68.70 | 24:5E:BE:5F:ED:38 |
| Yiukais-MBP | 192.168.68.87 | 5C:E9:1E:B2:56:79 |
| android-8fbbfff | 192.168.68.111 | 6C:2D:24:F8:F3:0C |
| easepi | 192.168.68.63 | EE:61:98:11:AD:C4 |
| homeassistant | 192.168.68.97 | BC:24:11:63:40:1E |
| kai-desktop-jetson | 192.168.68.104 | 3C:6D:66:1E:D7:62 |
| kuangxideiPhone | 192.168.68.88 | C4:C1:7D:7B:76:CC |
| lingke | 192.168.68.69 | 84:47:09:20:70:DA |
| network-scanner | 192.168.68.84 | BC:24:11:09:F1:9E |
| pc | 192.168.68.176 | 12:D0:5B:A3:8B:4F |
| adguard-vm | 192.168.68.112 | BC:24:11:C9:58:CB |
---
## 6. 踩坑记录
### DNS 环路(最关键)
OpenClash 的 nameserver 不能用国内 DNS114.114.114.114、119.29.29.29 等),
因为这些 IP 匹配 GEOIP,CN 规则 → 走代理 → 代理需要 DNS → 死循环。
**必须用海外 DNS8.8.8.8、1.1.1.1)。**
### OpenClash 配置覆盖
OpenClash 每次重启都会从源配置重新生成运行配置。
自定义 hosts 和 fake-ip-filter 必须放在 `/etc/openclash/custom/` 目录下的专用文件里。
直接改 yaml 文件会被覆盖。
DNS 相关设置必须在 LuCI 覆写设置里改,不能改 yaml。
### 区域绕过必须停用
翻墙回国场景下,"大陆"和"海外"绕过都不合适,必须选"停用"
让配置文件里的分流规则来决定。
### Redir-Host 模式不可用(已测试)
测试过从 fake-ip 切换到 redir-host (TUN) 模式,结果:
- Google、Bilibili 正常 ✅
- **v.qq.com 超时** ❌(国内 CDN 域名无法正确代理)
- billo.life VPN 域名正常 ✅
原因redir-host 模式下流量分流依赖 sniffer 从 TLS SNI 提取域名,
部分国内 CDN 的 SNI 无法正确匹配规则,导致连接失败。
**翻墙回国场景必须用 fake-ip 模式。**
### Fake-IP Filter 维护
VPN、容器仓库等需要真实 IP 的域名,手动加到 fake-ip-filter
`/etc/openclash/custom/openclash_custom_fake_filter.list`
当前已加入2026-03-19 去重精简,只用 `+.` 格式):
- `+.colacoder.com` / `+.k8s.home` — 内网域名
- `+.quay.io` / `+.ghcr.io` / `+.docker.io` / `+.docker.com` / `+.gcr.io` / `+.k8s.io` / `+.registry.k8s.io` — 容器仓库
- `+.ecr.aws` — AWS ECR不再用 `*.amazonaws.com` 全量排除)
- `+.billo.life` — 公司 VPN 域名
- `+.finance.yahoo.com` — Yahoo Finance API
---
## 7. 安全加固
已实施的安全措施,详见 [[家庭网络基础设施#安全加固2026-03-15 审计)]]
- DNS 只监听 LAN (`listen_address`)
- SSH 关闭密码认证,只绑 LAN (`PasswordAuth=off, Interface=lan`)
- ttyd 只绑 LAN (`interface=@lan`)
- uhttpd 只绑 LAN (`listen_http/https=192.168.68.63`)
- IPv6 关闭
- WAN ping 关闭
- OpenVPN 1194 规则已删除
---
## 8. 紧急恢复
```bash
SSH_AUTH_SOCK="$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" ssh root@192.168.68.63
# 停止 OpenClash恢复直连上网
/etc/init.d/openclash stop
# 如果 DNS 也断了,临时用 8.8.8.8
echo "nameserver 8.8.8.8" > /etc/resolv.conf
```
---
## 9. 更新维护
```bash
# 更新 mihomo 内核
cd /tmp
curl -L -o mihomo.gz "https://github.com/MetaCubeX/mihomo/releases/latest/download/mihomo-linux-arm64.gz"
gunzip -f mihomo.gz && chmod +x mihomo
mv mihomo /etc/openclash/core/clash_meta
/etc/init.d/openclash restart
# 更新 OpenClash 插件
opkg install /tmp/luci-app-openclash_*.ipk
```
---
## 10. 配置审计
- [[OpenClash-Config-Review-2026-03-19]] -- 全面配置 review含安全、规则、DNS 问题及修复优先级