日韩性视频-久久久蜜桃-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 | 色窝窝无码一区二区三区 | 久久精品激情 | 日本成人一区 | 午夜视频网址 | 国产在线一区二区三区四区 | 国产99久久 | 久久在线一区二区 | xxx麻豆 | 国产激情无码一区二区 | 性色av网站 | 色91精品久久久久久久久 | 亚洲精品久久久久avwww潮水 | 香蕉视频91 | 伊人一区二区三区四区 | 亚洲国产欧美日韩 | 免费av中文字幕 | a毛片在线| 不卡一二三 | 精品视频免费观看 | 日本女人一区二区三区 | 国产精品九九九九九 | www.蜜臀av.com | a级片免费在线观看 | 97自拍网 | 免费观看日韩av | 四虎5151久久欧美毛片 | 四虎成人精品在永久免费 | 国产一区二区三区日韩 | 经典一区二区 | 亚洲一级片网站 | av片久久| 久草97| 五月婷婷综合网 | 性高潮网站 | 亚洲福利片| 亚洲一区日韩精品 | 精品电影在线观看 | 成人一区二区精品 | 中文字幕有码在线视频 | av男人的天堂av | 99久久国产热无码精品免费 | 大香焦久久 | 亚洲影视一区 | 精品国产一区二区三 | 免费精品在线观看 | 成人视屏在线观看 | 双性尿奴穿贞c带憋尿 | 中文字幕免费高清在线观看 | 秋霞欧洲| 日韩av.com| 亚洲奶汁xxxx哺乳期 | 福利片第一页 | 精品亚洲成人 | 久久婷五月天 | 国产精品色在线 | 日韩少妇内射免费播放18禁裸乳 | 欧美性xxxx在线播放 | 欧美日韩免费做爰视频 | 中文字幕在线观看免费高清 | 免费h片网站 | 日韩和欧美一区二区 | 国产a级淫片 | 日本激情视频在线 | 日本人添下边视频免费 | 亚洲视频在线观看一区二区三区 | 美女靠逼视频网站 | 国产一级黄 | 香蕉视频A| 欧美激情在线一区二区 | 蜜臀av一区 | 国产黑人 | 先锋影音av资源站 | 国产极品美女高潮无套嗷嗷叫酒店 | 日韩欧美成人精品 | 美女诱惑一区二区 | 特级黄色一级片 | 成人夜色 | 自拍偷拍欧美视频 | 成人av久久 | 伊人色综合久久天天 | 搡8o老女人老妇人老熟 | 亚洲欧美中文日韩在线 | 国产一区二区三区四区五区 | 韩国三级在线看 | 高跟鞋和丝袜猛烈xxxxxx | 亚洲一区二区免费 | 国产精品尤物视频 | 美女少妇一区二区 | 天天操天天添 | 综合色综合 | 色欧美88888久久久久久影院 | 久久调教 | 亚洲精品第一页 | 国产精品久久久久久久久免费桃花 | 亚洲一区二区三区四区在线观看 | 黄色一区二区三区 | 99久久影视 | 黑丝国产在线 |