• 7

用免費的反向代理加密連線回無公網IP的NAS及智慧家居中心!!註冊屬於自已的頂級網域還不用花錢!真香~

隨著IoT的興起及NAS的普及,越來越多使用者有在外面連回家中的設備需求!

這需求對於一般有公網IP的用戶來說是再簡單不過了,不管是固定IP或浮動IP,只要是公網IP,就能透過簡單的設定連線回來! 要是品牌NAS的話,就更簡單了,透過官方的內網穿透服務如QuickConnect(或稱QC)、Qlink.to…之類的程式就可以用更簡單的設定來滿足需要!!

但是還是有些人用的是社區網路、4g上網…等方式來連接網際網路,這要用戶要連上網路很簡單,但要想從外面連回來就非常困難了~ 因為家中的設備通常是處於區網中的區網… 阻攔在設備前面的是茫茫一大片無邊際的迷宮,這時你只能透過反向代理的方式從外面連接回來!!

品牌NAS的QC、qlink.to... 就是反向代理的一種,它透過服務器端及用戶端的連接,打造出一條專用隧道,讓你在外面通過這條隧道就連接回來!! 但使用這些服務是有條件的,必需是它設備的用戶才行。所以非品牌NAS且又處於無公網IP的環境中的時候,就得自已動手去挖這條隧道!

我家中的網路環境是透過4G路由器連接上網,再透過家中的mesh路由組建整棟樓的區域網路,所以前幾年都是透過frp 反向代理(或稱內網穿透)來滿足需求( 3年前對於frp使用的發文由此去)!! 使用上需要有服務器端、客戶端、域名、DNS…等等,自已架服務器端的話,還需要租一台VPS,這對於一般使用者就比較不合適! 雖然也有別人架好的frp server免費提供給大家用,但自已家的連線資料都在對方的服務器上,這也不是太安全的方式!

這次要介紹的是Cloudflare的Zero Trust功能~ 免費的反向代理。雖然是免費的,但它仍享有CDN加速,DDOS防護…等等的功能,所以是非常值得花點時間佔一下它的便宜~~

我們需要有1個自已的域名,不用擔心~ 這也有便宜可以佔~ 打開freenom的網站

打開網頁,輸入我們想要用的域名按查詢,我以mobile01為例,找到了有3個小國家的域名是免費提供給大家用的,我選擇了馬利共和國的網域:mobile01.ml

用免費的反向代理加密連線回無公網IP的NAS及智慧家居中心!!註冊屬於自已的頂級網域還不用花錢!真香~

選擇好了就開始結帳了~ 超過1年的是要收費的,但12個月以下就不用錢,所以我們選擇12個月,等明年8月份時再來續費,到時也是選12個月就可以一直免費用下去~~~

用免費的反向代理加密連線回無公網IP的NAS及智慧家居中心!!註冊屬於自已的頂級網域還不用花錢!真香~

按下一步完成結帳後(可用google帳號或是FB帳號注冊freenom的會員),這個域名就會在My Domains這邊出現了,我們可以在這邊做管理,等一下要把DNS托管到Cloudflare也是從這邊做設定~

用免費的反向代理加密連線回無公網IP的NAS及智慧家居中心!!註冊屬於自已的頂級網域還不用花錢!真香~

此時我們就得到一個免費且屬於自已的頂級域名了!
有MCSE認証但不務正業的國際貿易打雜員工
2022-08-16 19:42 發佈
接下來我們要把域名的DNS托管到Cloudflare這邊~

打開Cloudflare的網站,先注冊一個免費的帳號~

登入帳號後,我們就可以把剛才申請的mobile01.ml域名轉到這邊來做管理!
在網站的頁面,按下右邊的新增網站


在輸入您的網站這邊,輸入你剛才申請的域名,我輸入了剛才申請的mobile01.ml後,按下新增網站的按鈕


如果跳出下面的紅色字,代表域名尚未完成全球DNS同步,這在以前可能需要24小時之久,但以目前的效能,大約2分鐘就可以了,所以我們現在先去倒杯水來喝~


回到位子後把冰啤酒先放左手邊 (喂~ 你不是說去倒水),再次按下新增網站,此時全球DNS同步已完成了,所以就會來到下一步~ 我們當然是選擇免費的方案啊~ 省下來的錢拿來買冰啤酒多好啊~


按下一步來到已查詢到mobile01.ml的DNS記錄~ 我們是剛申請的域名,蝦咪記錄攏宗嘸~不管它,按繼續!



這時的它會要求我把剛才申請的域名解析改成cloudflare來管理~ 我們依序把下面2個Name server給設定到freenom網站



打開剛才申請域名的freenom網站,登入會員,來到My Domains,按下在mobile01.ml域名後面的Manage Domain.


在Management Tools的欄位,按下Nameservers



選擇Use custom nameservers(enter below),把剛才Cloudflare給你的2個Name Servers給填上去~ 按下更新~ 此時我們的mobile01.ml的解析就換由cloudflare接管了~

有MCSE認証但不務正業的國際貿易打雜員工
有事臨退~ 明日繼續!!

有MCSE認証但不務正業的國際貿易打雜員工
加分先!!好棒的介紹文~
期待大作~
回來了~~ 網路新手繼續發廢文~!! 高手請看熱鬧就好~~

昨晚我完成了:
頂級域名的申請:mobile01.ml
並將域名的解析轉移給了Cloudflare

今天我就要試著用mobile01.ml 創建一條隧道連接用4G上網環境中的PC上用VM虛擬出來的NAS

要測試的是在外面連回位於沒有公網IP下的區網內的另一網段區網中的其中1台電腦上用虛擬機虛擬出來的NAS,差不多如下圖所示,人在外面透過mobile01.ml的域名連線回到192.168.1.7這台虛擬的NAS。




打開NAS,先安裝Docker



安裝好後打開Docker,在倉庫中搜尋cloudflare,會找到很多映像檔,我們選擇cloudflare/cloudflared這個下載



版本我就選最新版



下載完成後,就可以在映像檔這邊看到它了!




官方文件上給了2種方法來創建隧道 (官方文件在此):




一種是在Cloudflare網站上操作,在那邊新增隧道及相關設定,最後用token密鑰連接的方式,但這個方式我沒有成功,日誌上說驗証不通過… 我試著打開日誌上的網址,但也沒辦法使用… 最終放棄這個看似操作較簡單的方案!


看來只能走官方給的第2種方案了,CLI模式~ 但是… 又遇到一個問題,NAS上的Docker沒有CLI可用,查了後好像是要改script,這已超出新手的範圍,所以就用最笨的方法吧~ (請原諒我這個笨笨的新手)
有MCSE認証但不務正業的國際貿易打雜員工
cchhsu

這邊會失敗的原因解法如下:用簡單方案是會過的. 1) 在cloudflare網站上建立tunnel後選擇debian 產生token 2) 回到NAS上面cloudflare容器上面的 執行指令那邊

2023-12-12 23:39
cchhsu

在執行指令那邊打tunnel --no-autoupdate run --token [token內容] , 結束後啟動容器跟回到cloudflaire網站上查看tunnel那邊就會發現已經連線成功

2023-12-12 23:41
看了官方的文件,要先把密鑰文件給下載回到本地,它會存放到這個路徑中: /home/nonroot/.coludflared ,但這個路徑我們是看不到的,所以我們要把它挂載到我們可以進得去的目錄中…

所以我用剛下載回來的映像檔創建了一個容器:


在進階設定這邊,我把/home/nonroot/.coludflared 挂載到docker/cloudflare的目錄中



網路勾選和宿主一樣的網路



在環境設定上,我在指令欄填上官方文件CLI模式的第1條命令:tunnel login


完成後啟動容器,打開容器的日誌可以看到一個網址,打開這個網址就會連上cloudflare網站,我們可以看到托管的網域出現在上面,我們點選mobile01.ml的網域:


它會跳出對話框,問你是否要授權給新建立的隧道,按下授權就可以了,証書會自動下載回到本地的NAS中




但是~~~ 上天總是喜歡突然扔給眾生一個殘酷的考驗~ 我打開docker/cloudflare的目錄,卻看不到有任何的証書存放在此~ 於是打開日誌一看,啊~~~ 沒有/home/nonroot/.coludflared目錄的寫入權限~~

有MCSE認証但不務正業的國際貿易打雜員工
在網上尋找解答時,發現Cloudflare的論壇上有人提出了解決的方案


於是登入NAS,依樣畫葫蘆!


做完後再次啟動容器~ 這次總算是成功把密鑰給下載回來了!


接著我們要進行隧道的創建:官方文件給的命令是:
但我們容器建好後,就沒辦法在現有容器上將第一步的命令的tunnel login改成第二步的命令了 tunnel create <name>

所以我們選中容器按右鍵,選擇匯出:



匯出到docker/cloudflare文件夾中,我們打開文件管理員,在docker的cloudflare子目錄中可以看到有一個pem檔(第一步所下載回來的密鑰),和一個josn檔(這是剛才我們剛才匯出的檔案),現在打開json檔來編輯:把cmd這一行由tunnel login改成tunnel create mobile01 命令中的mobile01是隧道的名稱,可以隨你命名,這和域名無關~~


改好後存檔,回到docker中,在容器上按右鍵,匯入剛才改好的設定檔,匯入後會跳出一個對話框,我們把容器的名稱命名改一下 (我是把1改成2):




於是現在就複制了一個容器,它的命令是tunnle create mobile01,我們啟動容器2後,會在cloudflare網站上建立一個名為mobile01的隧道。

接著做官方文件的第三步,在DNS RECORD中,創建一個CNAME別名給剛才創建的隧道使用,官方的文件命令是:tunnel route dns <uuid or="" name=""> <hostname>,所以依上面的方法我們匯出第2個容器的設定檔並編輯它:把剛才的tunnel create mobile01 改成 tunnel route dns mobile01 dsm.mobile01.ml <---- dsm這個名稱是我要用來連接nas的子域名,隨便你取名,要是有多台設備,可依設備名來命名!!


改好後存檔,並在容器2上按右鍵匯入剛才修改的檔案,並給它容器3的名稱


啟動剛建立的容器3,它會在mobile01.ml域名中,建立一條CNAME別名解析,把子網域dsm連接到mobile01的隧道



此時我們已經完成了大部份的工作,只剩下創建config.yaml 設定檔。並把隧道接通了~</hostname></uuid></name>
有MCSE認証但不務正業的國際貿易打雜員工
終於來到激動人心的地方了~~

依官方文件的說明,我們還要建立一個名為config.yaml的設定檔,來定義隧道是連到區網中的哪一台設備,官方的config.yaml範本如下:

tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json

ingress:
- hostname: gitlab.widgetcorp.tech
service: http://localhost:80
- hostname: gitlab-ssh.widgetcorp.tech
service: ssh://localhost:22
- service: http_status:404

現在我們就非常好操作了,在Win10中新增一個名為config.yaml檔案並打開它,將內容依我們的需求修改一下:
tunnel: 2f6b1378-e4aa-4ca9-a787-cab232f366f3 (這是隧道的UUID,在docker/cloudflare目錄下可以找到)


credentials-file: /home/nonroot/.cloudflared/2f6b1378-e4aa-4ca9-a787-cab232f366f3.json (同上)
ingress:
- hostname: dsm.mobile01.ml
service: http://localhost:5000
- service: http_status:404


存檔後上傳到NAS上,放在docker/cloudflare目錄下和其它檔案放一起

接著我們要把命令改成接通隧道
依上面的方式匯出容器3的設定檔,並把命令由tunnel route dns mobile01 dsm.mobile01.ml 改成 tunnel run mobile01
存檔後由容器3匯入並給它新的名稱容器4或其他的名稱都可以,這是最後一個容器。以後就是用它來做連接了,前面的3個容器可以不要了!!

最後將最後建立的容器啟動後,就成功的接通自已創建的隧道了~~

有MCSE認証但不務正業的國際貿易打雜員工
我們來到cloudflare網站,登入帳號後,進入到Zero Trust可看到隧道mobile01已啟用



進入mobile01.ml的DNS管理中也可看到有一條CNAME記錄,將子網域dsm連接到隧道的UUID上


所有的工作都已完成~~ 現在就是開牌的時刻了~~

打開dsm.mobile01.ml這個網址,到底可不可以成功的連接上這台位於無公網IP且位於區網中的區網中的電腦中的虛擬機器!!

當然結果是成功的啊~ 我們都依官方的文件做完所有要求了~





總結官方文件的步驟如下,只有簡單的幾行:
1、tunnel login,授權隧道存取網域並取得密鑰文件存至本地端
2、tunnel create <name> </name>創建隧道,並取得隧道的UUID
3、tunnel route dns <uuid or="" name=""> <hostname> </hostname></uuid>,創建DNS路由記錄
4、編寫config.yaml設定檔
5、tunnel run <uuid or="" name=""></uuid> , 啟動隧道連接。

以上是用Docker創建的方式,cloudflare還有提供 windows、mac、linux多種系統的連接~ 有興趣的可以自行上官網研究~~ 就當拿來練習一下也是不錯的!!
有MCSE認証但不務正業的國際貿易打雜員工
明年8月應該是沒辦法直接續費的,一般都要等pending期過了才行哦
  • 7
內文搜尋
X
評分
評分
複製連結
請輸入您要前往的頁數(1 ~ 7)
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?