首先加粗声明原文出处:https://blog.csdn.net/zhangguo5/article/details/77848658
当然,我在大神的文章上加了别的东西,为了更适合我们后端程序员做本地开发调试。
以下的所有步骤,截图均经过本人实验。
首先你得有一台云服务器(我的是centos7系统)和域名。如何购买和认证,我个人还是推荐阿里云作为服务商的。
yum install git
因为我会通过git安装ngrok
关于ngrok我也了解的不多,反正就是外国大神写的内网穿透的神器,有兴趣自行查询。
git clone https://github.com/inconshreveable/ngrok.git ngrok2
yum install golang
给你的已有域名,添加解析的IP地址用于内网穿透。两个都要添加!
export NGROK_DOMAIN="ngrok.yourdomain.com" #设置环境变量,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 server.key 2048 openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
执行成功如下
cp rootCA.pem /ngrok2/assets/client/tls/ngrokroot.crt #复制rootCA.pem到assets/client/tls/并更名为ngrokroot.crt cp server.crt /ngrok2/assets/server/tls/snakeoil.crt #复制server.crt到assets/server/tls/并更名为snakeoil.crt cp server.key /ngrok2/assets/server//tls/snakeoil.key #复制server.key到assets/server/tls/并更名为snakeoil.key
将三个证书放到下载的ngrok2里指定的文件夹中,并且覆盖源文件
GOOS=windows GOARCH=386 make release-server #win服务端 GOOS=windows GOARCH=386 make release-client #win客户端 GOOS=linux GOARCH=386 make release-server #linux服务端 GOOS=linux GOARCH=386 make release-client #linux客户端 GOOS=linux GOARCH=amd64 make release-server #centos64服务端 GOOS=linux GOARCH=amd64 make release-client #centos64客户端 GOOS=darwin GOARCH=amd64 make release-server #mac64服务端 GOOS=darwin GOARCH=amd64 make release-client #mac64客户端
在下载下来的ngrok2根目录生成相应系统所使用的应用。
因为我server用的是阿里云(centos7),而需要穿透的web服务是在我的mac上的,所以我选择生成mac的客户端。
各位老友千万不要弄错服务端或者客户端的系统。
#写一个服务端运行的脚本,以后这台服务器就是运行内网穿透的server vim /ngrok2/bin/linux_386/ngrokserver2.sh #在文件中写上一下内容并保存,没有权限记得自己chmod 775,和之前生成的linux应用放同一目录 /ngrok2/bin/linux_386/ngrokd -tlsKey="/ngrok2/assets/server/tls/snakeoil.key" -tlsCrt="/ngrok2/assets/server/tls/snakeoil.crt" -domain="ngrok.你的域名.com" -httpAddr=":801" -httpsAddr=":802"
去服务商开放端口,比自己开放端口简单很多。红框中三个端口需要开放
然后回去启动你刚才写的ngrokserver2.sh,应该一下就可以启动成功了。
nohup 你的命令 &应该不用我多说
当然,我上面展示的脚本代码中,所选的服务端,不是我所用的服务端。你们要参考自己服务器的操作系统选择。
然后到了客户端,利用ftp把生成好的客户端文件拿到要穿透的电脑上。
#创建配置文件来配合运行客户端配件 vim ngrok.cfg # 以下是配置文件内容,ws是我要用来访问websocket协议的 server_addr: "ngrok.你的域名.com:4443" trust_host_root_certs: falsetunnels: http: subdomain: "kyt" proto: http: "8080" https: subdomain: "kyt" proto: https: "8080" ws: proto: http: "8088"
#运行客户端文件,进行内网渗透 ./ngrok -config=ngrok.cfg start http https ws # ngrok.cfg是配置文件,和我的客户端文件(ngrok)同级所以可以直接指定使用
穿透成功
红框内是外网用以访问内网的域名。
8080是我springboot起的http服务,8088是我springboot用netty起的websocket服务。
至此,你本机上运行的项目,外网就能够访问得到了。
By the way,我的https的域名还是没法访问的,因为不知道怎么配置SSL证书。
热门评论
自己搭建内网穿透的话是很麻烦的,有需要的可以了解一下网云穿