自建动态DNS(DDNS)服务器
1.首先得有自己的一个域名,可以参考freenom免费顶级域名
2.使用Cloudxns接替管理
3.拥有自己VPS
1.安装Docker
可以参考
或者按照以下安装
使用脚本自动安装
curl -sSL | sh
执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 安装在系统中。
阿里云的安装脚本
curl -sSL | sh
DaoCloud 的安装脚本
curl -sSL | sh
2.安装动态域名客户端
这里使用zwh8800的客户端
首先,拉取镜像:
docker pull zwh8800/cloudxns-ddns
然后,编写一个很简单的配置文件,文件名必须为 cloudxns-ddns.gcfg,把它放到某个文件夹中(如/home/zzz/cloudxns-ddns/config,下面以此为例子)
[CloudXNS]
APIKey=\"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\"
SecureKey=\"xxxxxxxxxxxxxx\"
[Domain]
Data=\"home.lengzzz.com\"
Data=\"haha.lengzzz.com\"
上面 APIKey 是你在 CloudXNS 申请的 key,填进去即可。下面是你想要动态的域名,可以写很多。
然后,启动镜像即可。
docker run --name cloudxns-ddns -d -v /home/zzz/cloudxns-ddns/log:/app/log -v /home/zzz/cloudxns-ddns/config:/app/config zwh8800/cloudxns-ddns
依葫芦画瓢就可以运行了
为防止后台停止运行加入restart参数
docker run --name cloudxns-ddns --restart=always -d -v /home/zzz/cloudxns-ddns/log:/app/log -v /home/zzz/cloudxns-ddns/config:/app/config zwh8800/cloudxns-ddns
威联通NAS折腾日记(5)-使用阿里云DDNS服务
疫情期间一直在家,NAS基本上都是在家中使用。外网访问的问题就没怎么管它。这次要去北京一趟,外网访问就被提上了日程。由于我用的是电信的宽带,提前已经申请了公网ip,并且已经在阿里云上申请了自己的域名。当然你也可以使用威联通官方提供的myqnapcloud云服务,或者使用花生壳等内网穿透工具。
DDNS翻译过来就是动态域名服务,他将用户的动态IP地址映射到一个固定的域名解析服务商,用户每次链接网络的时候客户端会通过信息传递把该主机的动态ip地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
上面说的可能有些绕,实际上DDNS服务就是将用户的IP地址与固定的域名一一映射,即使用户ip变更,而DDNS服务也会随之将域名的解析变更为新的ip地址。再简单一点就是可以使用固定的域名来在外网找到你的电脑。
由于电信等提供的公网ip是动态变化的,通常一天或二天一换,如果想要固定的ip地址还需要交额外的费用。所以我们就需要建立DDNS服务来将域名与动态ip进行映射。
我们使用威联通提供的docker来部署DDNS服务,在威联通的ContainerStation中搜索aliddns找到chenhw2/aliyun-ddns-cli
这个容器。
在高级设置中的环境中设置以下参数:
然后运行该容器在控制台中看到以下内容,说明就映射成功了:
实际上这个容器的作用就是自动在阿里云控制后台生成了一个域名映射:
这个是自动完成的,并且会在ip地址变更的时候自动更新这条映射。
创建完成了DDNS服务以后,实际上还是无法在外网访问你的NAS,因为NAS是在光猫下的,其ip地址是192.168这样的内网地址,而我们访问域名实际上是将请求发送给了外网地址也可以理解为发送给了光猫。而光猫本身不能处理这条请求,所以会将该请求抛弃。这个时候就需要另一个知识点就是端口映射,我自己的网络拓扑如下:
可以看到我的网络是两层结构,因为光猫只有一个千兆Lan口,所以我在下面有添加了一个提供多个千兆Lan口的路由器。而光猫下只是接了这个路由器而已。
光猫的网关是192.168.1.1,而路由器连接在光猫上那么他的ip地址是192.168.1.3。
而在光猫下的端口映射如下:
端口映射的意义就是如果外网的某个端口得到了请求,光猫会不加处理的将请求发送给映射的局域网ip:端口上。例如我上面的虚拟服务名称为nas的端口映射的意思是:外网的5000端口得到了一个请求,光猫将请求发送给内网的192.168.1.3:5000(也就是中间的路由器上)。
这时候我们依然无法看到我们的NAS,这就需要中间路由器继续进行映射将从光猫得到的请求转发给nas:
以上就完成了映射。
你也可以看到上面的映射中有一个22端口的ssh映射,同理如果防火墙没有放行也连接。
本文的前提条件:
具体步骤:
RouterOS aliyun 实现DDNS动态解析
本文主要讲解如何借助阿里云aliyun的云解析API接口来实现RouterOS(以下简称ROS)的DDNS动态解析。
一、创建访问控制RAM的AccessKey
我这边简单的讲讲如何申请开通:
1、阿里云网站 -- 产品 -- 安全 -- 应用身份服务 ,这个就是控制API ,用户管理,新建用户,填写用户名和勾上“为该用户自动生成AccessKey”,保存好这个accesskey。
2、策略管理 -- 自定义授权策略,新建授权策略,选择空白模版,授权策略名称随便填(如alidns),策略内容为下面的内容(修改下面内容中的域名为你自己要做DDNS的域名)
action是api的接口,只接受AddDomainRecord(增加域名解析),DescribeDomainRecords(输出域名解析列表)和UpdateDomainRecord(修改域名解析记录)
Resource是指被授权的具体对象,这边domain/myxzy.com需要修改成你自己的域名domain/xxx.com。这样就是授权对象是该域名
3、授权--新增授权--添加权限—在授权主体,对上面创建的用户,点击授权,选择刚才自定义创建的策略,确定。
二、PHP制作aliyun API动态解析接口
以下是我制作好的php解析接口
接口地址:
HTTP请求方式:
请求参数:
示例:
“0”代表解析修改成功或者是当前解析记录ip相同
“1”代表AccessKey报错(这个阿里云我这边经常出现,刷新就可以正常)
“2”代表没有设置参数
1、本接口未记录所有的解析AccessKey和解析记录,但是服务器的访问日志会有链接记录(按照政策要求需保存6个月的日志)。虽然有日志但是本接口不提供任何查询。
2、强烈建议按照步骤一设置授权权限。
3、由于使用本接口出现的任何安全问题,本人概不负责。这边只能保证本人不会去做任何后门行为。这边建议勤换AccessKey
id、secret、domain、record、pppoe修改成自己的。定时1分钟运行就好。
脚本说明:获取pppoe拨号ip,然后判断和记录解析ip是否相同,不同开始访问我的php解析脚本,解析脚本就判断参数执行,返回0或1或2,如果是0更新记录的alidns解析ip,其他的不记录。
四、alidns-api-php脚本源码
Github:
群晖使用阿里云DDNS(ipv4和ipv6)
复制,写成sh脚本,添加进群晖定时任务即可。
注意前四个需要自己填入,还有获取ip那里要注意网络接口,我的是ppp0。
同样前四个自己填,和上边的类似。网络接口也同理,可以进群晖ssh,用ip addr自己查接口名称。
阿里云服务器配置ipv6地址
开一台阿里云服务器
1. 进入实例详情页面,在 \"网络信息\" 模块,点击右方 更多 按钮,下拉框选择 \"管理IPv6\"
2. 步骤1完成后,弹出一个弹框,标题为 \"管理辅助私网IP \",在下面 ipv6地址,点击 \"分配新ip\"
3. 分配ipv6地址成功后,需要给该地址开通公网带宽,进入ipv6网关详情页面,找到对应的ipv6地址,右方操作栏点击 \"开通公网带宽\"
4. 服务器拥有ipv6公网ip,终端执行 ping6 ipv6地址 测试是否能正常访问,如果失败了,可能是服务器实例的安全组规则中没有放行 ipv6 地址访问,添加一条新规则,入方向允许 ::1 来源的访问
ssh通过ipv6地址远程登录服务器,格式和ipv4一样,例如:ssh root@2408:4006:1101::1900
注意,ssh通过ipv6登录服务器,需要该服务器sshd已经配置可以通过ipv6登录,若未配置,需要先登录到该服务器,修改sshd配置文件
① vim /etc/ssh/sshd_config
②输入/AddressFamily,将值修改为 any 后保存文件 (适用于ipv4和ipv6,若为inet则适用于ipv4,inet6适用于ipv6)
③重启ssh,/etc/init.d/ssh restart,重启后ssh就可以通过ipv6远程登录该服务器了
参考阿里云帮助文档:
老毛子ipv6 ddns
过程不多说了
key id 和key sercret在阿里去控制台里,生成一个只拥有管理、读取dns的账号
@为直接解析,即解析到ipv6地址 ,也可以在云台看一下其他解析方式
高级设置 - 自定义设置 - 脚本 - 防火墙后
一般80、443端口是封了的,所以改为监听8888端口,现在,可以在有ipv6设备上输入 域名:端口,试试能不能打开。
只用ipv6连家中路由器不够用,简单配置下端口转发,远程控制局域网内1台win pc,也可以总署其他应用,看自己需要吧。
安装socat,ipv6防火墙允许8899,并把把路由器的8899 端口映射到192.168.10.60的3389端口
如果要开机自动运行
去 高级设置 - 自定义设置 - 脚本 - 自定义脚本 (或者防火墙后) 填入
苹果手机不用修改,默认开启了ipv6;
安卓可能需要改一下:将apn协议、漫游协议 改为ipv4/ipv6,用移动网络打开test-ipv6看下获取到ipv6地址,如果不行,将mvno改为spn。
用rpd连接,不出意外就可以正常连接了
参考:
;spm=1001.2101.3001.4242