动态域名服务 DDNS,YYDS(四)

news2024/11/24 9:18:48

1be6a26a8697b8e8f61a3d0441108045.png

来源:公众号【鱼鹰谈单片机】

作者:鱼鹰Osprey

ID   :emOsprey

前面的笔记《如何像访问百度一样访问家里的服务器?(三)》已经通过公网 IP + 桥接,完成了基本功能,已经可以通过公网 IP 在全国各地访问家里的服务器了。

但是有个麻烦的地方是,虽然运营商给我的是公网 IP,但却是动态的,两三天就更换一次,因此我们需要一种服务,实时告诉我们家里宽带的当前 IP 是多少才能访问。

我们可以让家里的服务器主动发邮件的方式告诉我们当前的 IP,但是树莓派操作了一番,还挺麻烦的,没成功,因此我们可以借由第三方免费的 DDNS 服务实时更新 IP。这样我们可以直接通过固定域名访问家里的服务器,我们只要记住域名即可。

这里鱼鹰选择的是公云:

https://www.pubyun.com/products/dyndns/

手机注册好之后,你就可以申请一个免费域名了。

3129399024f94368e08ff92b5c8ddf33.png

可以看到我已经新建了一个域名,如 embedded_osprey.f3322.net,前面的 embedded_osprey 主机名可以自己设定,后面的 .f3322.net 是固定的,毕竟用的是别人的免费服务。

现在我们只是有个域名,但是并没有告诉它这个域名指向的地址是多少,因此我们需要一个客户端告诉公云的服务器我们现在的 IP。

168d84df7c9da18d388fcf182307da76.png

目前客户端只支持 window,当然Linux 的话不需要客户端,直接用命令即可(需安装 lynx,一般都有)。

f339abe2f36f328f873daf4051716c91.png

我使用的是树莓派,因此直接使用命令行形式即可。

本来只要执行一次命令即可上传 IP,但是因为我们的 IP 是动态的,因此我们需要定时执行这条命令,让他更新当前公网 IP。

有点类似定时发邮件告诉 公云 服务器自己的 IP,以便更新 IP。

这里我们可以使用 crontab 实现定时功能。

首先写一个非常简单的更新脚本 update_ddns.sh(这里根据需要填写公云网站的用户名和密码,自定义域名等信息,如上图显示):

#!/bin/bash
ipaddr=`lynx -mime_header -auth=username:password "http://members.3322.net/dyndns/update?system=dyndns&hostname=xxxx.f3322.net" | tail  -n 1 | awk '{print $2}'`


date=`date "+%y-%m-%d %H:%M"`
echo $date $ipaddr

将脚本存放到合适位置,如 /usr/local/bin/,并给脚本可执行权限:

sudo chmod +x /usr/local/bin/update_ddns.sh

现在可以尝试一下执行脚本,正常情况下,应该能输出当前公网 IP,可以对比一下 https://www.ip138.com/ 的 ip 查询结果 。

bb11d563917e5573c2c48abc8565444f.png

正常命令执行结果如下:

780f017064767b84a5c407217ece2f24.png

确认脚本工作无误后,即可加入定时器中定时执行(可以使用 nano 编辑器,操作更简单),如图:

f773e38dfd2cdad148fd92ec61ee01ba.png

*/10 *  * * *   root    /usr/local/bin/update_ddns.sh

这里我们定时 10 分钟更新一次。

总结下来就是,树莓派定时执行登录公云服务器并更新域名 IP 的任务,这样公云的服务器就一直更新着我们最新的 IP 地址,当我们使用域名登录时,会查询到公云的服务器,从而就可以知道最新的 IP,最终登录我们家里的服务器树莓派了。

我们可以使用如下方式查询域名所所对应的 IP 是否正常:

3f9b232122ce86b6bdff95575f96e37f.png

当我们通过 nslookup 查询设定域名的 IP 地址,和家里的宽带IP是一致的话,证明我们的域名成功了。

此时我们可以在全国任何一个地方通过域名直接访问服务器了。类似访问百度一样,YYDS!!

http://osprey.f3322.net:20080/

大家可以尝试使用浏览器访问上面网页,看看是否能访问鱼鹰搭建的简单网页(大佬轻踩,不要攻击咱的服务器哈,不值得)

76a2c71bb4c54f4ca0c23edeb6e95b6e.png

注意事项

1、因为我们需要登录公云服务器更新我们的宽带 IP,因此不要轻易更换密码(因为更换了密码,树莓派无法登录公云,也就意味着无法更新 IP,当你使用域名登录时,就无法通过公云查询到 IP 了)

2、因为我们对公云服务器非常依赖,万一公云服务器出现问题,那我们自己的服务器可能就登录不了,因此需要有备选方案。

1)通过邮件之类的方式在 IP 更新后主动将最新 IP 发到我们的邮箱,这样我们可以在域名访问出现问题的情况下,仍然可以通过 IP 访问。

2)使用可以远程查看路由器 IP 的路由器。比如 tp-link 手机客户端,可以随时在手机查看当前的路由器 IP 地址,相当方便。

3、注意更换 SSH 常用登录端口 22 为其他端口号,防止被黑客暴力破解。更保险的方式是,关闭 ssh 密码登录方式,只能通过私钥方式登录,防止被扫描端口号,从而被暴力破解。可以参考连接:https://zhuanlan.zhihu.com/p/89872671

到此,个人服务器算是搭建好了,目前鱼鹰主要当云盘使用,后期可能会为其他联网设备做内网穿透服务,或者搭建调试日志服务器,亦或者个人网页等等,后期有时间也可能会继续更新这个系列,欢迎继续关注。

总之,个人服务器,YYDS!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/644673.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试问题总结---SLAM部分

1、本栏用来记录社招找工作过程中的内容,包括基础知识学习以及面试问题的记录等,以便于后续个人回顾学习; 暂时只有2023年3月份,第一次社招找工作的过程; 2、个人经历: 研究生期间课题是SLAM在无人机上的应用,有接触SLAM、Linux、ROS、C/C++、DJI OSDK等; 3、参加工作后…

嵌入式软件开发岗位----求职过程记录(基础知识和面经总结)

1、本栏用来记录社招找工作过程中的内容,包括基础知识以及面试问题等,以便于后续个人回顾学习; 暂时只有2023年3月份,第一次社招找工作的过程; 2、个人经历: 研究生期间课题是SLAM在无人机上的应用&#xf…

深入理解 JavaScript Promise

1. 引言 JavaScript中的Promise是一种处理异步操作的机制,它提供了一种优雅的方式来处理回调函数地狱和异步代码的流程控制。本文将深入介绍JavaScript中的Promise,帮助读者更好地理解和应用Promise。 2. Promise的基本概念 Promise是一个代表异步操作…

唯一客服系统(独立部署无限多开)-知识库ChatGPT-支持微信公众号小程序-钉钉-PC和H5全渠道客服系统...

产品介绍 唯一客服系统是基于Golang语言自主开发的在线客服系统。创立于2019年初,是一款连接企业与客户的即时通讯项目,遵循快速、简洁的开发原则,是为中小企业量身定制的全渠道客服系统,致力于帮助广大开发者/公司快速部署整合私…

第四十七章 液态网络

如弗洛格老师所料,巴哥奔果真倒头睡掉了一夜一昼又一夜。 再次醒来,浑身酸痛仍在,却是以鸡皮疙瘩的形式存在于皮肤上。临鸾连续弹出两个数字,其一是时间,其二是任务量。 时间很快得到室友们的确认,没错&…

Vue中如何进行移动端手势操作?

Vue中如何进行移动端手势操作? 在移动端开发中,手势操作是非常常见的功能,例如滑动、缩放、旋转等操作。在Vue.js中,我们可以使用第三方插件或者自己编写指令来实现手势操作。本文将介绍如何在Vue.js中实现移动端手势操作。 使用…

OpenGL蓝宝书第十章学习笔记:计算着色器

前言 本篇在讲什么 OpenGL蓝宝书第十章学习笔记计算着色器 本篇适合什么 适合初学OpenGL的小白 本篇需要什么 对C语法有简单认知 对OpenGL有简单认知 最好是有OpenGL超级宝典蓝宝书 依赖Visual Studio编辑器 本篇的特色 具有全流程的图文教学 重实践,轻…

Idea+maven+springboot项目搭建系列--2 整合Rabbitmq完成客户端服务器端消息收发

前言:本文通过springBoot -maven 框架,对Rabbitmq 进行整合,完成客户端消息的发送和消费; 1 为什么要使用Rabbitmq: RabbitMQ 是一个可靠的、灵活的、开源的消息中间件,具有以下优点: 异步通信…

【C++】C++前言

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 1.什么是C 2.C的发展史 3.C的重要性 a.使用广泛 b.C/C的应用 1.操作系统以及大型系统软件开发 2.服务器端开发 3.游戏开发 4.嵌入式和物联网领域 5.数字图像处理 6.人工智…

AVL树的解析

我们在之前的学习里面已经发现了,搜索二叉树是有一些问题的。它可能会存在单边树的问题,如果你插入的值是有序的话,就会导致这个问题。 那我们肯定是要来解决一下的,如何解决呢? 》一种解决方案是AVL树,还有…

【云原生 | 54】Docker三剑客之Docker Compose应用案例二:大数据Spark集群

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

天下苦 Spring 久矣,Solon v2.3.3 发布

Solon 是什么框架? 一个,Java 新的生态型应用开发框架。它从零开始构建,有自己的标准规范与开放生态(全球第二级别的生态)。与其他框架相比,它解决了两个重要的痛点:启动慢,费资源。…

HarmonyOS学习路之开发篇—Java UI框架(PositionLayoutAdaptiveBoxLayout)

PositionLayout 在PositionLayout中,子组件通过指定准确的x/y坐标值在屏幕上显示。(0, 0)为左上角;当向下或向右移动时,坐标值变大;允许组件之间互相重叠。 PositionLayout示意图 布局方式 PositionLayout以坐标的形式控制组件的…

基于Hexo和Butterfly创建个人技术博客,(4) 使用通用的Markdown语法编写博客文章

Hexo官司网查看 这里 hexo的博文建议是用markdown语法来写,原因markdown简单通用,比如很多博客平台都会提供md编辑器,这样如果我们想把同一篇文章发到多个博客平台上(事实上很多人也是这样做的),md应该是最好的编写方法了&#xf…

目标检测数据集---交通信号数据集

✨✨✨✨✨✨目标检测数据集✨✨✨✨✨✨ 本专栏提供各种场景的数据集,主要聚焦:工业缺陷检测数据集、小目标数据集、遥感数据集、红外小目标数据集,该专栏的数据集会在多个专栏进行验证,在多个数据集进行验证mAP涨点明显,尤其是小目标、遮挡物精度提升明显的数据集会在该…

js控制台 console.log 输出美化,及其他操作

1.格式美化 console.log(%c红色%c蓝色%c绿色, color: red;, color: blue;, color: green;) console.log(%c一段文字\n换行一下\n%c SmileSay %c 版本:1.0.0 ,color: #3eaf7c; font-size: 16px;line-height:30px;,background: #35495e; padding: 4px; border-radius…

数仓数据质量保障方法

一、有赞数据链路 1、数据链路介绍 首先介绍有赞的数据总体架构图: 自顶向下可以大致划分为应用服务层、数据网关层、应用存储层、数据仓库,并且作业开发、元数据管理等平台为数据计算、任务调度以及数据查询提供了基础能力。 以上对整体架构做了初步…

射频电路layout总结

射频电路板设计由于在理论上还有很多不确定性,因此常被形容为一种“黑色艺术”,但这个观点只有部分正确,RF电路板设计也有许多可以遵循的准则和不应该被忽视的法则。在实际设计时,真正实用的技巧是当这些准则和法则因各种设计约束…

OpenCV(图像处理)-基于Oython-滤波器(低通、高通滤波器的使用方法)

1.概念介绍2. 图像卷积filter2D() 3. 低通滤波器3.1 方盒滤波和均值滤波boxFilter()blur() 3.2 高斯滤波(高斯噪音)3.3 中值滤波(胡椒噪音)3.4 双边滤波 4. 高通滤波器4.1Sobel(索贝尔)(高斯&am…

软考A计划-系统架构师-知识点汇总-下篇

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…