当前位置:首页 > Ubuntu > 正文

Ubuntu动态DNS配置(手把手教你设置DDNS实现公网IP自动更新)

在家庭或小型办公网络中,你的公网IP地址可能会频繁变动(由ISP动态分配),这会导致你无法通过固定域名远程访问家中的服务器、NAS、摄像头等设备。为了解决这个问题,我们可以使用动态DNS(Dynamic DNS,简称DDNS)服务,将一个固定的域名自动绑定到你当前的公网IP上。

本文将详细介绍如何在Ubuntu系统上配置动态DNS,即使你是Linux新手,也能轻松完成设置。我们将使用免费的DDNS服务商(如DuckDNS、No-IP等)配合脚本实现IP自动更新。

Ubuntu动态DNS配置(手把手教你设置DDNS实现公网IP自动更新) Ubuntu动态DNS配置 DDNS设置教程 Linux动态域名解析 Ubuntu自动更新IP 第1张

什么是动态DNS?

动态DNS(DDNS)是一种将动态变化的公网IP地址映射到固定域名的服务。当你家里的宽带IP发生变化时,DDNS客户端会自动检测新IP并通知DDNS服务商更新DNS记录,从而保证你始终可以通过同一个域名访问你的设备。

准备工作

  • 一台运行Ubuntu(20.04/22.04等版本均可)的电脑或服务器
  • 一个可用的DDNS服务账号(本文以免费的 DuckDNS 为例)
  • 基本的终端操作能力(会复制粘贴命令即可)

步骤一:注册DuckDNS账号

  1. 访问 https://www.duckdns.org
  2. 使用Google、GitHub等账号登录
  3. 在页面上输入你想要的子域名(例如:myhome.duckdns.org)
  4. 点击“add domain”创建成功后,页面会显示你的 Token(一串字母数字组合),请妥善保存

步骤二:在Ubuntu上配置DDNS更新脚本

我们将创建一个简单的Shell脚本来定期检查并更新IP。

1. 创建脚本目录和文件:

mkdir -p ~/duckdnsnano ~/duckdns/duck.sh

2. 在打开的编辑器中粘贴以下内容(替换 YOUR_SUBDOMAIN 和 YOUR_TOKEN):

#!/bin/bashecho url="https://www.duckdns.org/update?domains=YOUR_SUBDOMAIN&token=YOUR_TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -

例如,如果你的子域名是 myhome,Token是 abc123def456,那么脚本内容应为:

#!/bin/bashecho url="https://www.duckdns.org/update?domains=myhome&token=abc123def456&ip=" | curl -k -o ~/duckdns/duck.log -K -

3. 保存并退出:Ctrl+O → 回车 → Ctrl+X

4. 赋予脚本执行权限:

chmod +x ~/duckdns/duck.sh

步骤三:设置定时任务(Cron)

为了让脚本每5分钟自动运行一次,我们需要配置cron任务。

1. 编辑当前用户的crontab:

crontab -e

2. 在文件末尾添加以下行:

*/5 * * * * /home/你的用户名/duckdns/duck.sh >/dev/null 2>&1

请将 你的用户名 替换为实际的Ubuntu用户名(可通过 whoami 命令查看)。

3. 保存并退出编辑器。

步骤四:测试与验证

手动运行一次脚本,查看是否成功:

~/duckdns/duck.shcat ~/duckdns/duck.log

如果返回 OK,说明配置成功!现在你可以通过 http://your-subdomain.duckdns.org 访问你的Ubuntu设备了(前提是你的路由器已正确端口转发)。

其他DDNS服务商支持

除了DuckDNS,你也可以使用No-IP、DynDNS等服务。方法类似,只需替换API调用URL和认证参数即可。例如,No-IP提供官方Linux客户端,可直接安装使用。

总结

通过以上步骤,你已经成功在Ubuntu上配置了动态DNS(DDNS)。无论你的公网IP如何变化,都可以通过固定的域名访问内网服务。这对于搭建个人网站、远程桌面、监控系统等场景非常实用。

记住定期检查日志文件 ~/duckdns/duck.log,确保更新正常。如果你遇到问题,可以检查网络连接、防火墙设置或DDNS服务商状态。

希望这篇Ubuntu动态DNS配置教程对你有帮助!如有疑问,欢迎在评论区留言交流。

关键词:Ubuntu动态DNS配置、DDNS设置教程、Linux动态域名解析、Ubuntu自动更新IP