Linux简易DDNS配置教程

2023-05-16

Linux简易DDNS配置教程

  1. 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. 准备工作:域名注册与解析

    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 解析是否生效。

  3. 安装与配置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

    curl -L -O https://github.com/yzy613/ddns-watchdog/releases/download/v1.5.4/ddns-watchdog-client.linux-amd64.tar.gz
    

    3.2.2 解压

    tar zxvf ddns-watchdog-client.linux-amd64.tar.gz
    

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

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

    cd ddns-watchdog-client
    chmod 700 ddns-watchdog-client
    

    3.2.4 初始化所有配置文件

    ./ddns-watchdog-client -i 01234
    
  4. 编辑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同理,详情见作者文档

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

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

  6. 将DDNS添加到自启动项
    ./ddns-watchdog-client -I 安装服务并退出 (仅限有 systemd 的 Linux 使用)
    
    systemctl start ddns-watchdog-client 启动服务
    
    systemctl enable ddns-watchdog-client 开机自启服务
    
  7. 其他命令

    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 查看当前版本并检查更新后退出
    
  8. 总结与注意事项
    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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux简易DDNS配置教程 的相关文章

  • `/dev/urandom` 适合模拟目的吗?

    似乎在类 Unix 系统中使用纯 C fread from dev urandom是提取高质量随机字节的最简单方法 我需要运行一个每秒需要大约 10k 32 位随机数的模拟 并且可能会运行几天 是 dev urandom可以用于此目的吗 当
  • 为什么我的 sed 命令在使用变量时失败?

    使用 bash 我尝试插入日期变量并搜索该日期的日志文件 然后将输出发送到文件 如果我像这样对日期进行硬编码 它会起作用 sed n Nov 22 2010 p file gt log file 但如果我这样做就会失败 date Nov 2
  • Ruby 脚本即服务

    嗯 标题说明了一切 我有一个 ruby 脚本 我想在我的 Linux 机器上作为一项服务 我可以启动和停止 运行 我找到了如何在 Windows 上执行此操作here https stackoverflow com questions 16
  • x86-64 Linux 中不再允许使用 32 位绝对地址?

    64 位 Linux 默认使用小内存模型 将所有代码和静态数据置于 2GB 地址限制以下 这确保您可以使用 32 位绝对地址 旧版本的 gcc 对静态数组使用 32 位绝对地址 以便节省相对地址计算的额外指令 然而 这不再有效 如果我尝试在
  • find 命令的“exec”功能可以在后台启动程序吗?

    我想做这样的事情 find iname Advanced Linux Program exec kpdf 可能的 还有其他类似的方法吗 首先 它不会像你输入的那样工作 因为 shell 会将其解释为 find iname Advanced
  • 从该共享库中查找加载的共享库的位置?

    从共享库中的函数 在正在运行的进程 用 C 编写 内 我如何发现该共享库是从哪里加载的 我找到的所有答案都涉及使用诸如ldd在命令行中 或者通过查看 proc self maps 在 Win32 上 我只需使用GetModuleFileNa
  • 使用Visual C++进行Linux开发时是否可以直接使用linux文件夹/usr/include

    我尝试使用针对 ubuntu 16 04 VM 的 Visual C for Linux Development 插件 与虚拟机的连接以及本地文件传输到远程文件夹 home user projects projectx 均成功 但是 当我尝
  • 如何在 Linux 上使用 Python 导出

    我需要在 Python 中进行这样的导出 export MY DATA my export 我尝试过这样做 python mode coding utf 8 import os os system export MY DATA my exp
  • 如何使用AWK从文件中连续输出行

    我有一个多行文件 我想连续输出文件的某些行 比如第一次 从第1行打印到第5行 下次 打印第2行到第6行 依此类推 我发现 AWK 是一个非常有用的函数 我尝试自己编写代码 但它什么也没输出 以下是我的代码 bin bash for n in
  • Shell 脚本对文件进行计数,然后删除最旧的文件

    我是 shell 脚本新手 所以我需要一些帮助 我有一个充满备份的目录 如果我有超过 10 个备份文件 我想删除最旧的文件 以便仅留下 10 个最新的备份文件 到目前为止 我知道如何计算文件数 这看起来很简单 但是如果计数超过 10 我该如
  • VS Code 不会构建具有多个 .cpp 源文件的 C++ 程序

    请注意 我在 Ubuntu 17 10 上使用 VS Code 并使用 GCC 编译器 我在构建一个使用附加 cpp 文件的简单程序时遇到问题 我可能在这里遗漏了一些明显的东西 因为我对编程相当陌生 但我会解释到目前为止我所做的事情 这阻止
  • 如何在 C++ 中检查文件是否已被另一个应用程序打开?

    我知道 有is open C 中的函数 但我希望一个程序检查文件是否尚未被另一个应用程序打开 有没有办法使用标准库来做到这一点 编辑 在答案中澄清这是针对 Linux 应用程序的 不仅标准库没有这个功能 一般来说也是不可能的 你可以 在li
  • 在 Alpine Docker 容器上安装 OpenSSH

    第一次运行 alpine docker 容器并尝试 openssh 安装时 会发生以下情况 ole T docker run it rm alpine bin ash apk add openssh WARNING Ignoring APK
  • 如何在 Amazon Linux 上安装最新版本的 GDAL?

    我想安装GDAL https gdal org 在运行 Amazon Linux 的 EC2 实例上 我认为它基于 RHEL 6 如果可能的话 我想避免从源代码编译 EPEL Yum 存储库中包含的 GDAL 版本对于我的目的来说太旧了 g
  • DHCP 服务器将任何 url 重定向到登陆页面

    我有一个 Linux DHCP 服务器 我需要将所有网络流量重定向到一个登陆页面 该页面将包含有关如何在网络上注册计算机的说明 无论用户输入什么 URL 都需要将用户重定向到网页 在 DHCP 服务器上 即 用户输入 google com
  • 如何将目录路径转换为唯一的数字标识符 (Linux/C++)?

    我正在研究获取目录 文件夹 并派生某种形式的唯一数字标识符的方法 我研究了 字符串到哈希 方法 但是 鸽子洞原理 http www codinghorror com blog 2007 12 hashtables pigeonholes a
  • Shell Linux:grep 带有 NULL 字符的精确句子

    我有一个像这样的文件 key 0value n akey 0value n key2 0value n 我必须创建一个以单词作为参数的脚本 我必须返回具有与参数完全相同的键的每一行 I tried grep aF key x0 但 grep
  • Yocto for Nvidia Jetson 由于 GCC 7 而失败 - 无法计算目标文件的后缀

    我正在尝试将 Yocto 与 meta tegra 一起使用 https github com madisongh meta tegra https github com madisongh meta tegra 为 Nvidia Jets
  • Linux 中 NDIS 过滤器的类似物是什么?

    我正在研究一个as close to real time我在linux中尽可能地使用系统 并且需要在收到特定数据包后立即发送大约600 800字节的TCP数据包 为了获得最佳的延迟 我希望这个数据包直接从内核发送 而不是将接收到的数据包一直
  • 编辑 CMakeLists.txt 以使用 -fPIC 进行编译

    我正在尝试为名为 libnifalcon 的 NOVINT Falcon 安装驱动程序 我使用 cmake 创建 make 文件 但是当我运行 make 时出现错误 Linking CXX shared library lib libnif

随机推荐

  • 使用github OAuth实现用户登录

    更多文章请关注 xff1a https eightplus github io 1 在github上申请OAuth App xff0c 进入个人的Github首页 xff0c Settings gt Applications gt Deve
  • 二叉搜索树的第k大节点

    二叉搜索树的第k大节点 题目 给定一棵二叉搜索树 xff0c 请找出其中第 k 大的节点的值 示例 1 输入 root 61 3 1 4 null 2 k 61 1 3 1 4 2 输出 4 示例 2 输入 root 61 5 3 6 2
  • 关于STM32的编码器计数及溢出处理调试总结

    错误1 pc6 pc7被用作其他用途 GPIO模式配置错误 导致计数不准确 错误2 引脚模式设置错误 应该设置为GPIO Mode IPD GPIO Mode IPU nbsp GPIO Mode IN FLOATING nbsp 都可以
  • Android getResources的作用和需要注意点

    今天做一个Android的文件管理器 xff0c 里面用到很多的地方用到了getResources Drawable currentIcon 61 null currentIcon 61 getResources getDrawable R
  • 功能测试,系统测试,兼容性测试,手工测试

    功能测试 功能测试一般需要根据编写的 测试用例 xff0c 执行测试用例 xff0c 执行的过程中提交缺陷 xff1b 功能测试一般至少会有两轮 xff0c 遇到比较麻烦的项目甚至会有三到四轮 xff0c 而每一轮测试都有其侧重点 xff0
  • 古诗文本自动生成唐诗文本生成(算例代码)

    首先准备好一个本地文件 xff0c 在此我命名为唐诗三百首 txt如下图 https img blog csdnimg 图片 代码如下 span class token keyword import span numpy span clas
  • ChatGPT被淘汰了?Auto-GPT到底有多强

    大家好 xff0c 我是可夫小子 xff0c 关注AIGC 读书和自媒体 解锁更多ChatGPT AI绘画玩法 说Auto GPT淘汰了ChatGPT了 xff0c 显然是营销文案里面的标题党 毕竟它还是基于ChatGPT的API xff0
  • 案例分享:让ChatGPT充当程序员,帮你无代码实现网络爬虫

    大家好 xff0c 我是可夫小子 xff0c 关注AIGC 读书和自媒体 解锁更多ChatGPT AI绘画玩法 加 xff1a keeepdance xff0c 备注 xff1a chatgpt xff0c 拉你进群 提示 xff1a 本案
  • 插件推荐:一键保存ChatGPT对话记录GPT-EZ

    大家好 xff0c 我是可夫小子 xff0c 关注AIGC 读书和自媒体 解锁更多ChatGPT AI绘画玩法 加 xff1a keeepdance xff0c 备注 xff1a chatgpt xff0c 拉你进群 我们在与ChatGPT
  • 案例分享:ChatGPT写python脚本,轻松文本处理

    大家好 xff0c 我是可夫小子 xff0c 关注AIGC 读书和自媒体 解锁更多ChatGPT AI绘画玩法 加 xff1a keeepdance xff0c 备注 xff1a chatgpt xff0c 拉你进群 在工作中 xff0c
  • Android NDK tombstone分析工具

    Android NDK tombstone分析工具 在Andoird Native库发生异常的时候 xff0c Linux会发生不同级别的sig xff0c 来结构相关进程的运行 xff0c 同时会产生tombstone trace文件用于
  • 关于UEFI

    最近在Thinkpad上安装Ubuntu12 04的时候 xff0c 经历了几个问题 xff0c 发现BOIS里多了很多选项 xff0c 而且安装双系统也有UEFI有关 xff0c 在网站上找了一篇文章 xff0c 发现这还是一个新概念 x
  • 怎样在github上协同开发

    描述 xff1a How to co work wither parter via github Github协同开发情景模拟 Github不仅有很多开源的项目可以参考 xff0c 同样也是协同开发的最佳工具 xff0c 接下来的就模拟一下
  • Android libdvm.so 与 libart.so

    Android libdvm so 与 libart so 系统升级到5 1之后 xff0c 发现system lib 下面没有libdvm so了 xff0c 只剩下了libart so 对于libart模式 xff0c 从4 4就在De
  • Translate Aticle

    最近在Thinkpad上安装Ubuntu12 04的时候 xff0c 经历了几个问题 xff0c 发现BOIS里多了很多选项 xff0c 而且安装双系统也有UEFI有关 xff0c 在网站上找了一篇文章 xff0c 发现这还是一个新概念 x
  • android倒计时功能的实现(CountDownTimer)

    在逛论坛的时候 xff0c 看到一个网友提问 xff0c 说到了CountDownTimer这个类 xff0c 从名字上面大家就可以看出来 xff0c 记录下载时间 将后台线程的创建和Handler队列封装成一个方便的类调用 查看了一下官方
  • 为何无法打开administrator目录?提示“无法访问c:/documents and settings/administrator,拒绝访问"解决办法

    有的时候 我们要打开一个文件夹 尤其是C盘的Documents and Settings里面的文件夹 而系统却给出 xff02 文件夹拒绝访问 xff02 的对话框 xff0c 这该怎么办呢 xff1f 别慌 xff0c 有办法 xff01
  • Powershell 美化教程(2021版)

    win下原生的三款CMD Powershell和Windows Terminal xff0c 一个是上世纪的产物 xff0c 只能win环境内最基本的使用 xff1b 另一个是挺新 xff0c 但是明显UI设计师不在线 xff0c 在win
  • 高级设置/FTP IPv4地址和域限制(三)

    xff13 詳細設定 xff0f FTP IPv4 制限 xff13 高级设置 xff0f FTP IPv4地址和域限制 xff11 操作 項目 FTP 管理 詳細設定 xff12 高级设置 初期設定値如下 xff0a 物理路径 E act
  • Linux简易DDNS配置教程

    Linux简易DDNS配置教程 DDNS与其在Linux系统上的应用 1 1 DDNS是什么 xff0c 其作用是什么 DDNS xff08 Dynamic Domain Name System xff0c 动态域名系统 xff09 是一种