CentOS 搭建ngrok服務器(外網映射內網)

CentOS 7 搭建ngrok服務器(外網映射內網)node

準備 
一臺雲服務器(本文ECS),一個域名(二級域名也能夠),而且域名正確解析到雲服務器linux

安裝環境 
安裝gcc和git(下載ngrok源碼)nginx

yum install gcc -y 
yum install git -yc++

安裝go語言環境 
去官網https://golang.org/dl/下載最新安裝包 
網很慢的下載地址:https://pan.baidu.com/s/1c2i2oaG(官網1.9.2版本) 
解壓縮git

tar -c /usr/local/ -zxvf go1.9.2.linux-amd64.tar.gzgithub

添加到環境變量golang

vi /etc/profile 
export GOROOT=/usr/local/go 
export PATH=PATH:PATH:GOROOT/bin 
source /etc/profileweb

查看是否安裝成功(查看版本號)windows

go version 
go version go1.9.2 linux/amd64centos

搭建Ngrok服務 
下載ngrok源碼

cd /usr/local/ngrok 
git clone https://github.com/tutumcloud/ngrok.git ngrok

生成證書

cd ngrok 
NGROK_DOMAIN=」你的域名」

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.crt

將新生成的證書,替換掉assets/client/tls下的證書

cp base.pem assets/client/tls/ngrokroot.crt

編譯生成ngrokd和ngrok

make release-server release-client

正常執行後,ngrok/bin 目錄下應該有 ngrok、ngrokd 兩個可執行文件。

啓動服務端

sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":7009" -httpsAddr=":7008"

httpAddr、httpsAddr 分別是 ngrok 用來轉發 http、https 服務的端口,能夠隨意指定。ngrokd 還會開一個 4443 端口用來跟客戶端通信(可經過 -tunnelAddr=」:xxx」 指定),若是你配置了 iptables 規則,須要放行這三個端口上的 TCP 協議。 
如今,經過 https://你的域名:7009和 https://你的域名:7008就能夠訪問到 ngrok 提供的轉發服務

出現下面提示則說明成功

[22:07:18 CST 2017/12/07] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[22:07:18 CST 2017/12/07] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:7009
[22:07:18 CST 2017/12/07] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:7008
[22:07:18 CST 2017/12/07] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443
[22:07:18 CST 2017/12/07] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds

5. 編譯生成ngrok(windows客戶端)

GOOS=windows GOARCH=amd64 make release-client

成功會在bin目錄下看到windows_amd64文件夾,複製到windows電腦上便可啓動

get /usr/local/ngrok/ngrok/bin/windows_amd64/ngrok.exe

6. windows端運行 
建立一個文件,命名爲ngrok.cfg,寫入一下內容

server_addr: "你的域名:4443"
trust_host_root_certs: false

在建立一個啓動bat文件,命名爲start.bat

ngrok -config=ngrok.cfg -subdomain 映射本地的域名 本地的端口
如ngrok -config=ngrok.cfg -subdomain sb 8081

啓動start.bat文件

外網域名訪問
http://映射本地的域名:7009
映射到本地的地址是
127.0.0.1:本地的端口
原文:https://blog.csdn.net/yucdsn/article/details/78746745 
 

基於Centos6.10搭建ngrok服務器

1、操做系統描述
服務器:Centos6.10 64位
客戶端:Windows 10 64位

2、服務器環境準備
1.安裝git
yum -y install git
2.安裝go
若是wget下載比較慢,能夠經過迅雷下載完再拷貝到服務器上
wget https://golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz
tar zxvf go1.9.2.linux-amd64.tar.gz
mv go /usr/local/
ln -s /usr/local/go/bin/* /usr/bin/
修改profile配置文件
vi /etc/profile
#go lang
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
環境變量生效:
source /etc/profile
檢查go是否安裝成功:
go version
 
出現如下信息,go安裝成功
go version go1.9.2 linux/amd64
3、ngrok安裝及配置
1.下載ngrok源碼

cd /usr/local
git clone https://github.com/inconshreveable/ngrok.git
2.填入域名地址

cd ngrok
export NGROK_DOMAIN="xxx.com"
3.生成祕鑰
openssl genrsa -out rootCA.key 2048 
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000


4.替換祕鑰
\cp -rf rootCA.pem assets/client/tls/ngrokroot.crt
\cp -rf device.crt assets/server/tls/snakeoil.crt
\cp -rf device.key assets/server/tls/snakeoil.key


5.編譯生成服務端
GOOS=linux GOARCH=amd64 make release-server
​生成的服務端在/usr/local/ngrok/bin/目錄中

6.編譯生成客戶端
GOOS=windows GOARCH=amd64 make release-client
​ 生成的客戶端在/usr/local/ngrok/bin/windows_amd64/目錄中
將ngrok.exe拷貝到Windows上

7.啓動服務
./bin/ngrokd -domain="xxx.com"  -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" 
8083爲通道端口,能夠自定義

8.配置客戶端
Windows上ngrok.exe同級目錄建立ngrok.cfg配置文件,內容以下
server_addr: "xxx.com:8083"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "a"
    proto:
      http: "80"
      
  https:
    subdomain: "b"
    proto:
      https: "443"
      
  mstsc:
    remote_port: 3389
    proto:
      tcp: "3389"
 
  ssh:
    remote_port: 2222
    proto:
      tcp: "22"
建立啓動文件start.bat,內容以下:

ngrok -config=ngrok.cfg start http https mstsc ssh
運行start.bat,出現以下狀態,則內網穿透成功。

總結:
1.若是碰到bat沒法啓動,檢查ngrok.cfg文件,不能有tab。
2.start.bat啓動後 offline,檢查服務器防火牆狀態,是否放通端口

--------------------- 
原文:https://blog.csdn.net/teisite/article/details/84103657 

 

10分鐘教你搭建本身的ngrok服務器

一、必要條件

(1)服務器,用來搭建ngrok的服務器,必須有公網ip,而且能夠正常訪問(本次測試使用的是Ubuntu 16.04 64位)。 
(2)域名,用來生成訪問域名。

二、安裝git 和Golang

apt-get install build-essential golang mercurial git
1
Golang,Go語言支持,由於Ngrok是基於Go語言編寫的

三、下載源碼,固然也能夠不安裝git,可是須要手動上傳代碼到須要的位置。

此處使用非官方地址,修復了部分包沒法獲取(摘自網絡)

git clone https://github.com/tutumcloud/ngrok.git ngrok

下載下來的目錄結構 

四、生成自簽名證書 
使用ngrok.com官方服務時,咱們使用的是官方的SSL證書。自建ngrokd服務,若是不想買SSL證書,咱們須要生成本身的自簽名證書,並編譯一個攜帶該證書的ngrok客戶端。

證書生成過程須要一個NGROK_BASE_DOMAIN。 以ngrok官方隨機生成的地址xxx.ngrok.com爲例,其NGROK_BASE_DOMAIN就是「ngrok.com」,若是你要提供服務的地址爲「example.ngrok.xxx.com」,那NGROK_BASE_DOMAIN就應該 是「ngrok.xxx.com」。本次測試,因爲沒有多餘的域名,我替換成本身的二級域名「weixin.yangjiace.xyz」

cd ngrok
NGROK_DOMAIN="weixin.yangjiace.xyz"
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.crt

執行完成後須要替換證書

cp base.pem assets/client/tls/ngrokroot.crt

五、編譯

make release-server release-client

 

編譯成功後會在bin目錄下找到ngrokd和ngrok這兩個文件。其中ngrokd 就是服務端程序了。

 

六、啓動服務端

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"
httpAddr、httpsAddr 分別是 ngrok 用來轉發 http、https 服務的端口,能夠隨意指定。ngrokd 還會開一個 4443 端口用來跟客戶端通信(可經過 -tunnelAddr=」:xxx」 指定)。因爲微信限制不能出現端口號,所以這個使用了80、443端口。

七、編譯客戶端

(1)windows
GOOS=windows GOARCH=amd64 make release-client  


(2)mac
GOOS=darwin GOARCH=amd64 make release-client
執行對應的命令會在bin目錄下生成相對應的windows、mac目錄,ngrok.exe就存放在對應目錄下。將對應的ngrok.exe下載到本地。

八、設置本地客戶端

(1)在同級目錄下新建一個配置文件ngrok.cfg
server_addr: "weixin.yangjiace.xyz:4443"  
trust_host_root_certs: false  
(2)同級目錄下新建一個啓動腳本startup.bat
@echo on
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=yjc 8080


其中,-config指向配置文件,-log存放日誌文件位置,-subdomain爲自定義的域名前綴。8080爲端口號。
(3)啓動,點擊啓動腳本startup.bat完成啓動。 
 

九、設置爲系統程序,並後臺運行。

服務器在運行ngrok時,若是關閉會話窗口,會致使服務中斷,很顯然這不是咱們想要的結果,咱們須要服務不斷的在後臺運行,當須要的時候在中止。

在/etc/systemd/system/目錄下建立服務ngrok.service,內容爲

[Unit]
Description=ngrok
After=network.target

[Service]
ExecStart=/myweb/ngrok/bin/ngrokd -tlsKey=/myweb/ngrok/server.key -tlsCrt=/myweb/ngrok/server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"

[Install]
WantedBy=multi-user.target

其中要根據本身的實際目錄修改相對應的目錄。

這樣咱們就能夠了經過systemctl start ngrok.service啓動服務。而後就能夠愉快的玩耍了。

 

最新完美教程 使用centos 7 本身搭建 ngrok 實現內網穿透

1、環境安裝

安裝git 
若是出現 yum 的程序找不到,或者很慢 
請移步這個教程yum 找不到程序, yum更換國內阿里源

# 安裝git所須要的依賴包  
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++  

# 下載新版本git (版本列表 https://www.kernel.org/pub/software/scm/git/)  
cd /usr/local  
wget https://www.kernel.org/pub/software/scm/git/git-2.16.2.tar.gz  

# 解壓  
tar zxvf git-2.16.2.tar.gz  

# 編譯git  
cd git-2.16.2  
./configure --prefix=/usr/local/git  
make  
make install  

#刪除剛纔下載的git包
cd /usr/local
rm git-2.16.2.tar.gz -y

安裝go

# 下載go 
cd /usr/local
www.golangtc.com/static/go   (這裏是列表,注意本身的系統是多少位的,linux-amd64是64位的。linux-386是32位的)
wget https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz  
若是很慢,能夠下載到本地,在上傳到服務器

# 解壓  
tar -zxvf go1.9.2.linux-amd64.tar.gz /usr/local/  

# go的命令須要作軟鏈接到/usr/bin  
ln -s /usr/local/go/bin/* /usr/bin/ 

#刪除下載的go包
rm go1.9.2.linux-amd64.tar.gz -y

go環境設置

#安裝go語言的安裝環境
yum install mercurial bzr subversion -y
#新建go目錄做爲項目目錄
mkdir -p $HOME/go
#用cat的方法在尾部增長配置配置golang的 GOROOT GOPATH
#(注意,這裏GOROOT 後面的路徑是你go解壓的路徑,若是不是按照個人方法解壓的,請注意看一下)
下面這段,整段複製粘貼過去
cat >>$HOME/.bash_profile<<EOF
export GOROOT=/usr/local/go    
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin
EOF
#讓配置生效
source $HOME/.bash_profile

3.檢查下go的env環境變量
go env

輸出:
有一段輸出就好了,好比這樣的
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"

2、ngrok配置

下載ngrok

cd /usr/local/  
git clone https://github.com/inconshreveable/ngrok.git

環境變量

export GOPATH=/usr/local/ngrok/  
export NGROK_DOMAIN="xxx.com"   #這裏寫你本身的域名,不要前綴,好比www

估計這裏你會有疑問,看到別人家都是 ngrok.xxx.com 相似這種形式的 
這裏就是用到了三級域名解析,若是你想要以 xxx.ngrok.xxx.com 這種最終域名形式訪問你的服務,(這裏第一次搭建不推薦,你能夠二級成功之後再用三級的,可是得從環境變量這步往下從新操做一邊。)請看下面教程:

生成證書

cd /usr/local/ngrok
openssl genrsa -out rootCA.key 2048  
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000

拷貝證書覆蓋ngrok原來的證書

過程會讓你輸入y 回車
cp rootCA.pem assets/client/tls/ngrokroot.crt 
cp server.crt assets/server/tls/snakeoil.crt 
cp server.key assets/server/tls/snakeoil.key

生成服務端

cd /usr/local/ngrok/  
GOOS=linux GOARCH=amd64 make release-server  #這裏GOOS後面是你的系統,我是linux,GOARCH 後面是系統,64位是amd64,32位是386
而後就是等待下載了,沒有進度條,耐心等待。
這裏可能報各類錯,我當時就很崩潰。
生成的服務端在/usr/local/ngrok/bin   下的  ngrokd文件

錯誤:沒法交叉編譯 cannot install cross-compiled binaries

$ make release-server GOOS=linux GOARCH=386  
bin/go-bindata -nomemcopy -pkg=assets -tags=release \  
        -debug=false \  
        -o=src/ngrok/client/assets/assets_release.go \  
        assets/client/...  
bin/go-bindata -nomemcopy -pkg=assets -tags=release \  
        -debug=false \  
        -o=src/ngrok/server/assets/assets_release.go \  
        assets/server/...  
go get -tags 'release' -d -v ngrok/...  
go install -tags 'release' ngrok/main/ngrokd  
go install: cannot install cross-compiled binaries when GOBIN is set  
make: *** [server] Error 1

解決方法

cd /usr/local/ngrok
mkdir bin  
cp $GOBIN/go-bindata bin/  
unset GOBIN

生成客戶端

cd /usr/local/ngrok/  
GOOS=windows GOARCH=amd64 make release-client  #這裏GOOS後面是你的系統,我是要在window上啓動客戶端,GOARCH 後面是系統,64位是amd64,32位是386
而後就是等待下載了,沒有進度條,耐心等待。
生成的在/usr/local/ngrok/bin/windows_amd64  的ngrok.exe  
都在bin下,服務端是ngrokd   客戶端是ngrok

啓動服務器端

這裏爲了方便我直接就用80端口了,請確認你的80端口沒有被佔用,關閉相應的服務。
後面要想用,建議使用nginx反向代理到ngrok。

cd /usr/local/ngrok/bin
ngrokd -domain="xxx.com" -httpAddr=":80" -httpsAddr=":8081" -tunnelAddr=":4443"

#-domain後面你上面寫的域名  -httpAddr http端口  -httpsAddr https 端口 
#-tunnerlAddr 客戶端端口,鏈接端口

啓動客戶端(window) 
現將ngrok.exe 下載到本身的電腦上, 
而後同目錄下建立文件ngrok.conf;內容以下:

server_addr: "xxxx.com:4443"   #你上面本身寫的域名
trust_host_root_certs: false  

#目錄下打開命令行
ngrok -config=./ngrok.conf -subdomain=blog 80 
#這裏subdomain後面的是二級域名前綴,你能夠改,
#注意要在域名解析裏添加二級域名解析

添加二級域名解析 

以下就是OK了 顯示online就能夠! 

最後經過blog.xxx.com 訪問你本地的服務器吧

相關文章
相關標籤/搜索