Linux简易DDNS配置教程

DDNS与其在Linux系统上的应用

1.1 DDNS是什么,其作用是什么

DDNS(Dynamic Domain Name System,动态域名系统)是一种网络服务,它可以将动态 IP 地址映射到一个静态域名上。它的作用是,让你在没有静态 IP 地址的情况下,也能够通过一个固定的域名来访问你的网络资源。

通俗地说,当你有了公网ip之后,可以直接从外部访问到本地的主机,但是通常如果不是通过专线的话,运营商会给你动态公网ip,由于动态 IP 地址的不确定性,如果直接使用动态 IP 地址来做域名解析,那么每当 IP 地址发生变化时,域名就无法与你的服务建立联系。这时,你就可以使用 DDNS 服务,将你的动态 IP 地址绑定到一个固定的域名上,并在 IP 地址变化时自动更新 DNS 记录,使得该域名总是指向你的服务所在的 IP 地址。

1.2 Linux系统中需求DDNS的情形

在 Linux 系统中,如果你需要在互联网上提供一些网络服务(如 Web 服务器、FTP 服务器等),并且你的 ISP 提供的是动态 IP 地址,那么 DDNS 可以帮助你实现固定域名访问。

具体来说,如果你在 Linux 系统上搭建了一个 Web 服务器,你需要让其他人通过域名来访问该服务器。如果你的 ISP 提供的是动态 IP 地址,那么每次 IP 地址发生变化时,你都需要手动修改域名解析,可以使用 DDNS 服务来自动完成这个过程。

准备工作:域名注册与解析

2.1 域名注册

DDNS的前置条件就是需要有一个属于你自己的域名,你可以到各大域名提供商购买域名。

2.2 如何通过DNS解析将域名指向服务器

你可以在你购买域名的提供商那里进入dns管理页面,如dnspod、阿里云dns解析等,

在 DNS 管理页面中添加 DNS 解析记录,包括 A 记录、CNAME 记录、MX 记录等。其中,A 记录是将域名直接解析成指定 IP 地址;CNAME 记录则是将域名解析成另一个域名的别名;MX 记录则是指定邮件服务器的地址等。

最后便可以保存记录并等待生效:添加完 DNS 解析记录后,需要点击保存并等待一段时间,让 DNS 服务器进行更新。通常情况下,DNS 记录的更新需要 6-24 小时,期间可以通过 ping 命令验证 DNS 解析是否生效。

安装与配置DDNS客户端

3.1 各种Linux系统上常用DDNS客户端的介绍

DDNS(Dynamic DNS)客户端是一种将动态 IP 地址映射到一个固定的域名上的工具。在 Linux 平台上,有很多不同的 DDNS 客户端可以使用。下面是几种常用的 DDNS 客户端:

  1. ddclient:ddclient 是一个支持多种 DDNS 服务商的开源 DDNS 客户端,支持 IPv4 和 IPv6 地址,并且可以运行在多种操作系统上。
  2. inadyn:inadyn 是一个基于 C 和 RPC 协议的 DDNS 客户端,可以运行在 Linux、Windows 和 macOS 等平台上。它支持多种 DDNS 服务商,并支持 IPv4 和 IPv6 地址。
  3. ez-ipupdate:ez-ipupdate 是一个简单易用的 DDNS 客户端,支持多种 DDNS 服务商,并支持 IPv4 和 IPv6 地址。它可以通过配置文件进行设置并作为后台进程运行。
  4. nsupdate:nsupdate 是一个命令行工具,可以通过 DNS 动态更新协议(RFC 2136)向 DNS 服务器提交更新记录。它可以与多种 DDNS 服务商配合使用,但需要手动编写脚本来实现 DDNS 的自动更新。
  5. ddns-scripts:ddns-scripts 是 OpenWrt 路由器上的一个 DDNS 脚本集合,包含了多个 DDNS 服务商的脚本。它可以在 Linux 系统上运行,并且可以通过配置文件进行设置。

上面的都是比较知名的DDNS客户端,但是本文选择部署比较简单的 ddns-watchdog

3.2 安装与配置ddns-watchdog客户端

3.2.1 下载

先从作者仓库下载最新的版本,https://github.com/yzy613/ddns-watchdog/releases,

如果你是64位Linux,那么应该下载 ddns-watchdog-client.linux-amd64.tar.gz

```shell
  curl -L -O https://github.com/yzy613/ddns-watchdog/releases/download/v1.5.4/ddns-watchdog-client.linux-amd64.tar.gz
3.2.2 解压
   
   ```shell
   tar zxvf ddns-watchdog-client.linux-amd64.tar.gz

执行该命令后,会在当前目录下生成一个名为 ddns-watchdog-client 的文件夹,并将压缩包中的所有文件和文件夹解压缩到该目录中。

3.2.3 进入到解压后的 ddns-watchdog-client 目录:

```shell
  cd ddns-watchdog-client
  chmod 700 ddns-watchdog-client
3.2.4 初始化所有配置文件
   
   ```shell
   ./ddns-watchdog-client -i 01234
编辑DDNS配置文件

4.1 配置文件的路径及格式

配置文件路径为 ./conf ,其中包括以下文件:

#客户端配置文件
client.json

#解析服务商配置文件
dnspod.json
alidns.json
cloudflare.json
huaweicloud.json

4.2 配置项

4.2.1 修改主配置 ./conf/client.json

如果你只是使用IPV4的DDNS,并且默认使用作者提供的查询IP的API的话,直接修改以下地方即可:

{
  "api_url": {
    "ipv4": "https://yzyweb.cn/ddns-watchdog",
    "ipv6": "https://yzyweb.cn/ddns-watchdog6",
    "version": "https://yzyweb.cn/ddns-watchdog"
  },
  "center": {
    "enable": false,
    "api_url": "",
    "token": ""
  },
  "enable": {
    "ipv4": true,	# 表示开启ipv4的ddns服务
    "ipv6": false
  },
  "network_card": {
    "enable": false,
    "ipv4": "",
    "ipv6": ""
  },
  "services": { # 选择解析服务商,这里以腾讯、阿里和couldflare为例
    "dnspod": true,	
    "alidns": true,
    "cloudflare": true,
    "huawei_cloud": false
  },
  "check_cycle_minutes": 5 # 自动检查时间 5分钟
}

4.2.2 配置腾讯dnspod解析服务,./conf/dnspod.json

{
 "id": "在 https://console.dnspod.cn/account/token/token 获取",
 "token": "在 https://console.dnspod.cn/account/token/token 获取",
 "domain": "example.com",
 "sub_domain": {
   "a": "A记录子域名",
   "aaaa": "AAAA记录子域名"
 }
}

这里以配置 example.com 的解析为例:

{
	"id": "322363",
	"token": "fb6a8123d6efd232131adcd92c4d37ea69",
	"domain": "exmaple.com",
	"sub_domain": {
		"a": "@" #这里表示使用example.com来解析 @换为其他即为二级域名
	}
}

阿里云、华为、cloudflare同理,详情见作者文档

启动程序开始解析
./ddns-watchdog-client

使用ping命令或者到解析控制台那里观察指向ip是否正确

将DDNS添加到自启动项
./ddns-watchdog-client -I 安装服务并退出 (仅限有 systemd 的 Linux 使用)

systemctl start ddns-watchdog-client 启动服务

systemctl enable ddns-watchdog-client 开机自启服务
其他命令
Usage:
  -c, --conf string    指定配置文件目录 (目录有空格请放在双引号中间)
  -f, --force          强制检查 DNS 解析记录
  -i, --init string    有选择地初始化配置文件并退出,可以组合使用 (例 01)
                       0 -> client.json
                       1 -> dnspod.json
                       2 -> alidns.json
                       3 -> cloudflare.json
                       4 -> huaweicloud.json
  -k, --insecure       使用 https 链接时不检查 TLS 证书合法性
  -I, --install        安装服务并退出
  -n, --network-card   输出网卡信息并退出
  -U, --uninstall      卸载服务并退出
  -v, --version        查看当前版本并检查更新后退出
./ddns-watchdog-client 使用默认配置文件目录 conf 运行

./ddns-watchdog-client -n 输出网卡信息并退出

./ddns-watchdog-client -c conf 指定配置文件目录为 conf (目录有空格请放在双引号中间)

./ddns-watchdog-client -I 安装服务并退出 (仅限有 systemd 的 Linux 使用)

systemctl start ddns-watchdog-client 启动服务

systemctl enable ddns-watchdog-client 开机自启服务

./ddns-watchdog-client -U 卸载服务并退出 (仅限有 systemd 的 Linux 使用)

./ddns-watchdog-client -f 强制检查解析记录值

./ddns-watchdog-client -v 查看当前版本并检查更新后退出
总结与注意事项
  1. 事先需要在官方先添加解析,不然会识别不了,如你要解析A记录,那你要先在服务提供商那里添加一个A记录的值,程序只能修改而不能直接添加。
  2. 阿里云和腾讯云的配置文件中,都可以直接用@来表示xx.com,test来表示test.xx.com等,但是在cloudflare的配置文件中,要记得写全,如:
"sub_domain": {
		"a": "example.com" #这里不能直接使用@
	}
  1. 阿里云配置需要去添加RAM账户,并且记得要授予修改DNS的权限
  2. 其他更详细的配置说明请访问项目地址:https://github.com/yzy613/ddns-watchdog