公网 IP 总是变动怎么办? | DDNS 简易配置
2023-8-5|2024-9-7
D_SUPER
type
Post
status
Published
date
Aug 5, 2023
slug
ddns_go
summary
DDNS 允许用户通过使用域名来访问其设备,而无需担心 IP 地址的变化。它通过将域名与动态IP地址关联起来,使得设备可以通过一个易于记忆的域名来访问,而不需要记住经常变化的IP地址。DDNS-GO 可以通过 Docker 快速部署。
category
服务器
tags
建站
Docker
icon
家宽 IP 与家庭宽带网络密切相关,由 ISP 提供给用户,用于连接家中设备与互联网。这种IP地址使用户能便捷地进行各种在线活动,如娱乐、社交、工作和学习。家宽IP的一个特点是动态分配,类似于切换电视节目,每次重新连接互联网时,设备可能会获得新的IP地址,这种变化能有效提高IP地址的利用率,减少浪费。
然而家宽 IP 地址常常变动给,不利于需要远程访问设备的用户使用,比如远程桌面、监控摄像头或者家庭服务器等。使用动态域名解析服务(Dynamic Domain Name System,DDNS)可以解决该问题。通过 DDNS 用户可以使用稳定的域名来访问设备,而不受 IP 地址变化的影响。
DDNS 基本信息
DDNS 允许用户通过使用域名来访问其设备,而无需担心 IP 地址的变化。它通过将域名与动态 IP 地址关联起来,使得设备可以通过一个易于记忆的域名来访问,而不需要记住经常变化的 IP 地址。
以下是DDNS服务的工作原理:
- 注册域名:用户首先需要在一个DDNS提供商处注册一个域名,比如“mydevice.ddnsprovider.com”。
- 绑定设备:用户将其设备与注册的域名关联起来,通常通过在设备上安装DDNS客户端软件或者在路由器上进行配置。
- IP更新:当设备重新连接互联网并获得新的IP地址时,DDNS客户端会通知DDNS提供商,告知新的IP地址。
- DNS更新:DDNS提供商会将域名与新的IP地址关联起来,确保域名始终指向设备的最新IP地址。
前期准备
- Linux 安装有 Docker
- Cloudflare 账户
- 解析的域名 (非
.cf
.tk
免费域名)
配置 DDNS 服务
应用的 DDNS 软件为 ,该软件可以通过 Docker Compose 迅速搭建,并使用。
特性
- 支持Mac、Windows、Linux系统,支持ARM、x86架构
- 支持的域名服务商
Alidns(阿里云)
Dnspod(腾讯云)
Cloudflare
华为云
Callback
百度云
Porkbun
GoDaddy
Google Domain
- 支持接口/网卡/命令获取IP
- 支持以服务的方式运行
- 默认间隔5分钟同步一次
- 支持同时配置多个DNS服务商
- 支持多个域名同时解析
- 支持多级域名
- 网页中配置,简单又方便,默认勾选
禁止从公网访问
- 网页中方便快速查看最近50条日志
- 支持Webhook通知
- 支持TTL
- 支持部分DNS服务商传递自定义参数,实现地域解析等功能
Note 建议在启用公网访问时,使用 Nginx 等反向代理软件启用 HTTPS 访问,以保证安全性。
Docker 中使用
推荐使用 host 模式
- 挂载主机目录, 使用docker host模式。可把
/opt/ddns-go
替换为你主机任意目录, 配置文件为隐藏文件
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go
- 在浏览器中打开
http://主机IP:9876
,修改你的配置,成功
- [可选] 使用
ghcr.io
镜像
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root ghcr.io/jeessy2/ddns-go
- [可选] 支持启动带参数
l
监听地址f
间隔时间(秒)
docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go -l :9877 -f 600
- [可选] 不使用docker host模式
docker run -d --name ddns-go --restart=always -p 9876:9876 -v /opt/ddns-go:/root jeessy/ddns-go
访问 DDNS 服务:ip:9876
Docker compose
version: '3' services: ddns-go: container_name: ddns-go restart: always network_mode: host # 允许访问本机端口 volumes: - './ddns-go:/root' image: jeessy/ddns-go
运行服务:docker compose up -d
访问 DDNS 服务:ip:9876
配置 DNS 服务商 - Cloudflare
- 创建 DNS API Token,点击链接: 创建令牌->编辑区域 DNS (使用模板)
- 将得到的 Token 填入 DDNS 中。
注:.tk
等 Freenom 免费顶级域名无法使用 API Token 修改。
配置 IPv4 和 IPv6
- 获取 IP 方式
- 如果你的 IPv4 没有公网 IP,选择
通过网卡获取
获得局域网 IP(提供内网访问) - 否则,选择
通过接口获取
获取上游公网 IP
- Domains 中:
你的域名?proxied=false
或你的域名?proxied=true
开启 Cloudflare CDN - 如果 IP 为内网保留 IP( 如
192.168.0.2
),则不可开启 CDN,即proxied=false
, 否则 DNS 配置错误。
- 同理设置 IPv6
配置消息通知 - Bark
- 将代码复制到 URL 中
https://api.day.app/xxxxxxxx/DDNS更新/主人IPv4状态更新#{ipv4Addr}域名更新结果:#{ipv4Result}主人IPv6状态更新#{ipv6Addr}域名更新结果:#{ipv6Result}?group=DDNS
- 结合 模拟测试 和 顶端日志信息,检查配置是否正确。
其他配置(必须)
建议!必须!设置用户名和强密码保护面板。
推荐阅读
- Twikoo
- Waline
- Cusdis