公网 IP 总是变动怎么办? | DDNS 简易配置

2023-8-5|2024-9-7
D_SUPER
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服务的工作原理:
  1. 注册域名:用户首先需要在一个DDNS提供商处注册一个域名,比如“mydevice.ddnsprovider.com”。
  1. 绑定设备:用户将其设备与注册的域名关联起来,通常通过在设备上安装DDNS客户端软件或者在路由器上进行配置。
  1. IP更新:当设备重新连接互联网并获得新的IP地址时,DDNS客户端会通知DDNS提供商,告知新的IP地址。
  1. DNS更新:DDNS提供商会将域名与新的IP地址关联起来,确保域名始终指向设备的最新IP地址。

前期准备

  1. Linux 安装有 Docker
  1. Cloudflare 账户
  1. 解析的域名 (非 .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
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

  • 将得到的 Token 填入 DDNS 中。
    • notion image
注: .tk 等 Freenom 免费顶级域名无法使用 API Token 修改。

配置 IPv4 和 IPv6

notion image
  • 获取 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
      notion image
  • 结合 模拟测试 和 顶端日志信息,检查配置是否正确。

其他配置(必须)

建议!必须!设置用户名和强密码保护面板。

推荐阅读


Notion 教育优惠账户 | 设置账户密码永久保留游戏局域网互联方案 | 方舟生存进化
  • Twikoo
  • Waline
  • Cusdis