场景

需要一个有固定公网ip地址的主机,通过这个主机穿透办公室的内网主机,可以理解代理功能

1、git

yum -y install git   git是1.8及其以上的版本就行

2、go环境

wget https://redirector.gvt1.com/edgedl/go/go1.9.2.linux-amd64.tar.gz
tar -zxvf go1.9.2.linux-amd64.tar.gz -C /usr/local
cd /usr/local/go/bin
./go version

#安装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、ngrok配置

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

环境变量

/etc/profile
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="tunnel.ethnicity.cn"

生成证书

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

拷贝证书覆盖ngrok原来的证书

过程会让你输入y 回车

cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/client/tls/snakeoilca.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.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文件

生成客户端

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

linux客户端这么操作

GOOS=linux GOARCH=amd64 make release-client 

mac客户端这么做

GOOS=mac GOARCH=amd64 make release-client

启动服务器端

这里为了方便我直接就用80端口了,请确认你的80端口没有被占用,关闭相应的服务。

后面要想用,建议使用nginx反向代理到ngrok。

cd /usr/local/ngrok/bin
./bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":801" -httpsAddr=":802"

#-domain后面你上面写的域名 -httpAddr http端口 -httpsAddr https 端口

#-tunnerlAddr 客户端端口,连接端口

启动客户端(window)

现将ngrok.exe 下载到自己的电脑上,

然后同目录下创建文件ngrok.conf;内容如下:

server_addr: "ethnicity.cn:4443"   #你上面自己写的域名
trust_host_root_certs: false  

#目录下打开命令行

./ngrok -config=./ngrok.yml -proto=http -subdomain=dev-jenkins 8080
#这里subdomain后面的是二级域名前缀,你可以改,

#注意要在域名解析里添加二级域名解析

域名解析

centos7 搭建ngrok穿越内网
客户端配置

#tree

├── bin

│ └── ngrok

└── cfg

└── ngrok.yml

2 directories, 2 files

#cat ngrok.yml

server_addr: "tunnel.ethnicity.cn:4443"
trust_host_root_certs: false
./ngrok -config=./ngrok.yml -proto=http -subdomain=dev-jenkins 8080

验证

http://dev-jenkins.tunnel.ethnicity.cn:801/jenkins/login?from=%2Fjenkins
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐