来源:公众号【鱼鹰谈单片机】
作者:鱼鹰Osprey
ID :emOsprey
前面的笔记《如何像访问百度一样访问家里的服务器?(三)》已经通过公网 IP + 桥接,完成了基本功能,已经可以通过公网 IP 在全国各地访问家里的服务器了。
但是有个麻烦的地方是,虽然运营商给我的是公网 IP,但却是动态的,两三天就更换一次,因此我们需要一种服务,实时告诉我们家里宽带的当前 IP 是多少才能访问。
我们可以让家里的服务器主动发邮件的方式告诉我们当前的 IP,但是树莓派操作了一番,还挺麻烦的,没成功,因此我们可以借由第三方免费的 DDNS 服务实时更新 IP。这样我们可以直接通过固定域名访问家里的服务器,我们只要记住域名即可。
这里鱼鹰选择的是公云:
https://www.pubyun.com/products/dyndns/
手机注册好之后,你就可以申请一个免费域名了。
可以看到我已经新建了一个域名,如 embedded_osprey.f3322.net,前面的 embedded_osprey 主机名可以自己设定,后面的 .f3322.net 是固定的,毕竟用的是别人的免费服务。
现在我们只是有个域名,但是并没有告诉它这个域名指向的地址是多少,因此我们需要一个客户端告诉公云的服务器我们现在的 IP。
目前客户端只支持 window,当然Linux 的话不需要客户端,直接用命令即可(需安装 lynx,一般都有)。
我使用的是树莓派,因此直接使用命令行形式即可。
本来只要执行一次命令即可上传 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 查询结果 。
正常命令执行结果如下:
确认脚本工作无误后,即可加入定时器中定时执行(可以使用 nano 编辑器,操作更简单),如图:
*/10 * * * * root /usr/local/bin/update_ddns.sh
这里我们定时 10 分钟更新一次。
总结下来就是,树莓派定时执行登录公云服务器并更新域名 IP 的任务,这样公云的服务器就一直更新着我们最新的 IP 地址,当我们使用域名登录时,会查询到公云的服务器,从而就可以知道最新的 IP,最终登录我们家里的服务器树莓派了。
我们可以使用如下方式查询域名所所对应的 IP 是否正常:
当我们通过 nslookup 查询设定域名的 IP 地址,和家里的宽带IP是一致的话,证明我们的域名成功了。
此时我们可以在全国任何一个地方通过域名直接访问服务器了。类似访问百度一样,YYDS!!
http://osprey.f3322.net:20080/
大家可以尝试使用浏览器访问上面网页,看看是否能访问鱼鹰搭建的简单网页(大佬轻踩,不要攻击咱的服务器哈,不值得)
注意事项
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!!!