如何为动态 IP|NAT VPS 部署固定域名

tengxunyun cera

现在动态 IP 以及 NAT VPS 主机越来越受欢迎,一方面满足了业务的需求,但另一方面也带来一个问题,就是 IP 不固定不好开展业务。比如建个站指向好了,下一刻主机却 IP 变了,此时便要去更新 DNS,更新了过一段时间发现 IP 又变了,又去更新 DNS,如此反复,十分累人。本文将探讨当 IP 发生变动时如何自动更新域名指定 IP。

目前的思路是 VPS 主机自动检测外网 IP 变动,当变了时自动去更新 DNS 记录。在这思路下,方案是可以通过运行脚本检测,并通过 DNS API 触发更新,支持 API 更新的有 CloudFlare、阿里云解析等 DNS 托管。以下以 CloudFlare 为例说明。

脚本说明

直接放上脚本:

#!/bin/bash

# 根据实际修改以下字段值
auth_email="[email protected]"    # CloudFlare 注册邮箱
auth_key="c2547eb745079dac9320b638f5e225cf483cc5cfdda41"   # API Key
zone_name="example.com"   # 要做指向的根域名
record_name="www.example.com"   # 要做指向的记录

# 根据需要修改
ip=$(curl -s http://ipv4.icanhazip.com)   # 获取外网 IP
ip_file="ip.txt"  # IP 自动检测记录
id_file="cloudflare.ids"  # CloudFlare 验证文件
log_file="cloudflare.log"  # CloudFlare API 执行日志

# 日志格式
log() {
    if [ "$1" ]; then
        echo -e "[$(date)] - $1" >> $log_file
    fi
}

# 检测
log "Check Initiated"

if [ -f $ip_file ]; then
    old_ip=$(cat $ip_file)
    if [ $ip == $old_ip ]; then
        echo "IP has not changed."
        exit 0
    fi
fi

if [ -f $id_file ] && [ $(wc -l $id_file | cut -d " " -f 1) == 2 ]; then
    zone_identifier=$(head -1 $id_file)
    record_identifier=$(tail -1 $id_file)
else
    zone_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$zone_name" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 )
    record_identifier=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records?name=$record_name" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json"  | grep -Po '(?<="id":")[^"]*')
    echo "$zone_identifier" > $id_file
    echo "$record_identifier" >> $id_file
fi

update=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$zone_identifier/dns_records/$record_identifier" -H "X-Auth-Email: $auth_email" -H "X-Auth-Key: $auth_key" -H "Content-Type: application/json" --data "{\"id\":\"$zone_identifier\",\"type\":\"A\",\"name\":\"$record_name\",\"content\":\"$ip\"}")

if [[ $update == *"\"success\":false"* ]]; then
    message="API UPDATE FAILED. DUMPING RESULTS:\n$update"
    log "$message"
    echo -e "$message"
    exit 1 
else
    message="IP changed to: $ip"
    echo "$ip" > $ip_file
    log "$message"
    echo "$message"
fi

直接下载脚本

# wget --no-check-certificate https://zhujiwiki.comhttps://tc-gz-1252597704.cosgz.myqcloud.com/uploads/2018/07/CloudFlareDDNS/cloudflare-update-record.sh > /root/ddns.sh

定期执行

比如上述脚本保存到 /root/ddns.sh,先增加执行权限

# chmod +x /root/ddns.sh   

手动单次执行:

# bash ddns.sh

利用 Crontab 任务定期指定:

# crontab -e

键盘上敲 i 进入编辑,添加如下字段:

*/5 * * * * bash /root/ddns.sh

这段代码的意思是每 5 分钟执行一次检测。

cera aliyun tengxunyun cloudiplc

相关推荐

Tokyonline测评|优惠码|日本东京|KDDI|VPS

日本商家 #Tokyonline#今天在TG发来了最新OFF,他家销售日本东京So-Net小鸡补货了,原生IP和大流量是卖点,最低配2核,4G内存,80G  HDD硬盘,15T流量@400M带宽,月付$117.85美元,索尼So-Net旗下的nuro,路由也优化了,国内过去,电信和联通去程都走IIJ,回程都走#KDDI#,而移动去程绕美#PCCW#,回程走twgate,直连的话,电信联通可以食用,当然做落地也是挺香的,毕竟是纯日本原生IP,所以基本就是全解锁日本的资源了,什么煤炉啊,dmm,niconico,abematv等,以及各种手游啊,适合对流量和IP有需求的朋友。对国人友好,支持支付宝和国内信用卡,IP暂时可以解锁日本所有资源,有需要自己考虑,具体请查看 Offer: KDDI – Pro CPU:2 vCPU 内存:4GB RAM 硬盘:50GB SAS-HDD 带宽流量:25T Transfer Data 300Mbps Port Speed 价格:19800.00 JPY/ Month 购买链接 系统配置信息 CPU Model : Intel Xeon E3-12xx v2 (Ivy Bridge, IBRS) CPU Cores : 2 Cores 2499.998 MHz x86_64 CPU Cache : 4096 KB OS : Debian GNU/Linux 10 (64 Bit) KVM …

misaka测评|优惠码|南非|约翰内斯堡|VPS|测评记录

misaka.io 南非约翰内斯堡 VPS 测评记录 #misaka#.io 国人知名商家,采用自研面板,技术能力较为出众。本次测试使用的是 misaka 核心区域南非约翰内斯堡 VPS 进行。 配置价格 系统信息 -> System Information OS Release: Debian GNU/Linux “Buster” 10.9 (x86_64) CPU Model: Intel Xeon Processor (Skylake, IBRS) 2.69 GHz CPU Cache Size: 16384 KB CPU Number: 1 vCPU Virt Type: KVM Memory Usage: 118.80 MB / 975.59 MB Swap Usage: [ No Swapfile …

DedicatedSolution测评|优惠码|香港CMI

DedicatedSolution 香港 CMI 线路独服测试记录 Offer 信息 CPU:E3 1260L 内存:16GB DDR3 ECC 硬盘:240GB SATA SSD 带宽:#50Mbps# CMI IP:1 IPv4 价格:390.00CNY/Monthly + 50 CNY Setup fee 直达链接 额外带宽:950CNY/100M 额外 IP:1USD/1 IPv4 系统信息 -> System Information OS Release: CentOS Linux 7.4.1708 (x86_64) CPU Model: Intel(R) Xeon(R) CPU E31260L @ 2.40GHz 1.61~2.46 GHz CPU Cache Size: 8192 KB CPU …

lcloud测评|优惠码|零云沪港|IPLC|灵车测评

lcloud.net 零云沪港 IPLC 灵车测评 国内商家 UOVZ 发布了新的 offer,子品牌零云(www.lcloud.net)上架了#沪港# IPLC 灵车 Offer 祝大家六一儿童节快乐。 开个儿童节灵车吧 https://www.lcloud.net/cart?fid=2&gid=1 沪港 IPLC NAT,儿童节敏感期可用,以后可能所有的灵车产品均在此站发布。 要实名 要绑手机 系统信息 -> System Information OS Release: CentOS Linux 7.8.2003 (x86_64) CPU Model: Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz 2.69 GHz CPU Cache Size: 16384 KB CPU Number: 1 vCPU Virt Type: KVM Memory Usage: 94.66 …

微信扫一扫,分享到朋友圈

如何为动态 IP|NAT VPS 部署固定域名