來源:公眾號【魚鷹談單片機(jī)】,ID ??:emOsprey
前面的筆記《如何像訪問百度一樣訪問家里的服務(wù)器?(三)》已經(jīng)通過公網(wǎng) IP +?橋接,完成了基本功能,已經(jīng)可以通過公網(wǎng) IP?在全國各地訪問家里的服務(wù)器了。
但是有個麻煩的地方是,雖然運營商給我的是公網(wǎng) IP,但卻是動態(tài)的,兩三天就更換一次,因此我們需要一種服務(wù),實時告訴我們家里寬帶的當(dāng)前 IP 是多少才能訪問。
我們可以讓家里的服務(wù)器主動發(fā)郵件的方式告訴我們當(dāng)前的 IP,但是樹莓派操作了一番,還挺麻煩的,沒成功,因此我們可以借由第三方免費的 DDNS 服務(wù)實時更新 IP。這樣我們可以直接通過固定域名訪問家里的服務(wù)器,我們只要記住域名即可。
這里魚鷹選擇的是公云:https://www.pubyun.com/products/dyndns/
手機(jī)注冊好之后,你就可以申請一個免費域名了。
可以看到我已經(jīng)新建了一個域名,如?embedded_osprey.f3322.net,前面的?embedded_osprey 主機(jī)名可以自己設(shè)定,后面的 .f3322.net?是固定的,畢竟用的是別人的免費服務(wù)。
現(xiàn)在我們只是有個域名,但是并沒有告訴它這個域名指向的地址是多少,因此我們需要一個客戶端告訴公云的服務(wù)器我們現(xiàn)在的 IP。
目前客戶端只支持 window,當(dāng)然Linux 的話不需要客戶端,直接用命令即可(需安裝 lynx,一般都有)。
我使用的是樹莓派,因此直接使用命令行形式即可。
本來只要執(zhí)行一次命令即可上傳 IP,但是因為我們的 IP 是動態(tài)的,因此我們需要定時執(zhí)行這條命令,讓他更新當(dāng)前公網(wǎng) IP。
有點類似定時發(fā)郵件告訴 公云 服務(wù)器自己的 IP,以便更新 IP。
這里我們可以使用 crontab 實現(xiàn)定時功能。
首先寫一個非常簡單的更新腳本 update_ddns.sh(這里根據(jù)需要填寫公云網(wǎng)站的用戶名和密碼,自定義域名等信息,如上圖顯示):
#!/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/,并給腳本可執(zhí)行權(quán)限:
sudo chmod +x /usr/local/bin/update_ddns.sh
現(xiàn)在可以嘗試一下執(zhí)行腳本,正常情況下,應(yīng)該能輸出當(dāng)前公網(wǎng) IP,可以對比一下 https://www.ip138.com/ 的 ip 查詢結(jié)果 。
正常命令執(zhí)行結(jié)果如下:
確認(rèn)腳本工作無誤后,即可加入定時器中定時執(zhí)行(可以使用 nano 編輯器,操作更簡單),如圖:
*/10 * * * * root /usr/local/bin/update_ddns.sh
這里我們定時 10 分鐘更新一次。
總結(jié)下來就是,樹莓派定時執(zhí)行登錄公云服務(wù)器并更新域名 IP 的任務(wù),這樣公云的服務(wù)器就一直更新著我們最新的 IP 地址,當(dāng)我們使用域名登錄時,會查詢到公云的服務(wù)器,從而就可以知道最新的 IP,最終登錄我們家里的服務(wù)器樹莓派了。
我們可以使用如下方式查詢域名所所對應(yīng)的 IP 是否正常:
當(dāng)我們通過 nslookup 查詢設(shè)定域名的 IP 地址,和家里的寬帶IP是一致的話,證明我們的域名成功了。
此時我們可以在全國任何一個地方通過域名直接訪問服務(wù)器了。類似訪問百度一樣,YYDS!!
http://osprey.f3322.net:20080/
大家可以嘗試使用瀏覽器訪問上面網(wǎng)頁,看看是否能訪問魚鷹搭建的簡單網(wǎng)頁(大佬輕踩,不要攻擊咱的服務(wù)器哈,不值得)
注意事項
1、因為我們需要登錄公云服務(wù)器更新我們的寬帶 IP,因此不要輕易更換密碼(因為更換了密碼,樹莓派無法登錄公云,也就意味著無法更新 IP,當(dāng)你使用域名登錄時,就無法通過公云查詢到 IP 了)
2、因為我們對公云服務(wù)器非常依賴,萬一公云服務(wù)器出現(xiàn)問題,那我們自己的服務(wù)器可能就登錄不了,因此需要有備選方案。
1)通過郵件之類的方式在 IP 更新后主動將最新 IP 發(fā)到我們的郵箱,這樣我們可以在域名訪問出現(xiàn)問題的情況下,仍然可以通過 IP 訪問。
2)使用可以遠(yuǎn)程查看路由器 IP 的路由器。比如 tp-link 手機(jī)客戶端,可以隨時在手機(jī)查看當(dāng)前的路由器 IP 地址,相當(dāng)方便。
3、注意更換 SSH 常用登錄端口 22 為其他端口號,防止被黑客暴力破解。更保險的方式是,關(guān)閉 ssh 密碼登錄方式,只能通過私鑰方式登錄,防止被掃描端口號,從而被暴力破解。可以參考連接:https://zhuanlan.zhihu.com/p/89872671
到此,個人服務(wù)器算是搭建好了,目前魚鷹主要當(dāng)云盤使用,后期可能會為其他聯(lián)網(wǎng)設(shè)備做內(nèi)網(wǎng)穿透服務(wù),或者搭建調(diào)試日志服務(wù)器,亦或者個人網(wǎng)頁等等,后期有時間也可能會繼續(xù)更新這個系列,歡迎繼續(xù)關(guān)注。
總之,個人服務(wù)器,YYDS?。?!