瞬间加密机场-最专业的加密线路-节点多-稳定墙-可游戏-可业务使用

找回密码
立即注册
发新帖

-2

积分

0

好友

0

主题
发表于 2025-3-9 03:11:04 | 查看: 9| 回复: 0
VPN-加速器-翻墙论坛免责声明
资料来源均来着网友自发行为,如出现问题请自行联系负责人,自行判别真伪
之前我们写过一个自动检测被墙并更换IP的脚本,但是那是在境外vps运行,并且只针对墙IP的情况的,无法解决墙端口不墙IP的问题,要解决这个问题还是得在境内机上跑脚本。
前提


  • 境外vps已经做好了DDNS
  • 境内vps可以通过密钥登录境外vps
脚本

这里我们分三种情况:
DDNS+公网api

#!/bin/bash# 配置部分DOMAIN="你的DDNS域名"  # 直接用域名检测端口PORT=xxx  # 你要检测的端口CHANGE_IP_API="xxx"  # IP更换apiCHECK_INTERVAL=10  # 检测间隔(秒)RETRY_AFTER_CHANGE=600  # 换 IP 后,等待 600 秒(10分钟),给 DDNS 时间更新# 端口检测方法(从国内服务器检测 DDNS 绑定的 VPS)check_tcp() {    timeout 5 nc -z -v $DOMAIN $PORT &>/dev/null    return $?  # 返回 0 说明端口通,返回 1 说明端口被墙}while true; do    echo "$(date) - 检测 $DOMAINPORT"    if ! check_tcp; then        echo "$(date) - 端口 $PORT 被墙,正在更换 IP..."        curl -s "$CHANGE_IP_API"  # 触发换 IP        echo "$(date) - 换 IP 请求已发送,等待 $RETRY_AFTER_CHANGE 秒,等待 DDNS 更新..."        sleep $RETRY_AFTER_CHANGE  # 避免频繁请求 API,确保 DDNS 有时间同步 IP    else        echo "$(date) - 端口 $PORT 正常"    fi    sleep $CHECK_INTERVAL  # 每 10 秒检测一次done
DDNS+内网API

#!/bin/bash# 配置部分DOMAIN="DDNS域名"  # 你的 DDNS 域名PORT=xxxx  # 你要检测的端口VPS_SSH="root@$DOMAIN -p xxx"  # 使用 DDNS 域名和端口 xxx 登录外网 VPSAPI_CMD="curl -s xxx"  # 触发换 IP 的命令(内网)CHECK_INTERVAL=10  # 检测间隔(秒)RETRY_AFTER_CHANGE=600  # 换 IP 后,等待 600 秒(10分钟),给 DDNS 时间更新# 端口检测方法(通过 DDNS 域名检测端口)check_tcp() {    timeout 5 nc -z -v $DOMAIN $PORT &>/dev/null    return $?  # 返回 0 说明端口通,返回 1 说明端口被墙}while true; do    echo "$(date) - 检测 $DOMAINPORT"    if ! check_tcp; then        echo "$(date) - 端口 $PORT 被墙,正在通知外网 VPS 更换 IP..."                # 使用 SSH 执行远程命令更换 IP        ssh -o StrictHostKeyChecking=no $VPS_SSH "$API_CMD"                echo "$(date) - IP 更换请求已发送,等待 $RETRY_AFTER_CHANGE 秒,等待 DDNS 更新..."        sleep $RETRY_AFTER_CHANGE  # 每次更换 IP 后,等待 600 秒(10 分钟)避免频繁请求 API    else        echo "$(date) - 端口 $PORT 正常"    fi    sleep $CHECK_INTERVAL  # 每 10 秒检测一次done
公网IP获取API+公网IP更改API

#!/bin/bash# 配置部分PORT=xxxx  # 需要检测的端口CHANGE_IP_API="xxx"  # IP更换apiSHOW_IP_API="xxx"  # IP获取apiCHECK_INTERVAL=10  # 检测间隔(秒)RETRY_AFTER_CHANGE=600  # 换 IP 后,等待 600 秒(10分钟)再查询新 IP,避免 API 限制# 获取 VPS 当前公网 IPget_current_ip() {    curl -s "$SHOW_IP_API"}# 端口检测方法(从国内服务器检测 VPS)check_tcp() {    local ip=$1    timeout 5 nc -z -v $ip $PORT &>/dev/null    return $?  # 返回 0 说明端口通,返回 1 说明端口被墙}# 初始化当前 VPS IPVPS_IP=$(get_current_ip)echo "$(date) - 当前 VPS IP: $VPS_IP"while true; do    echo "$(date) - 检测 $VPS_IPPORT"    if ! check_tcp "$VPS_IP"; then        echo "$(date) - 端口 $PORT 被墙,正在更换 IP..."        curl -s "$CHANGE_IP_API"  # 触发换 IP        echo "$(date) - 换 IP 请求已发送,等待 $RETRY_AFTER_CHANGE 秒..."        sleep $RETRY_AFTER_CHANGE  # 避免频繁请求 API        # 获取新 IP        VPS_IP=$(get_current_ip)        echo "$(date) - 新 IP: $VPS_IP"    else        echo "$(date) - 端口 $PORT 正常"    fi    sleep $CHECK_INTERVAL  # 每 10 秒检测一次done
运行方式

复制并保存脚本为 .sh 文件。
在服务器上运行此脚本,它会每 10 秒检测一次端口,发现端口被墙时,会触发 IP 更换,且每次更换后会等待 10 分钟,避免频繁请求 API。

VPN-加速器-翻墙论坛免责声明
发现违规内容,私信联系发给管理员 (出处: VPN加速翻墙论坛)
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

Loading...

QQ|Archiver|手机版|小黑屋|翻墙-VPN-梯子-加速器论坛 ( 苏ICP备16016653号-1|苏公网安备 32031102000955号 )|网站地图|网站地图

GMT+8, 2025-4-30 18:14 , Processed in 0.597726 second(s), 35 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表