實現(xiàn)個人服務(wù)器自由:內(nèi)網(wǎng)穿透解決方案

前言
一直想搞個屬于自己的服務(wù)器,但是ecs小資的價格就足以讓我望而卻步了,所以就想著搞個內(nèi)網(wǎng)穿透玩玩。最開始,我是打算等樹莓派拿回來再搞的,但是對于有趣的事情,我總是按耐不住內(nèi)心的喜悅和即刻行動的沖動,所以就在最近開始忙碌的前些時候(大概上周六,一直拖到今天),我開始搞起了內(nèi)網(wǎng)穿透,但由于近來一直太忙,也沒有時間更新內(nèi)容,所以內(nèi)容更新就被一拖又拖(想必到年底了各位小可愛應(yīng)該也很忙),然后就一直拖到今天,因此今天我必須終結(jié)這塊的內(nèi)容!
內(nèi)網(wǎng)穿透
目前,內(nèi)網(wǎng)穿透的解決方案比較豐富,今天我們來分享其中的兩種:Ngrok和FRP。
Ngrok
ngrok是一個反向代理,通過在公共的端點和本地運行的 Web服務(wù)器之間建立一個安全的通道。ngrok可捕獲和分析所有通道上的流量,便于后期分析和重放。
通過nogrok實現(xiàn)內(nèi)網(wǎng)穿透也很簡單,而且網(wǎng)上也有很多ngrok免費服務(wù)器資源,這里我們以Sunny-Ngrok為例,演示下內(nèi)網(wǎng)穿透的實現(xiàn)方式。
注冊賬戶
首先我們訪問Sunny-Ngrok的官方網(wǎng)址,點擊注冊:
https://www.ngrok.cc/

然后填寫相關(guān)注冊信息:

隨后就可以注冊完成。
隧道管理
登錄成功后,點擊隧道管理菜單,可以看到如下信息,當(dāng)然剛注冊的賬戶開通隧道哪里的信息應(yīng)該都是零:

之后點擊開通隧道,然后選擇最后一個Ngrok免費服務(wù)器,你就可以白嫖了。因為是白嫖,所以速度自然不會太快,可以看到,這里限速128k,速度自然不會太快,不過湊合能用


點擊確定添加之后,還需要進一步確認(rèn)

完成上面的配置工作之后,我們點擊隧道管理,然后就可以看到我們的隧道信息,這里最核心的數(shù)據(jù)就是我們的隧道id,后面我們在進行內(nèi)網(wǎng)穿透的時候要用到。

如果覺得隧道配置有問題,也可以點擊編輯進行修改:

這里的本地端口就是我們本地的服務(wù)地址,我的服務(wù)端口就是8889,本來到到這里就可以正常進行內(nèi)網(wǎng)穿透了,但是由于拖得有點久了,服務(wù)商現(xiàn)在需要實名認(rèn)證才可以使用隧道,所以需要換個服務(wù)商看下(好吧,找了半天,沒找到合適的 (-__-)。
如果你打算用這個服務(wù)商的Ngrok服務(wù),完成如下配置之后只需要下載官方提供的客戶端軟件,然后運行,并輸入隧道id即可完成內(nèi)網(wǎng)穿透。

FRP
frp是一個高性能的反向代理應(yīng)用,可以幫助您輕松地進行內(nèi)網(wǎng)穿透,對外網(wǎng)提供服務(wù),支持tcp,http, https 等協(xié)議類型,并且 web服務(wù)支持根據(jù)域名進行路由轉(zhuǎn)發(fā)。FRP也算是比較老牌的內(nèi)網(wǎng)穿透工具,而且網(wǎng)上有很多豐富的示例,下面我們就來演示如何通過FRP實現(xiàn)內(nèi)網(wǎng)穿透。
下載
第一步依然是下載工具包,由于frp是基于go實現(xiàn)的一款開源內(nèi)網(wǎng)穿透工具,所以我們可以直接去github下載即可,另外各位小伙伴不要吝嗇自己的start,給大佬點個贊,讓這個項目更好地延續(xù):

項目地址:
https://github.com/fatedier/frp
下載方式也很簡單,直接點擊右側(cè)Releses即可,可以看到目前最新版本是0.38.0:

這里我直接選擇win版本,各位小伙伴根據(jù)自己需要選擇對應(yīng)版本即可。
frp映射基本語法
首先解壓我們剛剛下載的軟件包,結(jié)構(gòu)大致如下:

其中ini結(jié)尾的都是frp的配置文件,等下我們的內(nèi)網(wǎng)穿透配置就通過配置frpc.ini來實現(xiàn)。我們先來看下frpc.ini,默認(rèn)情況下它是這樣的:

其中common配置節(jié)點是不能刪除的,它下面配置的通用的配置,類似于頂級域名。server_addr就是我們要映射的服務(wù)器地址,可以是是具體的ip地址或者域名(服務(wù)提供商提供的frp服務(wù)器IP 地址或者域名地址),server_port就是服務(wù)器穿透的端口,也就是服務(wù)提供商提供的frp 服務(wù)端口號。下面還可以配置token等驗證信息,具體的可以去看下frp的官方文檔:
https://gofrp.org/docs/
底下的ssh配置節(jié)點就是我們可以修改和添加的映射節(jié)點了,type指定映射協(xié)議類別,支持的類別還挺豐富的,感興趣的小伙伴可以詳細研究下:

這里我就直接用tcp協(xié)議了,下面的local_ip表示要映射的內(nèi)網(wǎng)地址,可以是本機地址,也可以是內(nèi)網(wǎng)其他機器地址,我覺得應(yīng)該也可以配置其他外網(wǎng)地址(那是不是太多此一舉了),local_port表示我們要映射的內(nèi)網(wǎng)服務(wù)端口,remote_port就是外網(wǎng)的端口(服務(wù)提供商提供的端口)。
尋找frp服務(wù)商
由于沒有公網(wǎng)ip,另外還想白嫖,所以需要找到可用的frp服務(wù)器。下面我們以freefrp.net提供的frp服務(wù)器為例,演示下如何通過frp實現(xiàn)內(nèi)網(wǎng)穿透。
網(wǎng)址如下:
https://freefrp.net/docs.html
網(wǎng)站首頁已經(jīng)提供了我們需要的配置信息,而且不需要注冊哦,是不是很良心呢?

同時網(wǎng)站首頁給出了端口范圍:

拿到這些信息之后我們要修改下frpc.ini文件,我最終的修改結(jié)果如下:

需要注意的的是,這里的配置名必須唯一(也就是這里的yunzhongzhi_linux_ssh),不能和其他用戶的沖突,然后通過如下命令啟動frp內(nèi)網(wǎng)穿透:
frpc?-c?./frpc.ini
如果有如下錯誤提示可以換個服務(wù)器試下:

從這張圖中可以看到,最后提示我啟動代理成功(start proxy success),然后我們通過剛才配置的域名和端口訪問下:

這里我配置的是linux的ssh服務(wù),配置完成之后我們就可以在外網(wǎng)環(huán)境下訪問linux了,其他服務(wù)配置類似,不同的就只有地址和端口,我順手還測試了下網(wǎng)絡(luò),延遲差不多有100毫秒,也算能夠接受。
之前有小伙伴私信問我是否可以修改samba服務(wù)的端口,其實如果通過內(nèi)網(wǎng)穿透的方式,完全可以實現(xiàn)這個需求。
其他服務(wù)器:

原本到這里就結(jié)束了,但是我呢,是一個喜歡送佛送到西的小可愛,所以我還幫各位小可愛找到了一個速度更快的frp服務(wù)器,當(dāng)然也是白嫖的:

點擊免費獲取token的鏈接,然后關(guān)注下博主的公眾號(我是我的哦),然后會自動收到token,建議想用的小可愛都關(guān)注下吧,畢竟拿人的手短。配置方法和上面一樣,網(wǎng)速確實要比上面演示的要快一點:

可以看到這里的網(wǎng)絡(luò)延遲只有30毫秒左右,比上面的快多了。需要注意的是,用這個服務(wù)器的話,端口范圍是5000-6000。
網(wǎng)站地址如下:
http://freefrp.wlphp.com/#first
結(jié)語
內(nèi)網(wǎng)穿透相比于云服務(wù)器還是要便宜很多的,如果能搞到公網(wǎng)ip的小伙伴那就不要太爽了,完全不需要任何其他服務(wù)器,完全可以直接搭建自己的frp服務(wù),甚至可以直接用nginx,我原本也是打算這么搞的,但是奈何移動沒有公網(wǎng)IP,而且就算有,可能也不好申請(讓我回頭再問問),所以暫時就放棄了。好了,關(guān)于內(nèi)網(wǎng)穿透的內(nèi)容我們就分享這么多吧,感興趣的小伙伴可以自己親自動手試下!
最后,再善意提醒下各位小伙伴,使用免費的frp存在安全風(fēng)險,有條件的小伙伴還是通過正規(guī)的服務(wù)商購買服務(wù)比較好,免費的frp服務(wù)玩玩還可以,如果真正用來傳輸重要數(shù)據(jù),出了信息泄露的問題就有點得不償失了!好了,各位小可愛,晚安吧!
