🛡️ IP-Sentinel 中枢司令部:暗网级异地容灾系统 SOP 手册 (v1.0)
📑 架构概述 (Architecture Overview)
本系统采用 “本地快照打包 + Cloudflare Zero Trust 加密隧道 + 群晖 WebDAV 接收 + Rclone 状态同步” 架构。 实现主控服务器每日凌晨 3:00 自动打包核心数据,静默穿透公网,精准投递至群晖 NAS。全链路零端口暴露,自动执行 7 天快照滚动销毁与 30 天日志轮转压缩。
🛠️ 第一阶段:接收端基建整备 (群晖 NAS & CF 隧道)
1. NAS 共享军械库建立与权限下放 (极其关键)
- 创建目录:登录群晖 DSM,在
控制面板 -> 共享文件夹中新建名为ipSentinel的文件夹。 - 权限赋予:右键
ipSentinel-> 编辑 -> 权限,确保执行备份的账号(如admin_nas)拥有 可读写 (Read/Write) 权限。 - 安装套件:在群晖“套件中心”安装并启动
WebDAV Server。 - 开启端口:打开 WebDAV Server,勾选“启用 HTTP”(默认端口
5005)。 - 应用授权:在群晖
控制面板 -> 应用程序权限 (或用户群组-应用程序)中,确保该备份账号被勾选允许使用 WebDAV Server。
2. Cloudflare 零信任加密隧道贯通
- 登录 Cloudflare Zero Trust 面板。
- 进入
Access -> Tunnels,配置群晖所在的隧道。 - 添加
Public Hostname:- Subdomain:
backup(自定义) - Domain:
yourdomain.com(您的域名) - Service Type:
HTTP - URL:
内网IP:5005(例如192.168.1.100:5005)
- Subdomain:
🚀 第二阶段:主控端引擎换装 (Linux 司令部)
1. 部署 Rclone 核心同步引擎
在 Linux 主控机终端执行一键安装:
Bash
Bash
curl https://rclone.org/install.sh | sudo bash
2. 交互式对接 WebDAV 隧道
执行 rclone config,按以下参数完成配置:
n(新建 remote)name: nas_backup (必须与后续脚本中的变量一致)Storage: 选择 webdavurl: https://backup.yourdomain.com (填入您在 CF 配置的完整域名)vendor: 选择 Otheruser: 输入群晖账号 (如admin_nas)password: 选择y,然后输入群晖密码bearer_token: 回车跳过- 一路回车至结束,按
q退出。
3. 雷达校准测试 (防空放炮验证)
执行探测命令,验证隧道连通性及 NAS 权限:
Bash
Bash
rclone lsd nas_backup:
✅ 成功标志:输出列表中必须包含 ipSentinel 文件夹。 (排障:如果报 403 或看不到目标文件夹,必须返回第一阶段复查群晖共享文件夹的“读写权限”及 WebDAV 的“应用权限”。)
⚙️ 第三阶段:容灾核心脚本注入
1. 创建并写入主控脚本
Bash
Bash
mkdir -p /opt/backup_scripts
nano /opt/backup_scripts/disaster_recovery.sh
将以下终极版战术代码完整粘贴进去:
Bash
Bash
#!/bin/bash
# ==========================================================
# 脚本名称: disaster_recovery.sh (IP-Sentinel 异地容灾系统 - 隧道版)
# 核心功能: 每日快照打包、7天滚动销毁、Rclone HTTPS 加密投递
# ==========================================================
# --- [1. 战区配置参数] ---
SOURCE_DIR="/opt/ip_sentinel_master"
LOCAL_BACKUP_DIR="/opt/backup_archives"
# Rclone 配置文件中的命名
RCLONE_REMOTE="nas_backup"
# 群晖上已授权可读写的实际共享文件夹名称
NAS_TARGET_DIR="/ipSentinel"
# ----------------------------------------------------------
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$LOCAL_BACKUP_DIR"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 🚀 隧道版异地容灾程序启动..."
# 1. 安全快照打包
ARCHIVE_NAME="master_snapshot_${DATE}.tar.gz"
echo "📦 正在生成当日司令部数据快照: $ARCHIVE_NAME"
tar -czf "${LOCAL_BACKUP_DIR}/${ARCHIVE_NAME}" -C $(dirname "$SOURCE_DIR") $(basename "$SOURCE_DIR") > /dev/null 2>&1
# 2. 本地滚动销毁 (严格保留 7 天)
echo "🧹 正在肃清本地 7 天前的历史快照..."
find "$LOCAL_BACKUP_DIR" -name "master_snapshot_*.tar.gz" -type f -mtime +7 -exec rm -f {} \;
# 3. Rclone 隧道镜像投递 (Sync 同步模式)
echo "📡 正在通过 Cloudflare 加密隧道投递至群晖阵列..."
rclone sync "${LOCAL_BACKUP_DIR}/" "${RCLONE_REMOTE}:${NAS_TARGET_DIR}/" > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ 容灾快照已安全穿透 CF 隧道,着陆于群晖 NAS!"
else
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ❌ 隧道传输受阻,请检查 Rclone 配置或 CF 隧道状态!"
fi
2. 解除系统保险 (赋予执行权)
Bash
Bash
chmod +x /opt/backup_scripts/disaster_recovery.sh
⏰ 第四阶段:自动化巡航与自净系统部署
1. 强制注入系统级定时任务 (Cron)
一键挂载至系统,每天凌晨 03:00 准时起飞:
Bash
Bash
(crontab -l 2>/dev/null; echo "0 3 * * * /bin/bash /opt/backup_scripts/disaster_recovery.sh >> /var/log/sentinel_backup.log 2>&1") | crontab -
2. 挂载日志轮转自洁系统 (Logrotate)
防止日志无限膨胀,严格控制为 30 天生命周期,自动压缩:
Bash
Bash
cat > /etc/logrotate.d/sentinel_backup << 'EOF'
/var/log/sentinel_backup.log {
daily
rotate 30
missingok
notifempty
copytruncate
compress
delaycompress
}
EOF
🚑 第五阶段:战备恢复协议 (Disaster Recovery Protocol)
当司令部遭遇物理毁灭或数据清空时,请立即启动此协议进行“满血复活”:
- 提取火种:登录群晖 NAS,进入
ipSentinel文件夹,下载最新的一份master_snapshot_XXXXXXXX.tar.gz压缩包。 - 转移阵地:将压缩包通过 SSH 或 SFTP 上传至新 Linux 司令部的
/opt/目录下。 - 浴火重生:在新服务器终端执行解压指令:Bash
tar -xzf /opt/master_snapshot_XXXXXXXX_XXXXXX.tar.gz -C /opt/ - 全线唤醒:解压完毕后,原有的
/opt/ip_sentinel_master目录将原样恢复(包括所有的密钥、配置、数据库),重新启动主控进程,全球所有探针节点将自动无缝接管回援!
[SOP 归档完毕 – IP-Sentinel 容灾基建组]
