成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

搭建ngrok服務實現內網穿透

開發 前端
內網穿透,又叫NAT穿透,是計算機用語,翻譯過來就是 你的電腦可以直接被你朋友訪問。 通常我們的電腦是無法自己被訪問的。因為我們的電腦缺少自己的獨立的ip地址。現在ip稀缺,電信運營商已經不會隨便分配固定ip給個人。

[[345980]]

 通常實現內網穿透,是通過路由器上端口映射來實現的。但是路由器通常不是每個人都有權限可以訪問和設置,而且可能存在多級路由器較為復雜的網絡結構。端口映射也無法實現。

這就需要ngrok來實現了。

原理
ngrok 建立一個隧道,將主機A的http請求 傳遞給 主機B,從而實現內網穿透。

ngrok分為client端(ngrok)和服務端(ngrokd)

實際使用中的部署如下:

圖中內網主機上安裝客戶端。
公網主機 安裝服務端。
client public 則代表 訪問你電腦的用戶或者朋友。

實踐
現在都云時代,各種服務都能找到提供商。內網穿透也是如此。ngrok服務端相當麻煩,如果你只是簡單的穿透,又不是什么敏感信息,可以找到很多 服務提供商。

  • 下載客戶端

           根據你的個人電腦系統下載匹配的客戶端。下載地址: https://ngrok.com/download

  • 啟動
  1. ./ngrok http 4444 

  1. ngrok by @inconshreveable                                                                                                                                                                                                     (Ctrl+C to quit) 
  2.  
  3. Session Status                online 
  4. Session Expires               7 hours, 59 minutes 
  5. Version                       2.2.8 
  6. Region                        United States (us) 
  7. Web Interface                 http://127.0.0.1:4040 
  8. Forwarding                    http://ada02116.ngrok.io -> localhost:4444 
  9. Forwarding                    https://ada02116.ngrok.io -> localhost:4444 
  10.  
  11. Connections                   ttl     opn     rt1     rt5     p50     p90 
  12.                               0       0       0.00    0.00    0.00    0.00 

如果此時訪問 http://ada02116.ngrok.io 則等于訪問了 localhost:4444

自建ngrok服務
使用別人的服務,存在一些限制。例如不穩定、安全問題,費用昂貴等。因此可能需要自己搭建ngrok服務端。
自建服務需要具備的條件:
1、具備獨立ip的服務器。例如阿里云、騰訊云等。
2、需要域名。如果是國內則需要備案。

  • 配置域名
  • 增加2條A記錄,指向你的服務器。

添加安全組。
開放3個端口。這里我選擇4443、4444、8081端口。
其中4443是ngrok自身通信使用。
4444 后面tcp端口轉發使用。
8081 則是http請求轉發使用。默認是80 但是這里80端口我分配給nginx了。
截圖中少截圖了4444的配置。

  • 編譯服務端。

           這里采用docker鏡像來實現。

  • 登錄服務器,創建文件夾 ngrok-server ,包含2個文件

           文件Dockerfile 內容如下

  1. FROM golang:1.7.1-alpine 
  2. ADD build.sh / 
  3. RUN apk add --no-cache git make openssl 
  4. RUN git clone https://github.com/inconshreveable/ngrok.git --depth=1 /ngrok 
  5. RUN sed -i "109,109s/tcp/tcp4/g" /ngrok/src/ngrok/server/tunnel.go 
  6. RUN sed -i  "57,57s/tcp/tcp4/g" /ngrok/src/ngrok/conn/conn.go 
  7. RUN sh /build.sh 
  8. EXPOSE 8081 
  9. VOLUME [ "/ngrok" ] 
  10. CMD [ "/ngrok/bin/ngrokd"

文件build.sh內容如下

  1. export NGROK_DOMAIN="ngrok.xxxx.com" 
  2. cd /ngrok/ 
  3. openssl genrsa -out rootCA.key 2048 
  4. openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem 
  5. openssl genrsa -out device.key 2048 
  6. openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr 
  7. openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 
  8. cp rootCA.pem assets/client/tls/ngrokroot.crt 
  9. cp device.crt assets/server/tls/snakeoil.crt 
  10. cp device.key assets/server/tls/snakeoil.key 
  11.  
  12. make release-server 
  13. GOOS=linux GOARCH=386 make release-client 
  14. GOOS=linux GOARCH=amd64 make release-client 
  15. GOOS=windows GOARCH=386 make release-client 
  16. GOOS=windows GOARCH=amd64 make release-client 
  17. GOOS=darwin GOARCH=386 make release-client 
  18. GOOS=darwin GOARCH=amd64 make release-client 
  19. GOOS=linux GOARCH=arm make release-client 

需要修改的地方是
export NGROK_DOMAIN="ngrok.xxxx.com"
修改為你自己的域名。

  • 構建鏡像。

           運行

  1. docker build -t ngrok . 

注意 最后一個 . 別少了。

  • 啟動容器

           運行

  1. docker run -it  -p 8081:8081 -p 4443:4443 -p 4444:4444  -d ngrok /ngrok/bin/ngrokd -domain="ngrok.xxxx.com" -httpAddr=":8081" 

到這里ngrok服務端已經完成。

下載客戶端。
進入上面啟動的容器,下載對應的客戶端。例如容器id c71b99a242fa運行 docker inspect c71 可以查看這個容器的具體信息。

進入圖中劃線的目錄下,再進入Bin下。

這里就是客戶端。對應的不同系統的版本。
386代表是 32系統。amd64表示 64位。
linux和window無需多言。

下載命令可以通過很多方式。例如ftp或者scp命令。

  1. scp -P 你的服務端端口 -r  root@你的服務端ip地址:/var/lib/docker/volumes/6e5383924c5caf1b1b61250f31aa002308dcb371ebd9a7efad2419e20107a362/_data/bin/darwin_amd64/ngrok  ./ngrok 

這里要注意下權限,如果你不是用root,可能沒法子拷貝。

  • 配置客戶端

           創建配置文件 config.yml,其中內容如下

  1. server_addr: "ngrok.xxxx.com:4443" 
  2. trust_host_root_certs: false 
  3. tunnels: 
  4.   webapp: 
  5.    proto: 
  6.      http: 8081 
  7.    subdomain: test 
  8.   tcp12345: 
  9.     remote_port: 4444 
  10.     proto: 
  11.       tcp: 12345 

這里配置了2個隧道。一個http的請求,一個tcp轉發。

  • 啟動客戶端
  1. ./ngrok  -config=config.yml start-all 

 在瀏覽器訪問 上圖中地址即可看到本地內容。

增加tcp的轉發截圖。

測試下12345端口的功能。

  • 監聽12345端口。

           執行

  1. nc -l 12345 
  • 在其他電腦或者本地執行
  1. nc ngrok.xxxx.com 4444 

這樣就可以了。輸入和輸出都會顯示。
如圖

 

 

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-11-29 10:16:45

內網開源

2015-11-24 15:22:53

HTTP2 WEB 內網穿透

2024-11-25 16:25:23

內網穿透網絡協議

2024-10-12 20:56:19

ProxyChain

2010-11-22 09:38:31

DHCP服務內網

2022-09-19 13:11:56

命令SSH內網穿透

2019-02-28 08:44:19

內網釘釘Web

2020-09-03 08:03:52

內網穿透

2021-11-02 10:40:51

內網穿透代理工具Linux

2021-10-27 20:40:24

辦公

2025-04-30 10:41:34

2025-02-25 10:56:32

內網穿透開源桌面應用程序

2019-06-12 09:02:20

2024-03-13 08:03:02

2013-04-22 10:07:08

2022-02-17 13:46:15

SSH命令內網

2024-04-30 09:10:55

HTTP2TCP內網

2022-05-12 07:37:51

單點登錄微服務開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人精品一区二区三区四区 | 久久精品黄色 | 精品视频一区二区在线观看 | 91在线视频观看免费 | 自拍视频一区二区三区 | 国产精品精品久久久 | 精品亚洲二区 | 色综合一区二区三区 | 久久精品国产99国产精品 | 亚洲综合二区 | 一级片免费在线观看 | 亚洲电影一区二区三区 | 欧美 日韩 中文 | 国产精品久久久久久婷婷天堂 | 久久久久久国产精品mv | 日日夜夜操天天干 | 国产精品毛片无码 | 91嫩草精品 | 欧美精品一区二区在线观看 | 日本中出视频 | 欧美精品一二区 | 新91视频网| 四虎影视一区二区 | 午夜影院毛片 | av黄色在线 | 日韩在线小视频 | 午夜国产一级 | 精品久久亚洲 | 日韩欧美国产一区二区 | 久久综合av| 国产精品成人品 | 久久久高清 | 亚洲永久字幕 | 久久国产精品99久久久久久丝袜 | 午夜视频在线播放 | 欧美激情精品久久久久久 | 一级黄色片在线看 | 亚洲精品永久免费 | 日韩精品在线看 | 精品视频免费 | 久久99精品久久久 |