---
tags:
  - resource
  - openclash
  - vless-reality
  - networking
  - iStoreOS
  - router
  - dns
  - homelab
---

# iStoreOS 主网关配置文档

> 主网关：`192.168.68.63` (iStoreOS 24.10.2, aarch64, EasePi Pro)
> WiFi：Deco BE65（AP 模式）
> 服务器：`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，不能用国内 DNS（114、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`
- Dashboard：http://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 不能用国内 DNS（114.114.114.114、119.29.29.29 等），
因为这些 IP 匹配 GEOIP,CN 规则 → 走代理 → 代理需要 DNS → 死循环。
**必须用海外 DNS（8.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 问题及修复优先级
