Skip to content

配置Ngrok服务器实现内网穿透

如果你有一台电脑,希望能从公网访问,那么你就需要ngrok进行内网穿透

前期准备

  • VPS,或者服务器,有公网IP
  • 已备案域名
  • 64位 Centos6

配置域名解析

ngrok*.ngrok都解析到你的VPS的IP地址上,其中记录类型为A

安装准备

安装GO

1. 如果支持
yum install golang

2. 不支持
wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
vim /etc/profile
//添加以下内容:
export PATH=$PATH:/usr/local/go/bin
source /etc/profile
//检测是否安装成功go
go version

下载ngrok源码

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

安装证书

export NGROKURL="///你自己的url///比如[ngork.myurl.com]"


cd /root/ngrok
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROKURL" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROKURL" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000

修改证书位置

cp rootCA.pem assets/client/tls/ngrokroot.crt
#会询问是否覆盖,一定要写 y 再确认,否则无法覆盖
cp device.crt assets/server/tls/snakeoil.crt
#会询问是否覆盖,一定要写 y 再确认,否则无法覆盖
cp device.key assets/server/tls/snakeoil.key
#会询问是否覆盖,一定要写 y 再确认,否则无法覆盖

编译

#把/usr/local/go/bin目录下的 go-bindata 拷贝到/root/ngrok/bin下
cp /usr/local/go/bin/go-bindata /root/ngrok/bin/

编译服务端

make release-server

编译完成后会存在/root/ngrok/bin/ngrokd

编译客户端

GOOS=xxx GOARCH=xxx make release-client

#Linux 平台 32 位系统:GOOS=linux GOARCH=386
#Linux 平台 64 位系统:GOOS=linux GOARCH=amd64

#Windows 平台 32 位系统:GOOS=windows GOARCH=386
#Windows 平台 64 位系统:GOOS=windows GOARCH=amd64

#MAC 平台 32 位系统:GOOS=darwin GOARCH=386
#MAC 平台 64 位系统:GOOS=darwin GOARCH=amd64

#ARM 平台:GOOS=linux GOARCH=arm

编译完成后会存在/root/ngrok/bin/xxxx[你的平台]/ngrok

启动服务器

cd bin
./ngrokd -domain=$NGROKURL -httpAddr=":8088" -httpsAddr=":8089"
#tunnel默认4443

启动客户端

创建ngrok.cfg

server_addr:"///你自己的url///比如[ngork.myurl.com]"
trust_host_root_certs: false

启动

ngrok -subdomain=[你的本地服务名,不写会自动生成] -config=ngrok.cfg -log=ngrok.log 8888[你本地的端口号]

如果是windows可以创建start.bat

@echo on
cd %cd%
#ngrok -proto=tcp 22
#ngrok start web
ngrok -subdomain=[你的本地服务名,不写会自动生成] -config=ngrok.cfg -log=ngrok.log 8888[你本地的端口号]