DDNS-GO 动态域名解析

news/2025/2/27 7:27:27/

什么是 DDNS

DNS(域名系统) 是互联网的电话簿,将易于记忆的域名(如 www.example.com)转换为计算机可以理解的 IP 地址(如 192.0.2.1)。这使得用户无需记住复杂的数字地址即可访问网站。

DDNS(动态域名服务,Dynamic DNS) 是对传统 DNS 的扩展,旨在解决 IP 地址频繁变化的问题。在某些网络环境中,设备的公网 IP 地址可能会动态变化,导致固定的域名无法始终指向正确的 IP 地址。DDNS 通过自动更新域名与 IP 地址的映射关系,确保即使 IP 地址发生变化,用户仍然可以通过固定的域名访问设备或服务。

DNS 和 DDNS 的主要区别

  • IP 地址类型:DNS 主要用于处理静态 IP 地址,即 IP 地址不会频繁变化的情况。而 DDNS 适用于动态 IP 地址,即 IP 地址可能会频繁变化的情况。

  • 更新机制:DNS 的记录通常是静态的,需要手动更新。而 DDNS 能够自动检测 IP 地址的变化,并实时更新域名解析记录。

  • 应用场景:DNS 适用于服务器等固定 IP 地址的设备。而 DDNS 适用于家庭网络、移动设备等 IP 地址可能变化的环境。

DDNS-GO 的安装

DDNS-GO 是一项开源软件,在 github 上地址为 https://github.com/jeessy2/ddns-go 。下载对应的发布版本,本教程以 Linux 系统(Ubuntu)为例。

安装 ddns-go

首先解压程序

tar -xzvf filename.tar.gz

执行安装程序

sudo ./ddns-go -s install

配置与启动

启动 ddns-go

./ddns-go

ddns-go 提供了一个 webui 来进行图形化操作,要访问 ddns-go 的 web 界面,地址在 http://localhost:9876。在浏览器中访问该地址即可进行配置。

[!TIP]

如果目标机器不在局域网内且没有公网没那么方便直接访问没有穿透的端口,假设之前已经设置过 ssh 端口的内网穿透,可以通过 ssh 隧道进行连接:

ssh -L 8080:localhost:9876 <username>@<remote-machine> -p <port>
# 将远程主机的目标端口绑定到本地端口上,也就是接下来浏览器访问地址为 http://localhost:8080

这样远程主机的 localhost:9876 就被转发到自己主机的 localhost:8080 了,对于远程主机的其他目标也适用。

设置动态域名解析

以阿里云为例,需要在阿里云创建一个 AccessKey 来提供用户的操作权限,并设置一个名下的域名,程序就会根据域名的变化来与域名供应商进行比对并更新。

点击保存即可完成设置。

DDNS-GO 的其他设置

守护进程

如果需要设置开机自启动,在 Linux 中可以直接设置守护进程来控制程序的是否自启动和状态,在 /etc/systemd/system 中创建并设置 ddns_go.service

[Unit]
Description=DDNS-GO Service
After=network.target[Service]
ExecStart=/path/to/ddns-go
Restart=always
User=your_username
Group=your_group[Install]
WantedBy=multi-user.target

然后重新加载 systemd 设置并重新启动

sudo systemctl daemon-reload
sudo systemctl enable ddns-go.service
sudo systemctl start ddns-go.service

更新时间

动态域名服务(DDNS) 中,TTL(生存时间) 是指 DNS 记录在缓存中保存的时间长度,单位通常为秒。

TTL 值的设置需要在 更新频率服务器负载 之间找到平衡。

较长的 TTL 值(如 1 小时)可以减少 DNS 查询次数,降低服务器负载,但可能导致 IP 地址变化后,全球范围内的 DNS 缓存需要更长时间才能更新,影响访问的及时性。

相反,较短的 TTL 值可以使 DNS 记录更快地传播更新,但会增加对 DNS 服务器的查询频率,可能导致服务器负载增加。


http://www.ppmy.cn/news/1575206.html

相关文章

在单片机中,如果我的字符串里面有变量,怎么把字符串变ascii码

/********************************************* 函数名&#xff1a;Video_SwitchData(uint32_t data1, uint32_t data2) 功能&#xff1a;输入输出切换一对一发送给视频板函数;格式(sw,输入端口,输出端口) data1&#xff1a;输入通道&#xff0c;0x30-0x33 data2&#xff1a;…

MySQL保存超字段长度信息时如何正确截取

在Java中&#xff0c;为确保错误信息errMsg正确截取并适配MySQL的varchar(1024)字段&#xff08;UTF-8编码&#xff09;&#xff0c;需考虑字符数限制及Unicode完整性。以下是实现方法&#xff1a; 解决方案 使用代码点&#xff08;Code Point&#xff09;截取&#xff0c;避…

第16届蓝桥杯模拟赛3 python组个人题解

第16届蓝桥杯模拟赛3 python组 思路和答案不保证正确 1.填空 如果一个数 p 是个质数&#xff0c;同时又是整数 a 的约数&#xff0c;则 p 称为 a 的一个质因数。 请问&#xff0c; 2024 的最大的质因数是多少&#xff1f; 因为是填空题&#xff0c;所以直接枚举2023~2 &am…

java23种设计模式-组合模式

组合模式&#xff08;Composite Pattern&#xff09;学习笔记 &#x1f31f; 定义 组合模式属于结构型设计模式&#xff0c;用于将对象组合成树形结构以表示"部分-整体"层次结构。它使得用户对单个对象和组合对象的使用具有一致性。 &#x1f3af; 适用场景 需要表…

从0-1搭建mac环境最新版

从0-1搭建mac环境 先查看自己的芯片信息 bash uname -mbash-3.2$ uname -m arm64这里是自己的型号安装brew xcode-select --install xcode-select -p /bin/zsh -c “$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)” source /Users/lanren/.…

常见软件测试工具的解释

以下是一些常见软件测试工具的解释&#xff1a; 功能测试工具 Selenium&#xff1a;用于Web应用程序测试的开源工具&#xff0c;支持多种浏览器和编程语言&#xff0c;如Java、Python等。它通过操作浏览器来模拟用户行为&#xff0c;如点击按钮、输入文本、验证页面元素等&…

单片机总结【GPIO/TIM/IIC/SPI/UART】

一、GPIO 1、概念 通用输入输出口&#xff1b;开发者可以根据自己的需求将其配置为输入或输出模式&#xff0c;以实现与外部设备进行数据交互、控制外部设备等功能。简单来说&#xff0c;GPIO 就像是计算机或微控制器与外部世界沟通的 “桥梁”。 2、工作模式 工作模式性质特…

【Python LeetCode】面试经典 150 题

数组 / 字符串快慢指针&#xff08;双指针&#xff09;总结88. 合并两个有序数组27. 移除元素26. 删除有序数组中的重复项80. 删除有序数组中的重复项 II Boyer-Moore 投票算法169. 多数元素扩展&#xff1a;寻找 n/3 多数元素 翻转法189. 轮转数组 贪心121. 买卖股票的最佳时机…