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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

实现内网穿透如何让路由器内网穿透

發布時間:2023/12/3 综合教程 24 生活家
生活随笔 收集整理的這篇文章主要介紹了 实现内网穿透如何让路由器内网穿透 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文介紹ngrok是什么以及如何通過開源ngrok自建服務搭建,實現內網穿透。

自建ngork的優點和缺點

優點:限制少,可玩性高,安全性高,完全可以刪除花生殼、向日葵、TeamViewer等軟件了。

缺點:有一定的技術門檻、需要購買云服務器和域名,如果服務器在國內域名需要備案。

如果不自建內網如果沒有限制可以做用現成的技術,地址:http://www.ngrok.cc/ 還有 https://www.ngrok.com 等,注冊賬號即可。

ngrok的應用場景

滿足沒有公網IP環境下,遠程訪問各種局域網應用或設備,

星鍋用的最多就是

1.把家里的NAS通過ngrok共享到公網,讓我無論在家還是在外面都能實現文件無縫銜接。

2.遠程辦公: 通過ngrok把公司的辦公電腦3389遠程連接的端口暴露到公網,再通過遠程桌面到辦公電腦上(內網的Linux服務器也可以)。

3.在家的PC上做了一個小站點,想讓異地的朋友看時,可以將這個站點暴露給他訪問(比如我在做本地開發微信時)。

如企業內網的OA/ERP/CRM系統、NAS私有云、視頻監控、FTP/MAC/SVN服務器、個人局域網搭建的網站、博客、進行開發調試等,均可使用ngrok內網穿透。

什么是內網穿透

內網穿透,也即 NAT 穿透,進行 NAT 穿透是為了使具有某一個特定源 IP 地址和源端口號的數據包不被 NAT 設備屏蔽而正確路由到內網主機。下面就相互通信的主機在網絡中與 NAT 設備的相對位置介紹內網穿透方法。 總結一句話就是本地運行的項目(沒有公網IP的項目),如果不使用內網穿透,只能本機訪問。用到了內網穿透,就會給一個公網的ip代替本地ip,這樣別人就可以訪問到你的本地項目啦。

什么叫ngrok?

ngrok 是一個反向代理,通過在公共的端點和本地運行的 Web 服務器之間建立一個安全的通道。ngrok 可捕獲和分析所有通道上的流量,便于后期分析和重放。

開源地址:https://github.com/inconshreveable/ngrok.git 和其類似的功能還有開源的frp: https://github.com/fatedier/frp

自建ngrok準備

1.域名

2.服務器(服務器如果在國內需要備案),推薦使用輕量云服務器。

阿里云服務器優惠 http://d.xgss.net/2 | 騰訊云服務器優惠 http://d.xgss.net/3

3.云服務器Linux(centos7)、Nginx、DockerDocker鏡像,備案域名

域名解析

選擇二級域名域名 ngrok.xgss.net 三級域名使用泛解析 *.ngrok.xgss.net,為了后面指定域名比如 nas.ngrok.xgss.net就不用再解析了

ngrok.xgss.net A解析到 云服務器公網IP*.ngrok.xgss.net A解析到 云服務器公網IP

安裝Ngrok服務端

通過遠程ssh連接服務器。

下載常用依賴庫

yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++

安裝go和git

yum -y install go git

要注意git版本必須大于1.7.9,go版本必須大于1.4,否則可能有意想不到的錯誤

開始安裝ngrok

個人習慣安裝到 /data/ 目錄下 如果你想安裝到其他目錄 則進入你想安裝的目錄

mkdir /data/cd /data/git clone https://github.com/inconshreveable/ngrok.git ngrok

#進入ngrok目錄,后面操作都是在ngrok目錄下完成!

cd /data/ngrok#生成并替換源碼里默認的證書,注意域名要修改為你自己的,這里是一個虛擬的測試域名NGROK_DOMAIN="ngrok.xgss.net"#測試一下有沒有設置成功echo $NGROK_DOMAIN #輸出ngrok.xgss.net表示成功openssl genrsa -out rootCA.key 2048openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pemopenssl genrsa -out device.key 2048openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csropenssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

之后會在 ngrok 目錄下生成 root,device 等六個文件。 然后需要拷貝到配置的目錄中,在編譯的時候會使用這些文件。

cp -r rootCA.pem assets/client/tls/ngrokroot.crtcp -r device.crt assets/server/tls/snakeoil.crtcp -r device.key assets/server/tls/snakeoil.key

到這個地方,證書生成已經復制的準備工作就已經完成了。

生成服務器的ngrokd

make release-server

這樣就會在bin目錄下生成ngrokd 這個文件,就是我們ngrok的服務器程序

編譯客戶端ngrok(不同系統不同的命令如下)

32位linux客戶端: GOOS=linux GOARCH=386 make release-client64位linux客戶端: GOOS=linux GOARCH=amd64 make release-client32位windows客戶端: GOOS=windows GOARCH=386 make release-client64位windows客戶端: GOOS=windows GOARCH=amd64 make release-client32位mac平臺客戶端:GOOS=darwin GOARCH=386 make release-client64位mac平臺客戶端:GOOS=darwin GOARCH=amd64 make release-clientARM平臺linux客戶端: GOOS=linux GOARCH=arm make release-client

我這里是64位linux和64位windows客戶端編譯

GOOS=linux GOARCH=amd64 make release-clientGOOS=windows GOARCH=amd64 make release-client

依次執行這2個命令之后就會在bin目錄里面生成所有的客戶端文件,客戶端平臺是文件夾的名字,客戶端放在對應的目錄下,當前Linux平臺客戶端就直接在bin目錄下一個ngrok的程序

配置啟動服務器

  • httpAddr 是訪問普通的http使用的端口號,用后面用 子域名.ngrok.xgss.net 來訪問服務
  • httpsAddr 是訪問的https使用的端口號,同上,只不過是需要https的服務訪問才用這個端口(一般用不上)
  • tunnelAddr 是ngrok通道的端口號,這個端口是Ngrok用來通信的,所以這個端口在服務器上和客戶端上設置必須要對應才可以正常的鏈接,默認端口是4443

完整命令:

bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"

我使用的

bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80"nohup /data/ngrok/bin/ngrokd -domain="ngrok.xgss.net" -httpAddr=":8000" -httpsAddr=":443" -tunnelAddr=":4443" &不輸出 nohup.outnohup /data/ngrok/bin/ngrokd -domain="ngrok.xgss.net" -httpAddr=":8000" -httpsAddr=":443" -tunnelAddr=":4443" >/dev/null 2>&1 &

查看端口情況

netstat -tunpl |grep ngrokdtcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 28558/ngrokdtcp 0 0 0.0.0.0:4443 0.0.0.0:* LISTEN 28558/ngrokdtcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 28558/ngrokd

其中NGROK_DOMAIN對應的就是一開始設置過的域名地址。

要注意我這里使用的是8000端口。

安裝ngrok客戶端

下載客戶端

ls /data/ngrok/bindarwin_386 darwin_amd64 go-bindata linux_386 linux_arm ngrok ngrokd windows_386 windows_amd64其中 /data/ngrok/bin/ngrok 是linux的客戶端其中 windows_amd64 是windows的客戶端

linux客戶端配置

下載客戶端:文件 /data/ngrok/bin/ngrok 在192.168.1.6客戶端上操作: 新建配置文件:

mkdir /data/ngrokvi /data/ngrok/ngrok_8000.cfg填寫一下內容server_addr: "ngrok.xgss.net:4443"trust_host_root_certs: falsevi /data/ngrok/ngrok_8082.cfg填寫一下內容server_addr: "ngrok.xgss.net:4443"trust_host_root_certs: false將在服務器中生成的ngrok文件上傳目錄中/data/ngrok/chmod +x /data/ngrok/ngroknohup /data/ngrok/ngrok -log=/data/ngrok/ngrok_8000.log -subdomain=seafiles -config="/data/ngrok/ngrok_8000.cfg" 8000 &nohup /data/ngrok/ngrok -log=/data/ngrok/ngrok_8082.log -subdomain=down -config="/data/ngrok/ngrok_8082.cfg" 8082 &netstat -tunpl |grep ngroktcp 0 0 127.0.0.1:4040 0.0.0.0:* LISTEN 20609/ngrok

日志: -log=/data/ngrok/ngrok_8000.log 是記錄ngrok的日志,如果前期調試的時候加上這個參數,如果不能訪問就可以查看到底是什么問題 子域名: -subdomain=seafiles 是定義訪問的時候的子域名,現在訪問 seafiles.ngrok.xgss.net 就可以訪問到這一臺機器上8000端口的服務

ngrokTunnel Status onlineVersion 1.7/1.7Forwarding https://test.ngrok.xgss.net -> 127.0.0.1:80Forwarding http://test.ngrok.xgss.net -> 127.0.0.1:80Web Interface 127.0.0.1:4040Conn 0Avg Conn Time 0.00ms

到這里不出意外的話就會啟動成功了,訪問test.ngrok.xgss.net的時候就是你本地的ip了.你可以通過apache或nginx配置test.ngrok.xgss.net域名指定你的目錄開始使用。

windows客戶端配置

在D盤新建一個目錄 ngrok,如圖有四個文件功能分別是

add.bat是將start.bat添加到開機啟動項,ngrok.cfg是端口的配置,ngrok.exe是服務端下載的文件,start.bat啟動ngrok

add.bat內容

reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v lin /t REG_SZ /d D:\ngrok\start.bat /f

ngrok.cfg的內容

server_addr: "ngrok.xgss.net:4443"trust_host_root_certs: falsetunnels: mstsc: remote_port: 3378 proto: tcp: "127.0.0.1:3389"

start.bat的內容

D:cd D:\ngrokngrok -config=ngrok.cfg start mstsc

雙擊start.bat

測試用手機4G網絡遠程連接本機

地址: ngrok.xgss.net:3378

可以遠程連接即可。

總結

以上是生活随笔為你收集整理的实现内网穿透如何让路由器内网穿透的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。