动态域名解析(DDNS)的核心思想在于,当客户端(通常是您的家庭网络或服务器)的公共 IP 地址发生变化时,它能够主动地将这个新的 IP 地址告知域名服务提供商。这样,即使您的 IP 地址是动态的,您的域名也能始终指向最新的 IP 地址,从而保证服务的连续性。
本脚本旨在简化 NameCheap 用户的 DDNS IP 地址更新过程。
1. 简易 IP 更新脚本 #
以下是一个使用 curl
命令实现的简单 Bash 脚本,用于向 NameCheap 的动态 DNS 服务发送更新 IP 地址的请求。
Bash
#!/bin/bash
HOST="your_subdomain"
DOMAIN="yourdomain.com"
PASSWORD="YOUR_API_KEY"
IP=$(curl -s https://checkip.amazonaws.com)
curl "https://dynamicdns.park-your-domain.com/update?host=$HOST&domain=$DOMAIN&password=$PASSWORD&ip=$IP"
请务必将脚本中的以下占位符替换为您的实际信息:
your_subdomain
: 您需要动态更新 IP 地址的子域名(例如,home
)。如果需要更新根域名,通常设置为@
。yourdomain.com
: 您的域名。YOUR_API_KEY
: 您在 NameCheap 账户中获取的 API 密钥,用于进行动态 DNS 更新的身份验证。
脚本工作原理:
- 获取当前 IP 地址: 脚本首先使用
curl
命令访问https://checkip.amazonaws.com
这个服务,该服务会返回客户端的公共 IP 地址,并将其存储在IP
变量中。 - 构建更新 URL: 脚本然后使用
curl
命令向 NameCheap 的动态 DNS 更新接口发送一个 HTTP GET 请求。请求的 URL 包含了您的主机名 (host
)、域名 (domain
)、API 密钥 (password
) 以及获取到的当前 IP 地址 (ip
)。 - 发送更新请求:
curl
命令将构建好的 URL 发送给 NameCheap 的服务器。
2. 功能测试 #
赋予执行权限。如果您将脚本保存为 ./namecheap-ddns-client.sh
,执行:
Bash
sudo chmod +x ./namecheap-ddns-client.sh
执行脚本:
Bash
bash ./namecheap-ddns-client.sh
如果您的 API 密钥、主机名和域名配置正确,并且更新成功,NameCheap 的服务器通常会返回一个 XML 格式的响应,其中 <ErrCount>
标签的值为 0
,<Done>
标签的值为 true
。一个成功的响应示例如下:
XML
<?xml version="1.0" encoding="utf-16"?>
<interface-response>
<Command>SETDNSHOST</Command>
<Language>eng</Language>
<IP>22.33.44.55</IP>
<ErrCount>0</ErrCount>
<errors />
<ResponseCount>0</ResponseCount>
<responses />
<Done>true</Done>
<debug><![CDATA[]]></debug>
</interface-response>
请注意,<IP>
标签中的值是您执行脚本时机器的公共 IP 地址。如果 <ErrCount>
大于 0
或者 <Done>
的值为 false
,则表示更新失败,您需要检查脚本中的配置信息是否正确。
有用的链接
NameCheap:How to dynamically update the host’s IP with an HTTPS request?