内网穿透利器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选项来指定证书文件的位置。

应该可以正常运行了

举报
评论 0