Docker部署ddns-go,动态域名解析公网IPv6地址

Docker部署ddns-go,动态域名解析公网IPv6地址

ddns-go,自动获得你的公网 IPv4 或 IPv6 地址,并解析到对应的域名服务。

嫌IPv6地址太难记?ddns来解决,将家里的公网IPv6地址用起来吧!

前言

为什么需要DDNS

因为一般家庭或企业用户所获得的的广域网ip并非固定,而是会时常变化,一旦变化,我们的域名针对ip的A类解析记录就会失效,因此我们需要DDNS(动态域名解析服务),在ip变动时自动更改我们的域名解析记录值。

ddns-go项目地址:
GitHub地址:https://github.com/jeessy2/ddns-go
Gitee地址:https://gitee.com/OtherCopy/ddns-go

视频地址

本期教程辅以视频,链接:https://www.bilibili.com/video/BV1S24y1q79Z

前置准备

公网IP

首先,需要保证家里有公网IP地址,现在大多数家里是有动态公网IPv6地址的。

我们可以在控制台输入一下命令查看一下当前机子的IP

  • Windows:ipconfig
  • Linux:ip addr

找到对应的网络适配器查看IP,若是公网IPv6会有以下特征:

运营商特征
电信240e开头
移动2409开头
联通2408开头

接下来,让我们访问这个网站https://ipw.cn/ipv6ping/,这是一个测试IPv6地址能否被ping通的网站,如果你的IPv6已经能被ping通,那说明这已经能当一个公网IP使用了,可跳过检查防火墙这一步。

检查防火墙

若没有被ping通,也不用着急,这是因为家里复杂的网络环境,各个节点可能存在的防火墙,致使该ip可能在外面并不能被ping通,此时细心检查家里光猫、路由器、主机的防火墙设置,具体可以按光猫->路由器->主机的顺序逐一ping其ip地址,若有一ping不通则是上一级防火墙没关。

这里我举个以我这里关闭防火墙的例子:

  • 光猫:取消勾选使能IPv6防火墙控制转发报文
    image-20230209184501902
  • 路由器:关闭防火墙
    image-20230209184646107
  • 主机:关闭防火墙
    win:Windows安全中心->防火墙与安全保护->关闭公用网络防火墙
    linux:sudo ufw disable

安全性问题:有人会担心防火墙全关了是不是不安全了?对于大部分人而言,由于公网IPv6地址每隔个两三天就会变一次,所以不用太担心被暴力攻击,但如果对安全性十分敏感,可以自行控制开放部分内网IP或者端口,但本文章内容重点并不在于此,请自行研究,

环境配置

为了方便使用,采用docker compose部署,所以需要先安装docker

# 安装docker
curl -fsSL get.docker.com -o get-docker.sh
sudo sh get-docker.sh --mirror Aliyun

tips:若没有curl命令,执行sudo apt install curl安装curl,再执行上面两条命令即可。

安装

可以选择docker composedocker二选一,我比较推荐docker compose安装,维护简单,且不用打一长串的参数命令行。

docker compose安装

选择一个放置目录,比如~/data/docker_data/,新建一个文件夹放置ddns-go

mkdir ddns-go
cd ddns-go

在ddns-go文件夹中创建docker-compose.yml文件,内容如下:

version: "3.9"
services:
  ddns-go:
    image: jeessy/ddns-go
    restart: always
    network_mode: "host"
    volumes:
      - ./ddns-go_data:/root

ps:以下有关docker的命令最好都在root用户下执行,由于涉及一些文件操作,不提供root权限可能存在文件权限问题。

docker compose up -d

在浏览器中打开http://主机IP:9876,修改你的配置,成功

Note
建议在启用公网访问时,使用 Nginx 等反向代理软件启用 HTTPS 访问,以保证安全性。

docker安装

挂载主机目录, 使用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,修改你的配置,成功

使用

配置

安装完成后,我们可以访问http://主机IP:9876进入ddns-go管理页面。

这里我以腾讯DNSPod管理的域名为例,进入腾讯DNSPod账号中心->API密钥->DNSPod Token->创建密钥

image-20230209230215705

保存下来IDToken,这将是ddns-go修改dns解析的凭证,回到ddns-go的管理面板,DNS服务商选择Dnspod(腾讯云),输入对应的IDToken

image-20230209224757081

根据自身需求配置ipv6,在Domains中配置域名。

其他配置:根据自己的需要配置下禁止公网访问和登录用户名密码,防止被攻击篡改。

点击Save保存。

成功后,应该能在自己的DNS解析处看到该域名当前的解析记录,并再次访问https://ipw.cn/ipv6ping/网站,ping一下这个域名,大功告成!

更新

docker compose pull
docker compose up -d

卸载

docker compose down

停止

docker compose stop

重启

docker compose restart
### 关于 `seq` 命令的使用 `seq` 是 Linux/Unix 系统中的一个简单实用工具,用于生成一系列按顺序排列的数字。它支持多种参数配置来调整输出格式和范围。 #### 参数解析 以下是常用的几个选项及其功能: - **基本语法**: ```bash seq [起始值] [步长] 终止值 ``` 如果省略 `[起始值]` 和 `[步长]`,默认从 `1` 开始并以步长为 `1` 输出直到终止值[^2]。 - `-f, --format=FORMAT`: 自定义输出格式。 - `-s, --separator=STRING`: 设置分隔符,默认情况下是以换行符作为分隔符。 - `-w, --equal-width`: 将所有数字填充至相同宽度,不足部分用前导零补全[^3]。 #### 实现从0到36的序列生成 要创建从0到36之间的整数列表,可以通过如下方式实现不同需求的具体实例: ##### 示例一:简单的连续递增序列 如果只需要最基础的形式,则无需额外设定任何其他参数即可完成操作: ```bash seq 0 36 ``` ##### 示例二:指定固定间隔(比如每两个单位增加一次) 通过加入中间项表示每次跳跃幅度大小为例展示方法之一——这里设定了每隔两步前进一位的情况: ```bash seq 0 2 36 ``` ##### 示例三:统一长度显示模式下的应用案例 为了使每一个数值都保持一致字符数量呈现形式,在某些特殊场景下显得尤为重要;此时可利用之前提到过的`--equal-width`标志达成目标效果: ```bash seq -w 0 36 ``` 以上三种情况分别对应了不同的实际应用场景需求,可以根据具体项目要求灵活选用适合自己的方案来进行处理。 ```bash for i in $(seq 0 2 36); do echo "Current number is $i"; done ``` 上述脚本片段展示了如何结合for循环结构与seq命令一起工作,从而遍历由该函数所产生的整个数据集合,并针对其中每一成员执行相应动作—此处仅为演示目的打印当前迭代变量值而已[^1]。 ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值