今天的波兰鸡不是ssh不上去了吗,发帖提问了一下,好几个大佬说有可能是warp的原因,有大佬回帖说设置一个计划任务脚本可解决,在gemini帮助一下,写了这个脚本,已经测试成功运行了如图所示

把搭建的过程发出来,给有需要的人使用。

Debian 12 下 Cloudflare WARP 连接自动守护教程

一、 概述

本教程旨在为一台纯IPv6环境的Debian 12服务器,在使用 fscarmen/warp 脚本或其他方式配置了Cloudflare WARP以获取IPv4访问能力后,部署一套健壮的自动化监控与重启机制。该机制能有效解决因WARP连接不稳定(假死、路由黑洞)导致的整机IPv4网络中断问题。

核心原理: 通过cron定时任务,周期性地运行一个检查脚本。该脚本通过ping一个稳定的外部IPv4地址来判断网络连通性。一旦发现网络中断,脚本将自动执行wg-quick downwg-quick up命令,以干净、彻底的方式重建WARP隧道和路由,从而恢复网络。

二、 前提条件

  1. 一台Debian 12服务器。

  2. 已通过fscarmen/warp或其他方式安装并配置好Cloudflare WARP,且当前可以访问IPv4网络。

  3. 拥有服务器的root权限或sudo权限。

  4. 确认你的WireGuard接口名。通常,fscarmen/warp脚本创建的接口名为warp

    • 验证方法 #1: ls -l /etc/wireguard/,查找名为warp.conf的文件。

    • 验证方法 #2: sudo wg show,查看interface:字段显示的名称。

三、 部署步骤

步骤 1:创建核心检查脚本 (check_warp.sh)

这是整个自动化系统的“大脑”。我们将使用cat <<'EOF'这种最可靠的方式创建文件,以杜绝任何格式错误。

  1. 在你的终端中,粘贴并执行以下整行命令。它会开始一个“Here Document”输入模式。

    sudo tee /usr/local/bin/check_warp.sh > /dev/null <<'EOF'
  2. 立即粘贴以下完整的脚本代码到终端中。

    #!/bin/bash# ================================================================= ## check_warp.sh - 检查并自动重启Cloudflare WARP连接的守护脚本   ## 版本: 1.3 - 最终救援版                                          ## ================================================================= ## --- 配置区 ---CHECK_IP="8.8.8.8"INTERFACE_NAME="warp"LOG_FILE="/var/log/warp_check.log"# --- 内部函数 ---log_message() {    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a ${LOG_FILE}}# --- 主逻辑开始 ---log_message "任务启动:开始执行WARP网络连通性检查..."if ping -c 1 -W 2 ${CHECK_IP} >/dev/null 2>&1; then    log_message "状态正常:IPv4网络通畅 (ping ${CHECK_IP} 成功)。无需任何操作。"else    log_message "故障告警:IPv4网络中断 (ping ${CHECK_IP} 失败)!"    log_message "执行修复:准备重启 '${INTERFACE_NAME}' 接口..."        log_message "--> 正在关闭接口: wg-quick down ${INTERFACE_NAME}"    /usr/bin/wg-quick down ${INTERFACE_NAME} >> ${LOG_FILE} 2>&1        sleep 5        log_message "--> 正在启动接口: wg-quick up ${INTERFACE_NAME}"    /usr/bin/wg-quick up ${INTERFACE_NAME} >> ${LOG_FILE} 2>&1        log_message "修复操作完成。等待5秒后进行验证..."    sleep 5        if ping -c 1 -W 3 ${CHECK_IP} >/dev/null 2>&1; then        log_message "验证成功:WARP服务重启后,IPv4网络已恢复!"    else        log_message "验证失败:重启后IPv4网络仍未恢复!请手动登录服务器检查!"    fifilog_message "任务结束。"echo "------------------------------------------------------" | tee -a ${LOG_FILE}exit 0
  3. 粘贴完毕后,按一下回车,然后输入大写的EOF,再按一次回车,以结束输入并创建文件。

    EOF
  4. 为新创建的脚本赋予执行权限。

    sudo chmod +x /usr/local/bin/check_warp.sh

步骤 2:设置 Cron 定时任务

这是命令系统定时执行脚本的步骤。

  1. root用户身份打开crontab编辑器。

    sudo crontab -e

    如果是首次打开,系统会提示选择编辑器,推荐选择nano(通常是选项1),因为它最简单易用。

  2. 在打开的文件的最底部,添加以下这行规则。

    */5 * * * * /usr/local/bin/check_warp.sh

    规则解释: */5 * * * * 意为“每5分钟执行一次”。/usr/local/bin/check_warp.sh 是要执行的命令的绝对路径。

  3. 保存并退出编辑器。

    • Nano 编辑器:Ctrl + X,然后按 Y,最后按 Enter

    • Vim 编辑器:Esc,然后输入 :wq,最后按 Enter

    成功退出后,系统会提示 crontab: installing new crontab,表示任务已成功安装。

四、 验证与监控

部署完成后,必须验证其是否正常工作。

  1. 手动执行测试:

    立即手动运行一次脚本,确保脚本本身没有语法或权限错误。

    sudo /usr/local/bin/check_warp.sh

    你应该能在屏幕上看到清晰的、无错误的日志输出。

  2. 检查 Cron 执行日志:

    等待超过5分钟,让cron至少有一次执行机会。然后,通过查看日志文件来确认cron是否已按时执行脚本。

    tail -n 20 /var/log/warp_check.log

    你应该能看到多个时间戳相隔约5分钟的日志块,这证明自动化任务已在后台正常运行。

  3. 系统日志排错(备用):

    如果warp_check.log没有按时更新,可以查看系统日志中cron的活动记录来排查问题。

    sudo grep -i 'cron\|check_warp' /var/log/syslog