centos7 搭建ngrok穿越内网
场景
需要一个有固定公网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
更多推荐




所有评论(0)