今天的波兰鸡不是ssh不上去了吗,发帖提问了一下,好几个大佬说有可能是warp的原因,有大佬回帖说设置一个计划任务脚本可解决,在gemini帮助一下,写了这个脚本,已经测试成功运行了如图所示
把搭建的过程发出来,给有需要的人使用。
Debian 12 下 Cloudflare WARP 连接自动守护教程
一、 概述
本教程旨在为一台纯IPv6环境的Debian 12服务器,在使用 fscarmen/warp 脚本或其他方式配置了Cloudflare WARP以获取IPv4访问能力后,部署一套健壮的自动化监控与重启机制。该机制能有效解决因WARP连接不稳定(假死、路由黑洞)导致的整机IPv4网络中断问题。
核心原理: 通过cron定时任务,周期性地运行一个检查脚本。该脚本通过ping一个稳定的外部IPv4地址来判断网络连通性。一旦发现网络中断,脚本将自动执行wg-quick down和wg-quick up命令,以干净、彻底的方式重建WARP隧道和路由,从而恢复网络。
二、 前提条件
一台Debian 12服务器。
已通过
fscarmen/warp或其他方式安装并配置好Cloudflare WARP,且当前可以访问IPv4网络。拥有服务器的
root权限或sudo权限。确认你的WireGuard接口名。通常,
fscarmen/warp脚本创建的接口名为warp。验证方法 #1:
ls -l /etc/wireguard/,查找名为warp.conf的文件。验证方法 #2:
sudo wg show,查看interface:字段显示的名称。
三、 部署步骤
步骤 1:创建核心检查脚本 (check_warp.sh)
这是整个自动化系统的“大脑”。我们将使用cat <<'EOF'这种最可靠的方式创建文件,以杜绝任何格式错误。
在你的终端中,粘贴并执行以下整行命令。它会开始一个“Here Document”输入模式。
sudo tee /usr/local/bin/check_warp.sh > /dev/null <<'EOF'立即粘贴以下完整的脚本代码到终端中。
#!/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粘贴完毕后,按一下回车,然后输入大写的
EOF,再按一次回车,以结束输入并创建文件。EOF为新创建的脚本赋予执行权限。
sudo chmod +x /usr/local/bin/check_warp.sh
步骤 2:设置 Cron 定时任务
这是命令系统定时执行脚本的步骤。
以
root用户身份打开crontab编辑器。sudo crontab -e如果是首次打开,系统会提示选择编辑器,推荐选择
nano(通常是选项1),因为它最简单易用。在打开的文件的最底部,添加以下这行规则。
*/5 * * * * /usr/local/bin/check_warp.sh规则解释:
*/5 * * * *意为“每5分钟执行一次”。/usr/local/bin/check_warp.sh是要执行的命令的绝对路径。保存并退出编辑器。
Nano 编辑器: 按
Ctrl + X,然后按Y,最后按Enter。Vim 编辑器: 按
Esc,然后输入:wq,最后按Enter。
成功退出后,系统会提示
crontab: installing new crontab,表示任务已成功安装。
四、 验证与监控
部署完成后,必须验证其是否正常工作。
手动执行测试:
立即手动运行一次脚本,确保脚本本身没有语法或权限错误。
sudo /usr/local/bin/check_warp.sh你应该能在屏幕上看到清晰的、无错误的日志输出。
检查 Cron 执行日志:
等待超过5分钟,让
cron至少有一次执行机会。然后,通过查看日志文件来确认cron是否已按时执行脚本。tail -n 20 /var/log/warp_check.log你应该能看到多个时间戳相隔约5分钟的日志块,这证明自动化任务已在后台正常运行。
系统日志排错(备用):
如果
warp_check.log没有按时更新,可以查看系统日志中cron的活动记录来排查问题。sudo grep -i 'cron\|check_warp' /var/log/syslog
评论 (0)