『教程』在NAT VPS中自建DDNS[更新CF脚本]
最近Nathosts商家突然宣布开始取消免费DDNS服务,后台仅提供当前服务器IP查看,对于用户来说,不可能每时每刻去检测母鸡的IP是否改变。
对于商家来说,最近的HKT/HKBN受攻击事件,让商家运维成本大大增加,所以取消DDNS服务,可在一定程度上保证母鸡免被攻击。
而在NAT VPS上自建DDNS,能实时更新域名指向的母鸡IP,减少用户查看IP的次数。
本次教程以Nathosts家的HKBN NAT VPS为测试机型,来进行搭建,VPS系统为Debian9 X64
前提条件
要自建DDNS服务,首先必须要有自己的域名,另外就是使用阿里云解析、DNSPOD云解析、Cloudflare云解析等服务,教程以Cloudflare云解析为例子。
获取CFKEY
打开网页:https://dash.cloudflare.com/profile
在页面下方找到【Global API Key】,点击右侧的View查看Key,并保存下来
设置用来DDNS解析的二级域名
以Nathosts为例,先在控制面板找到目前母鸡的IP,然后到Cloudflare中新建一个A记录,如:ddns.yourdomain.com,指向母鸡当前的IP
下载脚本
※脚本来自Github
1
|
wget https://gist.github.com/larrybolt/6295160/raw/c634c48c001a411240fc78147949a6a32e1de370/cf-ddns.sh
|
2018/07/01更新脚本
这几天CF貌似停用了之前脚本的API,下面这个脚本修改了API的相关接口,设置依然可按照本教程的来设置
1
|
wget https://raw.githubusercontent.com/yulewang/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh
|
获取WANIPSITE网址
这里需要填写一个能返回当前母鸡IP的网页地址,下面提供一些
1
2
3
4
5
6
7
8
9
|
$ curl ifconfig.me
$ curl icanhazip.com
$ curl ident.me
$ curl ipecho.net/plain
$ curl whatismyip.akamai.com
$ curl tnx.nl/ip
$ curl myip.dnsomatic.com
$ curl ip.appspot.com
$ curl –s checkip.dyndns.org | sed ‘s/.*IP Address: \([0–9\.]*\).*/\1/g’
|
自己在SSH里看看哪个网址能返回母鸡IP的,而且是仅返回IP,不能有其他内容,我自己测试了myip.dnsomatic.com这个域名能使用。
填写相关信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# API key, see https://www.cloudflare.com/a/account/my-account,
# 上一步获取的CFKEY
CFKEY=
#输入你需要解析用来DDNS解析的根域名 eg: example.com
CFZONE=
# 暂时空着
CFID=
# 登陆CF的Username, eg: user@example.com
CFUSER=
# 填写用来DDNS解析的二级域名,与上面设置的要一致, eg: ddns.yourdomain.com
CFHOST=
# Cloudflare TTL for record, between 120 and 86400 seconds
CFTTL=3600
# Get domain ID from Cloudflare using awk/sed and python json.tool
GETID=true
# Ignore local file, update ip anyway
FORCE=false
# 填写上一步能正确返回母鸡IP的网址, other examples are: bot.whatismyipaddress.com, https://api.ipify.org/ …
WANIPSITE=“myip.dnsomatic.com”
|
运行脚本
1
2
|
chmod +x cf–ddns.sh
./cf–ddns.sh
|
记录CFID
第一次运行后,会显示你用于DDNS解析的二级域名的CFID,记录下来
将CFID填入到配置文件中的CFID处
再次运行脚本
1
|
./cf–ddns.sh
|
不出意外的话,会显示当前母鸡的IP
设置定时任务
设置定时任务后,就完全自动化更改域名指向的IP
1
2
3
|
crontab –e
#不知道这样写对不对
0 * * * * /root/cf–ddns.sh >/dev/null 2>&1
|