背景
雖然自己有一臺阿里云的服務(wù)器肤晓,但是限于云服務(wù)器的配置不高甥温,存儲也不大励堡,想著以后如若有擴(kuò)展存儲的需求與其購買加錢米碰,不如自己在本地搭一個樹莓派跑一些自己需要的服務(wù)窝革。但是絕大多數(shù)家庭寬帶用戶是沒有公網(wǎng)ip的,于是吕座,就繞不過內(nèi)網(wǎng)穿透虐译。
對比了好多種內(nèi)網(wǎng)穿透方案,發(fā)現(xiàn)成本比較低的吴趴,只有ngrok和cpolar了菱蔬。如果只是用來測試,自己用的話,ngrok和cpolar的免費(fèi)版都已經(jīng)夠用拴泌,這兩個的免費(fèi)版使用方法也是一模一樣,只是ngrok的服務(wù)器在美國惊橱,我試過蚪腐,轉(zhuǎn)發(fā)過來的請求很慢,相比之下cpolar的服務(wù)器應(yīng)該是在國內(nèi)税朴,速度就快很多回季,達(dá)到了正常可用的狀態(tài)正林,但這兩種方法都不是最想要的泡一,最想要的是綁定自己的域名而不是每次啟動隨機(jī)生成的域名,開源的1.x的ngrok版本可以實(shí)現(xiàn)這個觅廓,但是是個半成品鼻忠,功能雖然可用,但是據(jù)說內(nèi)存泄露bug很嚴(yán)重杈绸,不適合生產(chǎn)長期使用帖蔓,2.x的版本又不是開源的,想要自己綁定域名要收費(fèi)瞳脓,所以ngrok方案就基本被排除了塑娇,F(xiàn)rp應(yīng)該可以實(shí)現(xiàn)同樣的功能,這個后面再說劫侧。
cpolar相比ngrok的優(yōu)勢除了速度比較快之外埋酬,域名同樣是跟隨用戶隨機(jī)生成的,每次重新啟動不會改變域名烧栋,ngrok也是跟隨用戶隨機(jī)生成的写妥,但是每次啟動的域名都不一樣,所以劲弦,即便是測試用耳标,cpolar也是更好的選擇。
原理
目前的內(nèi)網(wǎng)穿透方案邑跪,多數(shù)是反向代理次坡,通過在公共端點(diǎn)和本地運(yùn)行的 Web 服務(wù)器之間建立一個安全的通道,實(shí)現(xiàn)內(nèi)網(wǎng)主機(jī)的服務(wù)可以暴露給外網(wǎng)画畅。所以都需要一臺云服務(wù)器砸琅,在云服務(wù)器上有一個server端,本地內(nèi)網(wǎng)應(yīng)用再安裝一個客戶端轴踱,客戶端和server端通過socket通訊實(shí)現(xiàn)請求在內(nèi)網(wǎng)和服務(wù)器之間的轉(zhuǎn)發(fā)和接收症脂。cpolar服務(wù)商提供服務(wù)器,所以只要在本地安裝cpolar客戶端,就可以實(shí)現(xiàn)內(nèi)網(wǎng)穿透了诱篷。
安裝方法
1.cpolar注冊并下載客戶端
前往 www.cpolar.com注冊賬號壶唤,注冊之后會跳到下圖的頁面
點(diǎn)擊下載,這里以linux為例棕所,頁面上有詳細(xì)教程闸盔,下載后把zip解壓,然后在安裝目錄運(yùn)行命令
./cpolar authtoken 密匙token
這里的密匙token是用戶注冊時根據(jù)用戶隨機(jī)生成的琳省,運(yùn)行完這個命令會保存在~/.cpolar/cpolar.yml里迎吵,所以以后啟動的時候也不用重復(fù)設(shè)置。
接著運(yùn)行
./cpolar http 8081
這里設(shè)置需要轉(zhuǎn)發(fā)的端口號针贬,比如我想把8081端口映射到外網(wǎng)击费,這里的8081是可以根據(jù)需求自己改的。
運(yùn)行完這個命令之后就會生成下圖所示的http域名和http域名以及對應(yīng)的本地端口
在瀏覽器中直接訪問這個域名就可以訪問這個端口的本地應(yīng)用了桦他,內(nèi)網(wǎng)穿透成功蔫巩。
這個方法自己測試用還可以,如果想要搭建多人訪問的網(wǎng)站瞬铸,想要綁定自己的固定域名批幌,是需要繳費(fèi)的,所以有空再研究一下Frp的內(nèi)網(wǎng)穿透方案嗓节,這個是開源免費(fèi)的荧缘,而且可以用自己的阿里云服務(wù)器自己配的,后面有空再寫一下拦宣。