日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ngrok: 使用 Ngrok 实现内网穿透

發(fā)布時(shí)間:2025/4/5 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ngrok: 使用 Ngrok 实现内网穿透 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Jan 10,2017?in?教程?read (14235)?| 百度已收錄 | Author:?Leonn

目錄

  • 背景
  • NAT 穿透原理
  • 一個(gè)栗子
  • Ngrok
  • 準(zhǔn)備工作
  • 編譯服務(wù)端
  • 服務(wù)端
  • 測(cè)試連接
  • 編譯客戶端
  • 客戶端
  • 未完待續(xù)
  • 參考資料
  • 背景

    • 很多時(shí)候,我們都有這樣的需求:需要將本地正在開發(fā)的服務(wù)暴露在公網(wǎng)上,也就是從外網(wǎng)直接訪問我們本機(jī)上的服務(wù)。

    • 正常情況下,這是辦不到的,因?yàn)槲覀兊谋緳C(jī)并沒有公網(wǎng) IP,我們的本機(jī)處在內(nèi)網(wǎng)當(dāng)中。

    NAT 穿透原理

    這里需要順手提及一個(gè)知識(shí):NAT 穿透。

    一個(gè)栗子

    我們的機(jī)器一般都在路由器的內(nèi)網(wǎng)當(dāng)中,IP 地址基本上都是192.168.x.x系列,我們并沒有公網(wǎng) IP,那么如何訪問外網(wǎng)呢?

    • 我們打開瀏覽器訪問 Google,Google 與我們主機(jī)之間如何通信?
      假設(shè)我們主機(jī) IP 為192.168.0.100,路由器 LAN IP 為192.168.0.1,WAN IP 為211.22.145.234(這是一個(gè)公網(wǎng) IP),Google 服務(wù)器 IP 為74.125.204.101。

    • 詳細(xì)通信流程如下:

      • 主機(jī)構(gòu)建 HTTP 請(qǐng)求數(shù)據(jù)包,目標(biāo) IP 為74.125.204.101,目標(biāo)端口80/443,源 IP 為192.168.0.100,源端口隨機(jī)生成,假定為5000。
      • 主機(jī)檢查目標(biāo) IP 地址,發(fā)現(xiàn)不在一個(gè)網(wǎng)段,數(shù)據(jù)包丟給默認(rèn)網(wǎng)關(guān)192.168.0.1。
      • 路由器 LAN 口收到數(shù)據(jù)包,構(gòu)建 NAT 映射,隨機(jī)生成端口,假定為5500,這樣映射就是 :5500 -> 192.168.0.100:5000。WAN 口收到的數(shù)據(jù)包,如果目標(biāo)端口是5500,則轉(zhuǎn)發(fā)給內(nèi)網(wǎng) IP 為192.168.0.100的機(jī)器的5000端口。
      • 路由器修改數(shù)據(jù)包的源端口為5500,源 IP 地址為211.22.145.234,使用 WAN 口將數(shù)據(jù)包發(fā)送出去。
      • Google 服務(wù)器收到請(qǐng)求,構(gòu)建響應(yīng) HTTP 數(shù)據(jù)包,目標(biāo) IP 地址211.22.145.234,目標(biāo)端口為5500。
      • 路由器 WAN 口收到數(shù)據(jù)包,目標(biāo)端口為5500,查詢 NAT 表,發(fā)現(xiàn)對(duì)應(yīng)的機(jī)器是192.168.0.100:5000,所以修改目標(biāo) IP 為192.168.0.100,目標(biāo)端口為5000。并通過 LAN 口發(fā)送給主機(jī)。
      • 主機(jī)接收到數(shù)據(jù)包,完成這一次通信。

    從上面可以看出,內(nèi)網(wǎng)機(jī)器能夠和外網(wǎng)通信,全靠擁有公網(wǎng) IP 的路由器做交通樞紐。
    路由器通過查詢 NAT 表,來確定數(shù)據(jù)包該發(fā)送給內(nèi)網(wǎng)哪臺(tái)機(jī)器。
    所以內(nèi)網(wǎng)多臺(tái)機(jī)器都可以通過這一臺(tái)路由器和外網(wǎng)進(jìn)行通信。這極大的節(jié)省了寶貴的公網(wǎng) IP 資源。

    Ngrok

    • 而 ngrok 就是利用以上原理實(shí)現(xiàn)了內(nèi)網(wǎng)穿透的工具,只是稍有不同,交換的工具從路由器變成了我們具有固定 IP 的 VPS。
      當(dāng)然原理沒有大變,都是找一個(gè)公網(wǎng)服務(wù)器做中介。此處成為服務(wù)器 A。流程如下。
    1. 本地內(nèi)網(wǎng)主機(jī)和服務(wù)器A構(gòu)建一條連接 2. 用戶訪問服務(wù)器A 3. 服務(wù)器A聯(lián)系本地內(nèi)網(wǎng)主機(jī)獲取內(nèi)容 4. 服務(wù)器A將獲取到的內(nèi)容發(fā)送給用戶 5. 通過上面的流程,就實(shí)現(xiàn)了用戶訪問到了我們內(nèi)網(wǎng)的內(nèi)容。
    • 那么幫助我們實(shí)現(xiàn)這個(gè)功能的程序就是 Ngrok 。通過在服務(wù)器上安裝 Ngrok ,我們就可以和本地主機(jī)構(gòu)建一條隧道。來讓外網(wǎng)用戶訪問本地主機(jī)的內(nèi)容。

    準(zhǔn)備工作

    安裝依賴

    • 注意 golang 需要 1.6 以上,否則不能編譯客戶端
    • 下面是 1.7.3,其他的自己去官網(wǎng)下載,我使用的 Ubuntu 16,自帶的即可
    wget https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gz tar -zxvf go1.7.3.linux-amd64.tar.gz -C /usr/local

    獲取 ngrok 源碼

    git clone https://github.com/inconshreveable/ngrok.git ngrok ## 建議請(qǐng)使用下面的地址,修復(fù)了無法訪問的包地址 git clone https://github.com/tutumcloud/ngrok.git ngrok cd ngrok

    生成證書

    • 生成并替換源碼里默認(rèn)的證書,注意域名修改為你自己的
      (之后編譯出來的服務(wù)端客戶端會(huì)基于這個(gè)證書來加密通訊,保證了安全性)
    NGROK_DOMAIN="liyuans.com"openssl genrsa -out base.key 2048 openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem openssl genrsa -out server.key 2048 openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crtcp base.pem assets/client/tls/ngrokroot.crt

    編譯服務(wù)端

    sudo make release-server
    • 如果一切正常,ngrok/bin 目錄下應(yīng)該有 ngrok、ngrokd 兩個(gè)可執(zhí)行文件。
      ngrokd 為服務(wù)器端使用的,ngrok 是 linux 客戶端使用的

    服務(wù)端

    • 前面生成的 ngrokd 就是服務(wù)端程序了,指定證書、域名和端口啟動(dòng)它(證書就是前面生成的,注意修改域名):
    sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="liyuans.com" -httpAddr=":8081" -httpsAddr=":8082"
    • 到這一步,ngrok 服務(wù)已經(jīng)跑起來了,可以通過屏幕上顯示的日志查看更多信息。
    • httpAddr、httpsAddr 分別是 ngrok 用來轉(zhuǎn)發(fā) http、https 服務(wù)的端口,可以隨意指定。
    • ngrokd 還會(huì)開一個(gè) 4443 端口用來跟客戶端通訊(可通過 -tunnelAddr=":xxx" 指定),如果你配置了 iptables 規(guī)則,需要放行這三個(gè)端口上的 TCP 協(xié)議。

    測(cè)試連接

    • 現(xiàn)在,通過?http://liyuans.com:8081?和?https://blog.liyuans.com:8082?就可以訪問到 ngrok 提供的轉(zhuǎn)發(fā)服務(wù)。
      為了使用方便,建議把域名泛解析到 VPS 上,這樣能方便地使用不同子域轉(zhuǎn)發(fā)不同的本地服務(wù)。

    • 可以看到這樣一行提示:Tunnel liyuans.com:8081 not found,這說明萬事俱備,只差客戶端來連了。

    編譯客戶端

    #windows GOOS=windows GOARCH=amd64 make release-client #mac GOOS=darwin GOARCH=amd64 make release-client

    客戶端

    • 如果要把 linux 上的服務(wù)映射出去,客戶端就是前面生成的 ngrok 文件。(在 bin 文件夾內(nèi))

    • 寫一個(gè)簡(jiǎn)單的配置文件,隨意命名如 ngrok.cfg:

    server_addr: imququ.com:4443 trust_host_root_certs: false
    • 指定子域、要轉(zhuǎn)發(fā)的協(xié)議和端口,以及配置文件,運(yùn)行客戶端:
    ./ngrok -subdomain pub -proto=http -config=ngrok.cfg 80
    • 不出意外可以看到這樣的界面,這說明已經(jīng)成功連上遠(yuǎn)端服務(wù)了

    未完待續(xù)

    ?

    參考資料

    • 搭建 ngrok 服務(wù)實(shí)現(xiàn)內(nèi)網(wǎng)穿透
    • 使用 Ngrok 實(shí)現(xiàn)內(nèi)網(wǎng)穿透
    • CentOS6 搭建自己的 ngrok 服務(wù)
    《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的Ngrok: 使用 Ngrok 实现内网穿透的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 综合激情婷婷 | 久久人人爽天天玩人人妻精品 | 加勒比精品在线 | 久久久久久久久久网站 | 欧美久久天堂 | 日韩免费观看视频 | 久久久91精品国产一区二区三区 | 深爱五月综合网 | 国产黑丝一区二区 | 伦理黄色片 | 人人搞人人 | 国产精品麻豆一区二区 | 精品黑人一区二区三区在线观看 | 亚洲综合成人在线 | 亚洲av人人澡人人爽人人夜夜 | 在线观看sm | 丰满肉肉bbwwbbww | 成人在线免费播放视频 | 国产色站 | 欧美中文字幕在线视频 | 97视频一区二区 | 91丝袜一区二区三区 | 青草视频在线免费观看 | 91热热| 91 高清 在线 制服 偷拍 | 亚洲码在线观看 | 中文字幕33页 | 精品无码一区二区三区 | 国产成人无码精品久久久电影 | xxxx.国产 | 尤物在线视频 | 日韩视频免费观看高清完整版在线观看 | 全球av在线 | 偷拍夫妻性生活 | 精品婷婷色一区二区三区蜜桃 | 涩涩视频在线观看免费 | 伦理亚洲| av中文在线播放 | 色网址在线 | 亚洲香蕉在线视频 | 中文字幕无线码 | 91二区| 亚洲一区二区视频在线观看 | 四虎永久免费观看 | 亚洲三级电影网站 | 色婷婷av一区二区三区在线观看 | 精品人妻一区二区色欲产成人 | 日韩区在线观看 | 亚洲一区二区在线播放 | 国产精品自拍网站 | 成人黄色激情 | 日韩中文字幕视频在线观看 | 伊人天堂av| 国产精品jizz在线观看软件 | 日韩欧美视频 | 精品视频久久久久久久 | 一本色道久久综合无码人妻 | 久久精品国产网红主播 | 伊人影院视频 | 久热免费在线视频 | 天天操天天爽天天射 | 成人精品亚洲人成在线 | 中文字幕无码人妻少妇免费 | 大地资源影视在线播放观看高清视频 | www.男人天堂.com | 久久久成人网 | 超碰人人人人人人 | 日本三级韩国三级美三级91 | 成年人在线观看视频网站 | 99久久人妻无码精品系列 | 国产精品中文字幕在线 | 高潮无码精品色欲av午夜福利 | 色婷婷国产精品久久包臀 | 在线a天堂 | 久久伊人精品 | 原创露脸88av | 污污视频网站在线免费观看 | 国产精品美女高潮无套 | 无套内谢的新婚少妇国语播放 | 91gao| 在线播放你懂得 | 亚洲www啪成人一区二区麻豆 | 久久久高清视频 | 黑人黄色片 | 爱上av| 日韩在线中文字幕视频 | 亚洲vs天堂 | 中文字幕日韩欧美在线 | 91精品国产手机 | 久久这里有精品视频 | 一级看片| 白浆一区 | 日韩免费大片 | 成人免费区一区二区三区 | 国产一区二区三区黄 | 色眯眯影院 | 国产在线区 | 白峰美羽在线播放 | 中国挤奶哺乳午夜片 |