前言
家庭宽带想要从运营商那里获取公网IPv4是比较有难度的,可以将远程访问和NAS共享等需求,推向另一种解决方案——IPv6。虽然IPv6的分配地址在DHCP租期内可能会发生变化,但至少它为我们提供了一个可以应对这种变化的工具。在IPv6网络中,实现DDNS(动态域名解析服务)成为了一种常见的方法,用以保持连接的稳定性。Linux操作系统可以按照以下步骤来设置IPv6 DDNS以满足需求。
下述内容主要介绍IPv6、DDNS以及分享我在Linux上进行IPv6 DDNS的方法。
IPv6
IPv6,即互联网协议第六版(Internet Protocol version 6),是用于互联网的一种网络层协议。它是IPv4(互联网协议第四版)的继任者,主要设计用于解决IPv4中的地址耗尽问题和增强网络性能。
以下是一些关于IPv6的特点和信息:
更大的地址空间: IPv6扩展了IP地址的位数,将IPv4的32位地址扩展为128位地址,这意味着IPv6可以支持远远多于IPv4的地址数量。这有助于解决IPv4中的地址耗尽问题。
改进的性能: IPv6设计时考虑了网络性能和效率。它简化了数据包处理过程,减少了路由器上的工作负担,提高了网络速度。
更好的安全性: IPv6包括内置的安全性功能,如IPSec(Internet Protocol Security),可以提供加密和认证,有助于增强通信的安全性。
自动地址分配: IPv6引入了一种称为SLAAC(Stateless Address Autoconfiguration)的机制,允许设备自动获取IPv6地址,简化了网络配置。
改进的QoS支持: IPv6通过增加流标签字段,改进了对服务质量(Quality of Service,QoS)的支持。
内置支持移动设备: IPv6对移动设备和移动IPv6(Mobile IPv6)提供了更好的支持,使设备可以在不断开连接的情况下切换网络。
过渡机制: 为了平稳过渡到IPv6,IPv6还包括了与IPv4的互操作性,以便向后兼容。
DDNS
DDNS,全称为动态域名系统(Dynamic Domain Name System),是一种用于动态更新域名与IP地址之间映射关系的系统。DDNS的主要目的是解决拥有动态IP地址的网络设备(如个人计算机、路由器等)需要通过域名进行访问或提供服务的需求。
以下是关于DDNS的主要特点和工作原理:
动态IP地址问题: 互联网服务提供商(ISP)为了管理IP地址分配,会将IP地址动态分配给用户。这意味着用户的公共IP地址可能会定期更改,这会导致访问网络设备或提供服务的困难。
域名映射: 许多人想要通过易记的域名来访问他们的设备,而不是记住经常更改的IP地址。DDNS允许用户将域名与其动态IP地址建立映射关系,使他们可以通过域名来访问设备。
定期更新: DDNS客户端会定期检测用户的公共IP地址是否更改。如果检测到IP地址的变化,DDNS客户端将向DDNS服务器发送更新请求,将新的IP地址与域名相关联。
应用场景: DDNS广泛应用于需要远程访问网络设备的场景,例如远程桌面连接、网络摄像头、NAS设备、远程桌面和VPN服务器等。
免费和付费服务: 有多个DDNS服务提供商可以选择,其中一些提供基本的免费服务,而其他一些提供高级功能的付费服务。
DDNS允许用户通过静态的域名来访问其拥有动态IP地址的设备,从而增加了网络的可访问性和便利性。用户只需注册一个DDNS域名,配置DDNS客户端,系统会自动处理IP地址的更新,确保域名始终映射到正确的IP地址。这对于那些需要从远程地方访问或管理设备的用户来说尤其有用。
腾讯云域名在Linux上面的IPV6-DDNS
找到GitHub大佬开发的DDNS开源项目,感兴趣可以参考原文GitHub - NewFuture/DDNS: :triangular_flag_on_post: 自动更新域名解析到本机IP(支持dnspod,阿里DNS,CloudFlare,华为云,DNSCOM...)
环境部署及资源下载
在终端中下载DDNS-master.zip
wget https://miku01.cc/upload/DDNS-master.zip
P·S.使用该项目要有python
环境
安装Python 3的命令在不同的Linux发行版中略有不同。以下是在Ubuntu、CentOS、Rocky Linux 和 Arch Linux 中安装 Python 3 的命令:
Ubuntu:
在 Ubuntu 中,默认情况下可能已经安装了 Python 3。可以使用以下命令来确保它已经安装并获取最新版本:
sudo apt update sudo apt install python python3 -y
CentOS 和 Rocky Linux:
在 CentOS 和 Rocky Linux 中,可以使用 yum
包管理器来安装 Python 3。以下是安装 Python 3 的命令:
yum install python python3 -y
Arch Linux:
在 Arch Linux 中,可以使用 pacman
包管理器来安装 Python 3。以下是安装 Python 3 的命令:
pacman -S python python3
修改配置文件
解压DDNS-master.zip
unzip DDNS-master.zip
先运行一次run.py
生成config.json
配置文件
python3 run.py
修改config.json
文件时可以参照下述配置文件示例
{
"$schema": "https://ddns.newfuture.cc/schema/v2.8.json",
"id": "12345",
"token": "mytokenkey",
"dns": "dnspod 或 dnspod_com 或 alidns 或 dnscom 或 cloudflare 或 he 或 huaweidns 或 callback",
"ipv4": ["ddns.newfuture.cc", "ipv4.ddns.newfuture.cc"],
"ipv6": ["ddns.newfuture.cc", "ipv6.ddns.newfuture.cc"],
"index4": 0,
"index6": "public",
"ttl": 600,
"proxy": null,
"debug": false
}
"id":腾讯云DNSPod 点击
DNSPod ToKen
,点击创建密钥
即可,复制ID在这里替换"token":生成Token的时候将Toeken复制粘贴到此处,ToKen生成后仅展示一次
"dns":腾讯云默认输入
dnspod
即可,其他厂商的域名可在上述示例中查找对应DNS"ipv4":你需要动态解析ipv4地址的域名全称(无需求可删除)
"ipv6":你需要动态解析ipv6地址的域名全称
"index4":(无需求可删除)
其他未提及的参数保持默认即可
保存后,再次运行run.py
若ID、ToKen无误将会出现下述提示
WARNING:root:Cache file is out of dated.
Mon Oct 16 15:31:48 2023 ddns.newfuture.cc(AAAA) ==> 2409:9999:8888:7777::4ae [via DIRECT]
观察DNSPod控制台,已经生成解析记录了。
开机启动以及持久运行
使用init.d和crontab运行目录下
task.sh
文件(未尝试,Ubuntu、CentOS建议使用下面的systemd
):
sudo ./task.sh
使用systemd: 该脚本安装的文件符合 Filesystem Hierarchy Standard (FHS): 运行可执行文件
创建/usr/share/DDNS
目录和/etc/DDNS
目录,将DDNS-master/
复制到/usr/share/DDNS
目录中,将config.json
复制到/etc/DDNS
中后运行下面的命令
#安装服务:
sudo ./systemd.sh install
#卸载服务:
sudo ./systemd.sh uninstall
设置开机自启动,并查看ddns.service
进程状态
#设置开启自启动
systemctl enable ddns.service --now
#查看服务状态
systemctl status ddns.service
有需要帮助的地方可以在评论区留言
评论区