内网穿透利器ngrok--无需固定ip直接访问自己内网服务(二)
安装Ngrok的我们需要准备以下事项:
1.一台Vps或者带有公网地址云主机(各种云厂商都可以)
2.系统为centos7.0(其他的系统也可以的)
3.备案域名(这个随便用不用)
4.准备搭建的的软件:
- go的软件地址:https://golang.google.cn/dl/
- git的下载地址:https://git-scm.com/downloads
- ngrok克隆地址:https://github.com/inconshreveable/ngrok
- 一个域名解析(我没有备案域名所以我不在使用)
5.安装go环境搭建
go环境安装可以通过源码安装或安装EPEL扩展源后使用yum安装,由于使用yum安装的go不能进行交叉编译,所以推荐使用通过源码安装。
源码安装go的详细过程如下:
- 1.下载源码:https://golang.org/dl/上找到自己系统对应的源码。由于我的腾讯云是centos的,所以下载的是:go1.12.7.linux-amd64.tar.gz。
- 2.下载到服务器中将其解压到/usr/local目录下:
wget https://dl.google.com/go/go1.12.7.linux-amd64.tar.gz tar -C /usr/local -xzf go1.12.7.linux-amd64.tar.gz
6.安装git环境
自动安装git环境
yum install mercurial git bzr subversion
7.获取ngrok源码
获取源码:
git clone https://github.com/inconshreveable/ngrok.git
如果获取源码速度较慢,可以进入https://github.com/inconshreveable/ngrok.git 下载源码到本地,上传至目录/usr/local/ngrok
8.编译安装ngrok环境
- 配置环境变量
cd ngrok export NGROK_DOMAIN="127.0.0.1" 127.0.0.1替换成你自己的域名
- 生成证书
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
- 替换证书
cp rootCA.pem assets/client/tls/ngrokroot.crt cp device.crt assets/server/tls/snakeoil.crt cp device.key assets/server/tls/snakeoil.key
- 设置变量
GOOS=linux GOARCH=amd64
3.3 编译ngrok
有没有release的区别是,包含release的编译结果会把assets目录下的内容包括进去,从而可以独立执行。如果你今后还要更换证书,建议编译不包含release的版本。。首先编译ngrok服务端(ngrokd),默认为Linux版本:
make clean make release-server
编译过程需要等待一会,因为需要通过git安装相关依赖包。如果提示没有权限,使用sudo命令来安装。
在编译客户端的时候需要指明对应的操作系统和构架:
- 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
例如编译Linux64位的客户端:
GOOS=linux GOARCH=amd64 make release-client
生成的文件放在/bin对应的文件夹中,如windows 64位的为:windows_amd64,默认版本的文件就在根目录下。
3.4 启动ngrokd服务器
编译后生成两个文件分别为服务端(ngrokd)和客户端(ngrok)。切换到对应的文件夹,运行服务端:
./ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":801" -httpsAddr=":802"
参数-domain表示服务器域名,请改成你自己的域名;-httpAddr表示默认监听的HTTP端口,-httpsAddr表示默认监听的HTTPS端口,因为我用不到所以都设置成空字符串”“来关闭监听,如果需要打开的话记得格式是:12345(冒号+端口号)这样的;-tunnelAddr表示服务器监听客户端连接的隧道端口号,格式和前面一样;-log表示日志文件位置;还有个-log-level用来控制日志记录的事件级别,选项有DEBUG、INFO、WARNING、ERROR。
如果编译的是不带release的版本,还可以通过-tlsCrt和-tlsKey选项来指定证书文件的位置。
应该可以正常运行了
请先 后发表评论~