目 录CONTENT

文章目录

【好玩的docker项目】DDNS实现域名与动态IP的映射,让内网服务可以在外网自由访问!

萧瑟
2023-07-08 / 0 评论 / 0 点赞 / 1,123 阅读 / 2,081 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-07-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

1、前言

最近看树莓派价格降下来了,买了一台树莓派,但是不能供外网访问怎么办呢,通过网上教程说可以尝试DDNS(动态域名解析)的方式来进行访问,寻思着要不尝试一下,搞起来!😎

给大家看一下树莓派的美图

raspberry-pi-4-labelled-f5e5dcdf6a34223235f83261fa42d1e8

2、什么是DDNS

首先引用维基百科的话来说:

动态DNS(英语:Dynamic DNS,简称DDNS)是域名系统(DNS)中的一种自动更新名称服务器(Name server)内容的技术。根据互联网的域名订立规则,域名必须跟从固定的IP地址。但动态DNS系统为动态网域提供一个固定的名称服务器(Name server),透过即时更新,使外界用户能够连上动态用户的网址。

3、前期条件

服务器 树莓派4B
系统 Debian GNU/Linux 11 aarch64(Py3.7.16)
域名 xxx.foreval.cn
阿里云AccessKey ID LTAI************
阿里云AccessKey Secret GcCo***********
IP同步项目 DDNS_go

3、如何实现域名访问内网服务?

DDNS的原理就是动态的解析域名的记录值,每当本地的外网IP和域名记录值不一致时,就将新的IP发送给阿里云,并通知阿里云修改域名的记录值。

3.1 获得域名

这时候域名的存在就显得尤为重要

1、没有域名的情况

没有域名的话可以在【阿里云】上进行购买,阿里云大厂比较放心。

image-1688630892024

各位小伙伴们购买的域名记得去ICP备案哦😉

2、有一级域名的情况

有一级域名的话,为了不影响之前项目的正常运行,可以新增加一个二级域名的解析,这个域名后期可以设置在DDNS_go配置页面中。

image-1688631541242

记录值我们暂时没有的话,可以先暂时写一个用来占位,不一定能正常访问,在DDNS_go配置好后,这里会自动更新成正确的。

3.2 获取公网IP

我们的路由器获取到的IP一般都是网络提供商提供的一个局域网地址。这个局域网可能是一个小区,也可能是一栋楼,因此不能用于我们外网访问。

3.2.1 没有公网IP

我们需要在光猫的后台管理界面(192.168.1.1)登录上超级管理员,由路由模式改成桥接模式。超级管理员密码的获取办法可以参考网上教程,或者在淘宝上想办法。

改成桥接之后,在路由器上设置PPPOE拨号,宽带号在光猫上可以查到,密码可以试一下123456。

接下来步骤请看 3.2.2

3.2.2 有公网IP

打开路由器的后台,以小米路由为例:

设置DMZ区,打开DMZ会将设置的这个IP放在一个隔离区,用来保护内部网络。

image-1688632780937

找到最下边的DMZ

image-1688632827982

3.3 获取AccessKey ID、AccessKey Secret

登录上【阿里云后台】,点击侧边栏中的【用户】

image-1688633614361

新创建一个RAM用户

image-1688633687178

给创建的用户赋权限

image-1688633891549

权限栏搜索 “DNS” 搜出来的权限全部选中,保存

image-1688633964865

回到用户列表页,点击我们新创建的用户名

点击"创建AccessKey"

image-1688634130555

这时候我们需要的AccessKey和AccessSecret就会展示出来,这两个值先记录一下,后续我们要用。

3.4 安装ddns-go

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

【github地址】

使用docker部署

docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go

/opt/ddns-go 替换为你主机任意目录, 配置文件为隐藏文件

命令执行完成后,在内网浏览器中打开http://主机IP:9876,进行配置ddns_go

3.5 配置DDNS_go

这里推荐使用DDNS_go项目,因为这个项目截止到现在有5.7K的Star,可见还是很实用的。

image-1688638171843

部分ddns_go界面如截图:

ddns-web

1、将刚刚从阿里云获取到的AccessKey ID、AccessKey Secret对应填写
2、IPv4与IPv6的启用根据实际需要填写
3、Domains填写我们申请的域名,可写入多个域名,如:xxx.foreval.cn
4、Webhook部分非必填
5、ddns_go配置好,后续不需要频繁改动,最好是将“禁止外网访问”选中,这样更加安全一些

小伙伴们填写完记得“保存” 😌

4、注意事项

  1. 家用宽带80和443端口是被网络运行商封闭的,原则上其他端口可以随便使用。前提是不能放一些色色或者菠菜等违法行为,不然一经查处,会被封停宽带。

  2. 二级域名不能通过txt验证的方式创建,这种方式不会被正确解析。

  3. 家庭宽带不开放443端口,没有办法使用https

  4. 访问本地服务需要在域名后加上端口号

6、结尾

感谢ddns_go的创作人员,带来这么好用的项目,将动态域名解析操作简单化。

感谢小伙伴的访问,DDNS_go安装过程中遇到问题可以在评论区交流沟通,也可以去github上提issues。

7、题外话

阿里云可免费试用云产品,快来看看吧 【一键直达】 无影云桌面也可以免费领取3个月的8G云端电脑。无影云桌面的申请步骤请参考:【白嫖 阿里无影云电脑4核8G1元购 轻松体验云电脑】

image-1688637077029

8、参考资料

1、https://github.com/jeessy2/ddns-go

0

评论区