---
created: "2026-03-15"
type: moc
tags: [homelab, networking, infrastructure]
---

# 家庭网络基础设施

## 网络拓扑

```
互联网 (Telia, 瑞典)
  │
  ▼
光猫 (拨号, Dynamic IP)
  │
  ▼ WAN (eth0, 公网 IP: 81.231.178.251)
iStoreOS / EasePi Pro (192.168.68.63) ← 主网关
  ├── DHCP 服务器
  ├── dnsmasq (:53) → 内网 DNS
  ├── OpenClash / mihomo (:7874) → 翻墙回国 + 广告拦截
  ├── WireGuard VPN (10.8.0.0/24)
  ├── 端口映射
  │
  ▼ LAN (eth1/eth2/eth3, 192.168.68.0/22)
  │
  ├── Deco BE65 (AP 模式) ─── WiFi ─── 手机/平板/笔记本
  │     └── Deco 子节点 (mesh)
  │
  └── 交换机 (2楼)
        ├── PVE 服务器 (192.168.68.69) ─── 虚拟机集群
        └── QNAP NAS (192.168.68.70) ─── 存储 + Docker 服务
```

## 物理布局

| 楼层 | 设备 | 连接方式 |
|------|------|---------|
| 1楼 | 光猫 → iStoreOS → Deco BE65 主机 | 有线 |
| 2楼 | 交换机 → PVE + NAS | 有线（通过 Deco mesh 回程到 iStoreOS） |

---

## 核心设备

### iStoreOS / EasePi Pro — 主网关

| 项目 | 值 |
|------|-----|
| IP | `192.168.68.63` |
| 系统 | iStoreOS 24.10.2 (aarch64) |
| 角色 | 主网关、DHCP、DNS、VPN、代理 |
| SSH | `ssh root@192.168.68.63`（需 1Password agent） |
| 管理面板 | http://192.168.68.63 |

**运行服务：**

| 服务 | 端口 | 说明 |
|------|------|------|
| dnsmasq | :53 | 内网 DNS + 转发到 OpenClash |
| OpenClash | :7874 | fake-ip 分流 + 翻墙回国 |
| OpenClash Dashboard | :9090 | 连接监控 |
| WireGuard VPN | tun0 (10.8.0.0/24) | 远程接入 |

### Deco BE65 — WiFi 网状网络

| 项目 | 值 |
|------|-----|
| IP | `192.168.68.182`（DHCP） |
| 模式 | AP（接入点） |
| 角色 | 仅 WiFi mesh，不做路由/DHCP |
| 管理 | Deco App |

### PVE 服务器 — 虚拟化平台

| 项目 | 值 |
|------|-----|
| IP | `192.168.68.69` |
| 系统 | Proxmox VE (Linux 6.8.12-9-pve, x86_64) |
| SSH | `ssh root@192.168.68.69`（需 1Password agent） |
| 管理面板 | https://192.168.68.69:8006 |
| 存储 | local (98GB dir) + local-lvm (855GB lvmthin) |

**虚拟机列表：**

| VMID | 名称 | IP | 内存 | 磁盘 | 状态 | 说明 |
|------|------|-----|------|------|------|------|
| 100 | HA | - | 2GB | 32GB | running | Home Assistant 智能家居 |
| 101 | k8s-cp1 | - | 2GB | 83GB | running | Kubernetes 控制面节点 |
| 102 | Wireguard | 192.168.68.107 | 2GB | 32GB | running | WireGuard VPN 服务 |
| 103 | k8s-w1 | - | 2GB | 83GB | running | Kubernetes 工作节点 1 |
| 104 | k8s-w2 | - | 2GB | 83GB | running | Kubernetes 工作节点 2 |
| 105 | pg-01 | - | 8GB | 23GB | running | PostgreSQL 数据库 |
| 106 | network-scanner | 192.168.68.84 | 8GB | 43GB | running | 网络扫描工具 |
| 111 | adguard-vm | 192.168.68.112 | 512MB | 8GB | running | AdGuard Home（备用，当前未使用） |
| 9000 | ubuntu-cloudinit | - | 8GB | 3.5GB | stopped | 模板 |

### QNAP NAS — 存储与服务

| 项目 | 值 |
|------|-----|
| IP | `192.168.68.70` |
| 系统 | QNAP (Linux 5.10.60-qnap, x86_64) |
| SSH | `ssh -p 4696 kai@192.168.68.70`（需 1Password agent） |
| Docker | Container Station (`/share/CACHEDEV4_DATA/.qpkg/container-station/bin/docker`) |

**Docker 容器：**

| 容器 | 镜像 | 端口 | 说明 |
|------|------|------|------|
| n8n | n8nio/n8n | :5678 | 工作流自动化 |
| n8n-postgres | postgres:16-alpine | 内部 | n8n 数据库 |
| affine_server | toeverything/affine | :3010 | 协作知识库 |
| affine_postgres | pgvector/pgvector:pg16 | 内部 | Affine 数据库 |
| affine_redis | redis | 内部 | Affine 缓存 |
| gitea | gitea/gitea | :2200(SSH), :10011(Web) | Git 代码托管 |
| transmission | linuxserver/transmission | :8091(Web), :51413(BT) | BT 下载 |
| flowise | flowiseai/flowise | :6060 | AI 工作流 |
| flowise-dong | flowiseai/flowise | :6061 | AI 工作流（副本） |
| qdrant | qdrant/qdrant | :6333-6334 | 向量数据库 |
| npm | nginx-proxy-manager | :80, :81, :443 | 反向代理 |
| ddns-go | jeessy/ddns-go | - | DDNS 动态域名 |

---

## 网络配置

### 子网

| 网段 | 用途 |
|------|------|
| `192.168.68.0/22` | 家庭 LAN（所有设备） |
| `10.8.0.0/24` | WireGuard VPN |
| `172.17.0.0/16` | Docker 内部网络 |

### IP 分段规划

```
.1-.10      网络设备预留
.11-.30     K8s 集群（静态 netplan，不走 DHCP）
.60-.70     核心基础设施（DHCP 静态绑定）
.71-.99     个人设备（DHCP 静态绑定）
.100-.229   DHCP 动态池（start=100, limit=130）
.230-.239   预留
.240-.242   MetalLB VIP（K8s Ingress LoadBalancer）
.243+       未使用
```

### 端口映射（WAN → LAN）

| 外部端口 | 目标 | 说明 |
|---------|------|------|
| 2200 | 192.168.68.70:2200 | Gitea SSH |
| 443 | 192.168.68.70:443 | Nginx Proxy Manager HTTPS |
| 51888 | 192.168.68.107:51888 | WireGuard |

### DNS

**链路：** `设备 → dnsmasq(:53) → OpenClash(:7874) → 8.8.8.8 / 1.1.1.1`

**内网 DNS 记录：**

| 域名 | IP | 说明 |
|------|-----|------|
| `*.k8s.home` | 192.168.68.240 | Kubernetes Ingress (MetalLB) |
| `nas.colacoder.com` | 192.168.68.70 | NAS |
| `pve.colacoder.com` | 192.168.68.70 | PVE（通过 NPM 代理） |
| `npm.colacoder.com` | 192.168.68.70 | Nginx Proxy Manager |
| `router.colacoder.com` | 192.168.68.63 | 路由器 |
| `adguard.colacoder.com` | 192.168.68.63 | AdGuard Home（旧） |
| `claw.colacoder.com` | 192.168.68.70 | Claw 服务 |
| `openvas.colacoder.com` | 192.168.68.70 | OpenVAS 漏洞扫描 |
| `invest-api.k8s.home` | 192.168.68.240 | 投资 API |

---

## DHCP 静态绑定（22 台设备）

### K8s 集群（.11-.22）

| 名称 | IP | MAC | 说明 | DNS |
|------|-----|-----|------|-----|
| k8s-cp1 | 192.168.68.11 | BC:24:11:44:DB:F6 | K8s 控制面 | 8.8.8.8（绕过 OpenClash） |
| k8s-w1 | 192.168.68.21 | BC:24:11:16:AD:25 | K8s 工作节点 | 8.8.8.8（绕过 OpenClash） |
| k8s-w2 | 192.168.68.22 | BC:24:11:51:8E:58 | K8s 工作节点 | 8.8.8.8（绕过 OpenClash） |

### 核心基础设施（.60-.70）

| 名称 | IP | MAC | 说明 |
|------|-----|-----|------|
| Yiukai-Asus-lan | 192.168.68.60 | 44:E5:17:DD:26:01 | Asus 笔记本(有线) |
| easepi | 192.168.68.63 | EE:61:98:11:AD:C4 | iStoreOS 主网关 |
| pve-server | 192.168.68.69 | 84:47:09:20:70:DA | PVE 虚拟化服务器 |
| YIUKAINAS | 192.168.68.70 | 24:5E:BE:5F:ED:38 | QNAP NAS |

### 个人设备（.71-.99）

| 名称 | IP | MAC | 说明 |
|------|-----|-----|------|
| Yaojias-iPhone | 192.168.68.73 | 68:EF:DC:B7:36:40 | iPhone |
| Yaojia-ipad | 192.168.68.77 | 64:0B:D7:F0:D0:4C | iPad |
| Yiukai-Asus-wifi | 192.168.68.79 | 08:3A:88:59:1F:A6 | Asus 笔记本(WiFi) |
| network-scanner | 192.168.68.84 | BC:24:11:09:F1:9E | 网络扫描 VM |
| Yiukais-MBP | 192.168.68.87 | 5C:E9:1E:B2:56:79 | MacBook Pro |
| kuangxideiPhone | 192.168.68.88 | C4:C1:7D:7B:76:CC | iPhone |
| Yiukai | 192.168.68.89 | 10:FF:E0:CC:1D:00 | 个人设备 |
| homeassistant | 192.168.68.97 | BC:24:11:63:40:1E | Home Assistant VM |

### PVE 虚拟机 & 服务（.100-.120）

| 名称 | IP | MAC | 说明 |
|------|-----|-----|------|
| pve-docker | 192.168.68.102 | BC:24:11:3B:9C:8A | PVE VM |
| kai-desktop-jetson | 192.168.68.104 | 3C:6D:66:1E:D7:62 | Jetson 开发板 |
| wireguard | 192.168.68.107 | BC:24:11:00:4D:D2 | WireGuard VM |
| yiukai-ubuntu | 192.168.68.108 | 1C:79:2D:5C:2C:C4 | Ubuntu 台式机 |
| android-8fbbfff | 192.168.68.111 | 6C:2D:24:F8:F3:0C | Android 手机 |
| adguard-vm | 192.168.68.112 | BC:24:11:C9:58:CB | AdGuard Home VM（备用） |

### 其他

| 名称 | IP | MAC | 说明 |
|------|-----|-----|------|
| pc | 192.168.68.176 | 12:D0:5B:A3:8B:4F | Windows PC |

### MetalLB VIP（不走 DHCP）

| IP | 用途 |
|-----|------|
| 192.168.68.240 | K8s Ingress (ingress-nginx) |
| 192.168.68.241-242 | MetalLB 预留 |

---

## 安全加固（2026-03-15 审计）

### 已实施

| 项目 | 措施 | 状态 |
|------|------|------|
| WAN 入站 | 默认 REJECT，仅放行必要端口 | ✅ |
| DNS | dnsmasq 只监听 LAN IP (`192.168.68.63`) | ✅ |
| SSH | 密码认证关闭，仅密钥，只绑 LAN | ✅ |
| ttyd (Web终端) | 只绑 LAN IP | ✅ |
| uhttpd (管理面板) | 只绑 LAN IP (`192.168.68.63:80/443`) | ✅ |
| IPv6 | 已关闭，无全局地址 | ✅ |
| WAN Ping | 已关闭 | ✅ |
| OpenVPN 1194 规则 | 已删除（不使用 OpenVPN） | ✅ |
| UPnP | 已禁用 | ✅ |
| Samba | 只绑 LAN IP | ✅ |

### WAN 入站放行端口

| 端口 | 服务 | 说明 |
|------|------|------|
| 8897/tcp | linkease (易有云) | iStoreOS 自带远程访问 |
| 2200/tcp → NAS:2200 | Gitea SSH | 端口映射 |
| 443/tcp → NAS:443 | Nginx Proxy Manager | 端口映射 |
| 51888/tcp → WG:51888 | WireGuard | 端口映射 |

### K8s 节点绕过 OpenClash

K8s 节点 DNS 使用 `8.8.8.8`（不经过 OpenClash fake-ip），流量通过 `SRC-IP-CIDR` 规则直连：

| 节点 | IP | DNS | 网关 | OpenClash |
|------|-----|-----|------|-----------|
| k8s-cp1 | 192.168.68.11 | 8.8.8.8 | 192.168.68.63 | DIRECT（绕过） |
| k8s-w1 | 192.168.68.21 | 8.8.8.8 | 192.168.68.63 | DIRECT（绕过） |
| k8s-w2 | 192.168.68.22 | 8.8.8.8 | 192.168.68.63 | DIRECT（绕过） |

> 原因：OpenClash fake-ip 对容器镜像仓库（quay.io、ecr.aws 等）返回假 IP，
> K8s 节点无法通过 TUN 路由假 IP，导致 ImagePullBackOff。

### IoT 设备防火墙隔离

25 台智能家居设备（小米/Yeelight/Aqara 等）通过 nftables 规则限制访问：

| 流量方向 | 策略 |
|---------|------|
| IoT → NAS (.70) | **DROP** |
| IoT → PVE (.69) | **DROP** |
| IoT → K8s (.11/.21/.22) | **DROP** |
| IoT → iStoreOS (.63) | **DROP** |
| IoT → Home Assistant (.97) | ACCEPT |
| IoT → 手机（米家 App） | ACCEPT（同网段） |
| IoT → 互联网 | ACCEPT |

实现方式：
- nft set `iot_devices`：25 台 IoT 设备 IP
- nft set `protected_servers`：敏感服务器 IP
- 规则：`ip saddr @iot_devices ip daddr @protected_servers drop`
- 脚本：`/etc/firewall.iot`（通过 UCI firewall include 自动加载）

> 未使用 VLAN 隔离，因为小米 WiFi 设备（灯、插座、摄像头）需要与手机在同一网段才能本地控制。

### 待评估

| 项目 | 说明 | 建议 |
|------|------|------|
| linkease 8897 | 对 WAN 开放，如不用可关闭 | 确认需求 |
| NFS/RPC (111,2049) | 监听 0.0.0.0，防火墙挡了 WAN | 如不用可关闭 |
| wsdd2 (5355,3702) | Windows 网络发现，防火墙挡了 | 如不用可关闭 |
| root 密码 MD5 哈希 | `$1$` 较弱，但 SSH 已关密码认证 | 低风险 |

---

## SSH 访问

所有 SSH 连接需要通过 1Password SSH Agent：

```bash
# iStoreOS 路由器
SSH_AUTH_SOCK="$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" ssh root@192.168.68.63

# PVE 服务器
SSH_AUTH_SOCK="$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" ssh root@192.168.68.69

# NAS
SSH_AUTH_SOCK="$HOME/Library/Group Containers/2BUA8C4S2C.com.1password/t/agent.sock" ssh -p 4696 kai@192.168.68.70

# 阿里云 VLESS 服务器
ssh admin@8.138.1.192
```

---

## 相关项目

- [[VLESS-Reality 翻墙回国]] — 翻墙回国代理配置
- [[PVE Security Scanner]] — 网络安全扫描

## 相关资源

- iStoreOS 管理面板: http://192.168.68.63
- PVE 管理面板: https://192.168.68.69:8006
- OpenClash Dashboard: http://192.168.68.63:9090
- Gitea: http://192.168.68.70:10011
- n8n: http://192.168.68.70:5678
- Affine: http://192.168.68.70:3010
- Nginx Proxy Manager: http://192.168.68.70:81
- Transmission: http://192.168.68.70:8091
