在家也能輕鬆訪問公司內網的秘密|穿透!

  • 2021 年 3 月 11 日
  • AI

最近,我在家開發了一套知識問答系統,並成功部署在實驗室內網的服務器上。
在將系統提供給公司的小夥伴測試時,碰到一個麻煩:由於端口沒有在外網暴露,外界無法訪問實驗室內網中的項目。
調研後發現,現有2種解決方案:
  • 在公網服務器上搭好環境,重新部署系統;演示完成後,刪除
  • 通過內網穿透實現端口映射,在哪都能訪問系統
無論是從效率還是可行性考慮,第二種方法都是更好的選擇。藉此話題,我們來聊一聊如何在家就能訪問公司局域網內的信息呢?

1 內網穿透和ngrok

公司的多台計算機一般構成內部使用的局域網絡或辦公網絡。離開公司回到家時,除了遠程控制,一般不能連上公司主機,獲取資料。
但有了內網穿透,就可以像瀏覽公網一樣訪問內網了。

官方定義:內網穿透,是為了使具有某一個特定源 IP 地址和源端口號的數據包不被 屏蔽而正確路由到內網主機。

實現內網穿透的方法有很多,例如VPN、frp、ngrok、花生殼等等。
其中ngrok是一個反向代理,通過在公共端點和本地Web服務器之間建立一個安全通道,ngrok可捕獲和分析所有通道上的流量。

正向代理

如果把局域網外的Internet想像成一個巨大的資源庫,則局域網中的客戶端要訪問Internet,需要通過代理服務器來訪問。
這種隱藏了客戶端的代理服務,稱為正向代理

例如國內無法直接訪問谷歌,需要通過一台國外ip的代理服務器轉發。「搭梯子」就是典型的正向代理。

反向代理

當把請求發送到反向代理服務器,將由反向代理服務器選擇目標服務器,獲取數據後再返回給客戶端。

此時反向代理服務器和目標服務器對外是一個服務器,暴露的是代理服務器ip,隱藏真實服務器的ip。
隱藏了服務端的代理服務,稱為反向代理。

2 薅羊毛之10分鐘免費實現穿透

不妨藉助內網穿透工具SunnyNgrok,試一試穿透的效果。

第一步,登錄//www.ngrok.cc/完成註冊,點擊左側「開通隧道」。

一些高帶寬,訪問穩定的服務器是需要money的,如果只是項目演示或小並發demo測試,可以直接選擇免費服務器

在隧道中設置好協議、名稱、前置域名和內網server需要映射的端口,確定添加即可。

開通後,在隧道管理中,可以查看新建的隧道。當前隧道顯示不在線,大家需要下載Ngrok客戶端,啟動ngrok服務

以Linux版本為例,在內網服務器上下載解壓安裝包,進入文件,輸入指令和隧道id啟動服務。
./sunny clientid 隧道id
完成後,隧道顯示「online」,表示連接成功。現在,就可以用贈送域名來訪問內網的服務了。很簡單哦!

除了內網穿透,ngrok還能實現微信開發、HTTP轉發等功能。

Demo

我在實驗室服務器上部署了一個情感分析api,經內網穿透後,在公網通過免費域名成功訪問到了服務。

這種方法既可以讓用戶在任何地方訪問內網服務,又隱藏了服務器的真實地址,滿足了安全和便捷的需求。
除了使用SunnyNgrok、花生殼等DDNS服務商的應用,我們還可以自建ngrok服務器
搭建前需要準備一台公網服務器(阿里雲/騰訊雲等),感興趣的讀者可以參考手把手搭建教程:
//www.vediotalk.com/?p=336
本文帶大家以「薅羊毛」的方式,通過ngrok簡單高效地實現內網穿透。
它能讓你的本地服務暴露在外網上面,供其他用戶訪問。如果在開發中碰到類似需求,可以用ngrok來解決!

深度學習資源下載
在NLP情報局公眾號後台回復「三件套」,即可獲取深度學習三件套:
《PyTorch深度學習》,《Hands-on Machine Learning》,《Python深度學習》
推 薦 閱 讀

參 考 文 獻

[1] 如何讓別人訪問到你的本地項目?Ngrok學起來!://www.bilibili.com/video/BV17K4y187A2?from=search&seid=9694463133865006098

[2] Sunny-Ngrok教程://www.ngrok.cc/_book/

歡 迎 關 注 我 們?

原創不易,有收穫的話請幫忙點擊點贊分享吧?