xbc4000/homelab-network

GitHub: xbc4000/homelab-network

一个基于 MikroTik RB3011 的完整家庭实验室网络配置仓库,包含多 VLAN 隔离、Pi-hole 递归 DNS、WireGuard VPN 和企业级安全加固。

Stars: 0 | Forks: 0

# RB3011 Home Lab — RouterOS 7.22.1 ``` ╔══════════════════════════════════════════════════════════════════╗ ║ RB3011-GW · RouterOS 7.22.1 · MikroTik RB3011UiAS ║ ║ 6 VLANs · CAPsMAN · Pi-hole v6 · WireGuard VPN ║ ╚══════════════════════════════════════════════════════════════════╝ ``` MikroTik RB3011UiAS Home Lab 路由器的完整配置 — 已加固、文档齐全,并可直接从出厂重置中恢复。 ## 硬件 | 设备 | 型号 | 角色 | |--------|-------|------| | Router | RB3011UiAS | 核心路由器,CAPsMAN 控制器,容器主机 | | Storage | USB SSD 256 GB | 容器存储,Dude DB,备份 | | AP1 | mAP2nD-1 | 2.4 GHz WiFi ch1,CAPsMAN CAP | | AP2 | wAP2nD-1 | 2.4 GHz WiFi ch11,CAPsMAN CAP(通过 mAP 菊花链连接) | | Server1 | Dell PER730XD | VLAN10 — 工作站(Fedora,日常主力机,游戏) | | Server2 | Dell PER630 | VLAN20 — Ubuntu Server + AMP 游戏面板 | | RPi | Raspberry Pi 4 | VLAN40 — DietPi,Portainer,Grafana,指标导出器,Raspotify | ## 网络概览 ``` Internet (PPPoE CGNAT) │ ether1-WAN │ RB3011-GW (10.x.x.1 gateway for all VLANs) ├── ether2/3 VLAN10 10.10.10.0/24 Server1 (bond0) ├── ether4/5 VLAN20 10.20.20.0/24 Server2 + AMP ├── ether6/7 VLAN30 10.30.30.0/24 iDRAC OOB (no WAN) ├── ether8 VLAN40 10.40.40.0/24 Raspberry Pi ├── ether9 VLAN50 10.50.50.0/24 AV / Blu-ray ├── ether10 VLAN60 10.60.60.0/24 WiFi + CAPsMAN APs ├── veth 172.17.0.0/24 Pi-hole container └── wireguard back-to-home-vpn WireGuard / all VLANs ``` ### VLAN 表 | VLAN | 子网 | 用途 | WAN | VLAN 间 | |------|--------|---------|-----|------------| | 10 | 10.10.10.0/24 | Server1 (PER730XD) | Yes | ↔ VLAN20, VLAN30, VLAN60 (AP mgmt) | | 20 | 10.20.20.0/24 | Server2 + AMP (PER630) | Yes | ↔ VLAN10, VLAN30, VLAN60 (AP mgmt) | | 30 | 10.30.30.0/24 | iDRAC OOB | No | → VLAN10, VLAN20, VLAN40 (metrics) | | 40 | 10.40.40.0/24 | Raspberry Pi | Yes | 隔离 | | 50 | 10.50.50.0/24 | AV / 蓝光播放机 | Yes | 隔离 | | 60 | 10.60.60.0/24 | WiFi 客户端 + APs | Yes | 仅 DNS 到 Pi-hole | | — | 172.17.0.0/24 | Pi-hole 容器 (veth) | — | 路由器内部 | ## 功能特性 ### 网络 - **6 个隔离的 VLAN**,具有严格的 VLAN 间防火墙,并在所有链上显式默认丢弃 - **802.1Q VLAN 过滤** 在 bridge-main 上启用 — 硬件加速,无软件网桥变通方案 - **IGMP Snooping** 已启用,用于高效组播 - **PPPoE WAN** 通过 ether1 — 当前为 CGNAT,公共 IP 规则已准备就绪可随时激活 - **Back to Home VPN** — 由 MikroTik Cloud 管理的 WireGuard,端口 65504 UDP ### DNS - **Pi-hole v6 + Unbound + Hyperlocal** — 完全递归 DNS,从根域名服务器解析,无需上游解析器 - **DNS 自动故障转移** — 当 Pi-hole 宕机时,netwatch 在 15 秒内切换至 Google DNS - **本地 `.home` DNS** — 所有基础设施设备在路由器上都有静态 A 记录 ### WiFi (CAPsMAN) - **两个 AP** — mAP2nD-1 (ch1) 和 wAP2nD-1 (ch11),通过 ether10 菊花链连接 - **漫游** — 信号低于 −80 dBm 时强制客户端断开 - **客户端到客户端转发** — mDNS, Roku, Chromecast, Spotify Connect 均可正常工作 - **特定设备 WiFi 提示音** — 已知手机获取独特的 DHCP 租约旋律 ### 安全 - **SSH 暴力破解阶梯** — 4 次尝试 → 10 天黑名单(3 阶段地址列表链) - **端口扫描检测** — PSD 21/3s → 2 周黑名单 - **DDoS 防护** — ICMP 速率限制,DNS/NTP/SSDP 放大丢弃 - **RAW 链** — 路由前丢弃 bogon, RFC1918, CGNAT 源地址 - **TCP 标志扫描** — 在 input + forward 上丢弃 NULL 扫描和 FIN-no-ACK - **服务加固** — FTP, Telnet, WWW, API-SSL, reverse-proxy 均已禁用 - **Winbox/SSH/API** 仅限 VLAN10 和 VLAN30 - **高强度 SSH 加密** — 仅 AES-CTR,禁用 SHA1 - **IPv6 防火墙** — 8 规则防御集(ISP 为 CGNAT,无全局 IPv6) ### 监控栈 (Raspberry Pi 4 — 10.40.40.2) - **Grafana** — 所有基础设施指标和日志的仪表板 - **Prometheus** — 指标 TSDB;抓取 idrac-exporter (Redfish), SNMP exporter, mktxp, node_exporter - **InfluxDB** — 通过 Telegraf 获取的 iDRAC SNMP/IPMI 遥测数据的时间序列存储 - **Loki + promtail** — 日志聚合;接收 MikroTik syslog (UDP 5514) 和 iDRAC syslog (UDP 514) - **idrac-exporter** — 通过 Redfish HTTP 轮询两个 iDRAC,获取 CPU, 内存, 驱动器, 网络, PSU, 传感器信息 - **两个 Grafana 仪表板**(`config/` 中可导入的 JSON): - **Dell iDRAC 双主机指挥中心** — PER730XD(青色)和 PER630(洋红色)的并排实时硬件遥测:电源,温度,风扇,状态,磁盘,RAID,NIC,内存模块,SEL 事件日志,以及实时 Loki syslog 流 - **Homelab 日志智能** — 结合所有 MikroTik Loki 面板(防火墙,DHCP,错误,模式搜索)与 iDRAC Loki 面板(按主机流,审计,配置更改)的统一日志分析仪表板 ### 监控与告警 - **Netwatch** — 监控 10 台主机,up/down 时蜂鸣器报警 - **以太网监控** — 链接 up/down 时蜂鸣(3s 轮询) - **WiFi 监控** — 连接/断开时蜂鸣(5s 轮询) - **攻击监控** — 任何黑名单计数增加时蜂鸣(10s 轮询) - **登录监控** — 新的活动路由器会话时蜂鸣(5s 轮询) - **SSH 探测监控** — ssh-stage1 列表增长时蜂鸣(10s 轮询) - **温度监控** — 60°C 时报警(1m 轮询) - **DHCP 池监控** — WiFi 池可用 IP 低于 10 个时报警(5m) - **USB 挂载监控** — 若 USB SSD 未挂载则深度报警(5m) ### 启动音乐系统 - **11 首循环音乐** 在 WAN + USB 就绪后每次启动播放一次 - 循环播放:Tetris, Star Trek, Close Encounters, Imperial March, Doctor Who, Morse SOS, Big Ben, Nokia, Jeopardy, Mission Impossible, Reveille - 索引持久存储在脚本注释字段中 — 可在重启后保留 - 使用双调度器模式以绕过 RouterOS 7.22 的 `:beep` 顶层限制 ### 其他 - **超级马里奥兄弟主题曲** — 按需运行 `/system script run super-mario` - **LCD 触摸屏** — 统计信息幻灯片放映,5s 轮换,PIN 锁定,只读模式 - **The Dude** — USB SSD 上的网络监控数据库 - **Syslog** 转发至 Pi-hole(info, firewall, warning, error) - **SNMP** — 仅限 VLAN10/VLAN20,已重命名团体字符串 - **接口图表** — pppoe-wan, vlan10–vlan60 - **每周 RouterOS 自动更新** — 加密备份后安装,AP 固件 20 分钟后推送 ### 备份 - **每日 RSC 导出** — 明文,仅 USB SSD,每天 03:00 - **每周加密二进制** — AES-SHA256,USB SSD,每周 02:00 - **更新前备份** — 在任何 RouterOS 升级前自动获取 ## 仓库结构 ``` homelab-network/ ├── config/ │ ├── rb3011-config.rsc # Complete router config (credentials redacted) │ ├── grafana-idrac-command-center.json # iDRAC Dual Host Command Center dashboard │ └── grafana-homelab-log-intelligence.json # Combined log intelligence dashboard (Router + iDRAC) ├── aps/ │ ├── mAP2nD-1.rsc # mAP2nD-1 one-shot setup script │ └── wAP2nD-1.rsc # wAP2nD-1 one-shot setup script ├── docs/ │ ├── network-layout.md # VLANs, IPs, port mapping, isolation rules │ ├── services.md # Pi-hole, VPN, AMP, Dude, backups, SNMP │ ├── security.md # Firewall chains, DDoS, SSH ladder, hardening │ ├── beeper-alerts.md # All alert scripts, schedulers, boot fanfare system │ ├── servers.md # Server NIC bonding and network config (PER730XD, PER630) │ ├── monitoring.md # Full monitoring stack — Prometheus, Loki, Grafana dashboards │ └── troubleshooting.md # Common issues, RouterOS 7.22 syntax notes ├── servers/ │ ├── server1-network.sh # NetworkManager bond setup for Server1 (PER730XD) │ └── server2-network.sh # Template bond setup for Server2 (PER630, pending) ├── scripts/ │ ├── auto-update.rsc # Weekly RouterOS update — backup then install │ ├── ap-upgrade.rsc # Push firmware to CAPsMAN APs after router update │ ├── usb-check.rsc # Startup USB SSD mount check — reboots up to 3× │ ├── manual-backup.rsc # Trigger immediate RSC + encrypted binary backup │ ├── clear-blacklists.rsc # Clear all DDoS/SSH/scanner blacklists │ ├── pihole-restart.rsc # Restart Pi-hole container cleanly │ ├── security-lockdown.rsc # Re-apply full security lockdown │ └── syslog-setup.rsc # Configure syslog forwarding to Pi-hole └── README.md ``` ## 快速参考 ### 路由器访问 | 方法 | 地址 | 限制 | |--------|---------|-------------| | Winbox | 10.10.10.1 端口 8291 | 仅限 VLAN10 / VLAN30 | | SSH | 10.10.10.1 端口 2222 | 仅限 VLAN10 / VLAN30 | | Serial | RJ45 console port | 115200 baud 8N1 | ### DNS 名称 | 主机名 | IP | |---------|----| | router.home | 10.10.10.1 | | server1.home | 10.10.10.2 | | server1-nic2.home | 10.10.10.3 | | server2.home | 10.20.20.2 | | amp.home | 10.20.20.3 | | idrac1.home | 10.30.30.10 | | idrac2.home | 10.30.30.11 | | rpi.home | 10.40.40.2 | | pihole.home | 172.17.0.2 | | ap1.home | 10.60.60.200 | | ap2.home | 10.60.60.201 | ### 服务端口 | 服务 | 端口 | 协议 | 可访问来源 | |---------|------|----------|----------------| | Pi-hole web UI | 80 / 443 | TCP | pihole-admin-wifi 列表,Server1 | | Grafana | 3000 | TCP | Server1, WiFi → 10.40.40.2 | | Portainer | 9002 / 9442 | TCP | Server1, WiFi → 10.40.40.2 | | The Dude | 2210 | TCP | VLAN10 | | Back to Home VPN | 65504 | UDP | WAN | | Minecraft Java | 25565 | TCP | WAN → 10.20.20.3 | | Minecraft Bedrock | 19132 | UDP | WAN → 10.20.20.3 | | Garry's Mod | 27015 | UDP/TCP | WAN → 10.20.20.3 | | TeamSpeak 6 Voice | 9987 | UDP | WAN → 10.20.20.3 | | TeamSpeak 6 Files | 30033 | TCP | WAN → 10.20.20.3 | ## AP 设置 两个 AP 均通过导入脚本配置 — 一次性完成,导入期间无中断。 ``` # AP 恢复出厂设置并在 VLAN60 上后,从路由器终端执行: /import aps/mAP2nD-1.rsc /import aps/wAP2nD-1.rsc # 然后 SSH 登录设置密码: /system ssh address=10.60.60.200 port=2222 user=YOUR-ADMIN-USER /system ssh address=10.60.60.201 port=2222 user=YOUR-ADMIN-USER ``` 脚本处理:网桥设置,静态 IP,NTP,时区,服务加固, DNS allow-remote-requests 已禁用,MAC 服务器锁定,CAP 模式。 **AP 链**:Router ether10 → mAP2nD-1 ether1 → mAP2nD-1 ether2 → wAP2nD-1 ether1 ## 从出厂重置恢复 1. 导入配置:`System → Files → Upload rb3011-config.rsc` 然后从终端执行 `/import rb3011-config.rsc` 2. 设置 PPPoE 用户名:`/interface pppoe-client set pppoe-wan user=YOURUSERNAME` 3. 在容器环境变量中设置 Pi-hole API 密码 4. 设置 LCD PIN:`/lcd pin set pin-number=YOURPIN` 5. 设置 SNMP community:`/snmp community set [find default=yes] name=YOURSTRING` 6. 设置 WiFi 密码:`/caps-man security set [find name=wifi-sec] passphrase=YOURPASS` 7. 启用 usb-check 调度器:`/system scheduler enable usb-check` 8. 如有需要,从 USB 备份恢复 Pi-hole 数据 ## 重要说明 - WiFi 密码 — 存储在路由器的 `/caps-man security` 中,不在仓库中 - Pi-hole API 密码 — 存储在 `/container envs` 中,不在仓库中 - SNMP community 字符串 — 在路由器上,不在仓库中 - LCD PIN — 在路由器上,不在仓库中 - PPPoE 用户名 — 在路由器上,不在仓库中 - WireGuard 私钥 — 不由 RouterOS 导出 - 每周加密备份密码 — 请妥善保管,不存储在此仓库的任何地方 - 每日 RSC 备份为文(PPPoE 用户名可见) — 仅存储在 USB SSD 上 - ISP 当前为 CGNAT (`10.71.x.x`) — 游戏服务器端口转发规则已就位,但在 ISP 提供公共 IP 之前处于非活动状态 - RouterOS 版本:**7.22.1** (稳定版, 2026-03-23) ## 文档 | 文档 | 内容 | |-----|---------| | [network-layout.md](docs/network-layout.md) | 物理端口,VLAN,IP,DHCP 池,VLAN 间规则,WiFi,WAN | | [services.md](docs/services.md) | Pi-hole, Back to Home VPN, AMP, The Dude, USB 结构, 备份, SNMP | | [security.md](docs/security.md) | 防火墙链,DDoS,SSH 暴力破解阶梯,端口扫描检测,加固 | | [monitoring.md](docs/monitoring.md) | Prometheus, Loki, Grafana 仪表板,日志管道,InfluxDB schema | | [beeper-alerts.md](docs/beeper-alerts.md) | 所有告警脚本,调度器,netwatch 表,启动音乐系统 | | [servers.md](docs/servers.md) | 服务器 NIC 绑定,NetworkManager 设置,iDRAC 配置,故障转移测试 | | [troubleshooting.md](docs/troubleshooting.md) | 常见问题,CAPsMAN 技巧,RouterOS 7.22 语法说明,蜂鸣器注意事项 |
标签:CAPsMAN, CGNAT, CISA项目, Dell PowerEdge, DNS广告拦截, Docker容器, Fedora, Grafana监控, Home Lab, idrac, IP 地址批量处理, Linux服务器, MikroTik, PE 加载器, Pi-hole, Portainer, PPPoE, Raspberry Pi, RB3011UiAS, RouterOS, Unbound, VLAN, VPN, WiFi控制器, WireGuard, 内存执行, 存储服务器, 家庭实验室, 插件系统, 攻击面发现, 游戏服务器, 系统加固, 网络分段, 网络安全, 网络安全, 网络架构, 自定义请求头, 虚拟局域网, 请求拦截, 路由器配置, 运维, 防火墙, 隐私保护, 隐私保护