动态DNS:

目的:通过固定域名 访问  路由/家庭内网提供的服务

条件:

家庭具有动态公网IP内网设备  

软理由或路由器可以执行脚本

软路由设置动态DNS时,有的么有提供cloudflare,可以使用以下脚本,动态更新域名指向家庭公网IP。

#! /bin/bash

# ddns.cloudflare.v4.sh

# API doc: https://api.cloudflare.com/#dns-records-for-a-zone-update-dns-record
# cloudflare config.
email=???@gmail.com #替换邮箱
key=???  #https://dash.cloudflare.com/profile/api-tokens
subdomain=ddns.yourdomain.com #替换你的域名

# get from https://dash.cloudflare.com request when change dns.
zone_id=85c1ef2a12d0375df4942ed4a0?????? #替换
identifier=eaa608d50943c72126dbb922?????? #替换

# Get Ip By Curl
getip="https://api.ipify.org/"
ip=$(curl "$getip")

#ip=$(ifconfig pppoe-vwan1 |  grep 'inet addr:' | awk -F: '{print $2}' | awk '{print$1}')
# https://jaminzhang.github.io/shell/the-problem-of-curl-commit-json-data-include-shell-variables/
curl -X PUT "https://api.cloudflare.com/client/v4/zones/${zone_id}/dns_records/${identifier}" \
     -H "X-Auth-Email: ${email}" \
     -H "X-Auth-Key: ${key}" \
     -H "Content-Type: application/json" \
     --data '{"type":"A","name":"'"${subdomain}"'","content":"'"${ip}"'","ttl":120,"proxied":false}'

把上面的内容复制到一个文件中,并给予执行权限,设置crontab为开启/重启执行即可。

vi ddns.sh
chmod +x ddns.sh
crontab -e
# @reboot /path/to/ddns.sh