配置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[你本地的端口号]