1 个不稳定版本
0.2.3 | 2021 年 9 月 26 日 |
---|
#40 in #home
每月 25 下载
63KB
775 行
dynnsd
动态 DNS 条目的客户端和服务器。
- 给你的家用路由器分配 DNS 名称的能力。
dynnsd
设计用来替代 dyndns,该软件被 Oracle 收购,随后将其域名注册业务卖给了第三方。
考虑到虚拟服务器的低廉价格以及 NLnetLabs 的出色工作,可以以每月约 5 美元的价格运行一对工业级强度的 DNS 服务器。
dynnsd
提供服务的动态 DNS 部分,即为主路由器提供有效的互联网 DNS 地址。
位于 NAT 路由器后面的服务器运行客户端,指示其 IP 地址,dynnsd 服务器代码写入包含 A 记录的区域文件,并要求 nsd
重新读取其配置。
dynnsd-client
分别将 IP 发送到 nsd 的实例,因此不需要区域传输。实例可能不同步,也可能两个都没有正确的 IP。
动态 DNS 协议
协议由客户端和服务器之间的 4 条消息组成。客户端运行在家用网络上,服务器与 nsd
服务器在同一个主机上。
dynnsd-client
发送一个 ip_request 消息,它尚不知道自己的 IP 地址,dynnsd-client
可能位于 NAT 路由器后面,其源 IP 地址和端口可能已更改。
当 dynnsd
服务器收到一个 ip_request 时,它发送一个包含客户端源 IP 地址的 ip_reply。
当 dynnsd-client
接收到 ip_reply 时,它向一个或多个 dynnsd
服务器发送一个 ip_confirm 请求,以指示它们应在 DNS 中添加 IP 地址。
当 dynnsd
服务器收到一个包含与源 IP 地址匹配的 IP 地址的 ip_confirm 时,它创建一个 DNS A 记录。
; ddns
homesrv 5m IN A 23.24.25.26
并向 nsd
发送 HUP。
区域更改协议
dynnsd
还支持一个区域更改消息,该消息可以更改主区域文件,并向 nsd
发送 HUP。
例如,将区域故障转移到备用数据中心或将区域置于维护模式。动态主机被复制到新的区域。
您还可以向 nsd
发送 ZONE_HUP,例如在 rsync 静态区域文件更改之后。
消息
消息是包含固定长度字段的72字节UDP消息。
IP_REQUEST
- 4字节 - 23.1.0.0 - 头部,魔数,消息类型,0,0
- 4字节 - 0.0.0.0
- 32字节 - 随机数
- 32字节 - sha256哈希
IP_RESPONSE
- 4字节 - 23.2.0.0
- 4字节 - 源IP地址(人类可读字节序)
- 32字节 - 随机数据
- 32字节 - sha256哈希
IP_CONFIRM
- 4字节 - 23.3.0.0
- 4字节 - 源IP地址
- 1字节 - 主机索引,每个dynnsd服务器支持多达256个客户端
- 23字节 - 随机数
- 8字节 - Unix纪元的分钟(纪元 / 60)
- 32字节 - sha256哈希
IP_CREATED
- 4字节 - 23.4.0.0
- 4字节 - 主机索引,0,0,0
- 32字节 - 随机数
- 32字节 - sha256哈希
ZONE_CHANGE
- 4字节 - 23.5.0.0 - 头部,魔数,消息类型,0,0
- 4字节 - 区域索引.0.0.0
- 32字节 - 随机数
- 32字节 - sha256哈希
ZONE_CHANGED
- 4字节 - 23.6.0.0 - 头部,魔数,消息类型,0,0
- 4字节 - 区域索引.0.0.0
- 32字节 - 随机数
- 32字节 - sha256哈希
ZONE_HUP
- 4字节 - 23.7.0.0 - 头部,魔数,消息类型,0,0
- 4字节 - 区域索引.0.0.0
- 32字节 - 随机数
- 32字节 - sha256哈希
依赖项
~2.3–3MB
~63K SLoC