映射公網(花生殼、PubYun、No-IP、DynDNS、Ngrok、Tunnel、localtunnel、pagekite)


這篇文章花了好幾天,系統地梳理出了映射公網的幾種方式。雖然是針對微信開發的外網服務器來尋找解決方案,但這個知識梳理可能會在其他地方也受益。平常我也有用TeamViewer,在搜集資料的過程中也知道了其大致工作原理。還有一些免費好用的反向代理軟件,可能會在后頭派上用場。

這篇干貨分享在此,轉載請注明:http://blog.csdn.net/sadshen/

一、映射公網的兩種方式介紹

1 動態域名解析+端口映射(公網環境)

動態域名解析,俗稱DDNS。目前提供這種服務的廠商還挺多,我目前知道有幾家:

  • Oray花生殼
  • PubYun公雲
  • No-IP
  • DynDNS

如果你對一個公網IP有權限,那就可以采用這種方式。**你的路由器的WAN口就是寬帶,那這種方式就適用。**DDNS的作用就是將WAN口分配到IP與域名綁定在一起,訪問這個域名,相當於就訪問到了你的WAN口。於是你只要在路由器上做一個端口映射即可。

此種方式的局限性可能就是大部分運營商都屏蔽了80等常用端口,所以做微信開發要用到80端口的話這種方式就不大適合。

2 反向代理(內網環境)

如果你在一家公司上班,公司內部可能分了好幾級的路由,就比如我,那第一種方式就走不通。寫零java基礎搞定微信Server_3:搭建微信Server本地開發環境那晚弄到半夜就是這個原因。哦,我當然不是在加班。我在家里,房間用了一個二級路由,那晚真真是搞死寶寶了。

下面這兩張圖可以快速了解反向代理。

我們是采用本機與反向代理server組建網絡(相當於一個虛擬局域網),訪問反向代理server的數據都被轉發到本機。

有簡單一點的將內網映射到外網的工具嗎?這個帖子中收獲良多。作者沙渺告訴我們:

實際上ngrok就是一種僅僅針對http單一用途的代理服務。ngrok的原理很可能並不是真正的內網穿透,而是真的老老實實的充當反向代理,承擔所有實際發生的流量。
這方面的替代服務有localtunnel.me和pagekite等。

內網穿透的應用中,通訊雙方必然首先對一個公網服務器主動發起連接。。。
各種相關的軟件都是如此,例如TeamViewer、Oray向日葵乃至QQ遠程協助等。就說這個ngrok,其實也是需要通訊雙方連接ngrok中心服務器,甚至中心服務器的某些高級功能還提供付費計划對吧。

於是乎,我們映射公網的工具,除了ngrok之外,又多了localtunnel.mepagekite

二、反向代理的實現

1 自己創建反向代理服務

用這種方式,成本較高,需要三樣東西:

  • 服務器
  • 代理服務端的監聽轉發程序
  • 目的服務端(同時也是面向代理服務器的客戶端)的主機轉發程序

如果你有服務器,那自己寫個轉發工具應該是可以實現的。比較省力的方式是參考ngrok的源碼。ngrok是應該濃墨重彩寫一番,開源,自由,github上開源了V1.0版本
https://github.com/inconshreveable/ngrok/

一個在自己VPS搭建ngrok的實例,https://imququ.com/post/self-hosted-ngrokd.html

很多人和我一樣,現階段就想做一個微信開發,那自己花大精力去實現一個反向代理顯然不值得。這時候就得從已有的軟件中進行選擇。運行穩定,成了最主要考慮的因素。

2 廠商服務

Ngrok比較出名,提供免費服務,但可惜容易被牆。那解決方式就是牆內也搞Ngrok。由於我所知有限,僅僅把目前知道的幾家列出來。(這里我可能先入為主了,因為我把這些廠商粗暴地分為了Ngrok和非Ngrok,忽略了其他廠商們所做出的努力。)

  • Ngrok
    免費,但會被牆。

  • Tunnel
    昨晚測試,訪問不了。

  • localtunnel
    可用

  • pagekite
    可用

  • 新花生殼
    開通內網映射,映射主機即可。目前免費版也要收取8塊錢的費用就是了。

  • NAT123
    功能同花生殼,但似乎是免費的。

我貪圖省事,直接花錢認證了花生殼,后面四種就沒再處理了。看到別人用localtunnel和pagekite有成功的,所以我就不搬了。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com