为了账号安全,请及时绑定邮箱和手机立即绑定

作为剽窃狗,我必须分享大神怎么搭建「内网穿透」服务器的

标签:
接口测试

首先加粗声明原文出处https://blog.csdn.net/zhangguo5/article/details/77848658

当然,我在大神的文章上加了别的东西,为了更适合我们后端程序员做本地开发调试。

以下的所有步骤,截图均经过本人实验。

  1. 首先你得有一台云服务器(我的是centos7系统)和域名。如何购买和认证,我个人还是推荐阿里云作为服务商的。

  2. yum install git

    因为我会通过git安装ngrok

    关于ngrok我也了解的不多,反正就是外国大神写的内网穿透的神器,有兴趣自行查询。

  3. git clone https://github.com/inconshreveable/ngrok.git ngrok2
  4. yum install golang
  5. 给你的已有域名,添加解析的IP地址用于内网穿透。两个都要添加!

    https://img1.sycdn.imooc.com//5c50578d00015e6f13220944.jpg


    https://img1.sycdn.imooc.com//5c5013770001167413181072.jpg

  6. export NGROK_DOMAIN="ngrok.yourdomain.com"  #设置环境变量,ngrok域名

    https://img1.sycdn.imooc.com//5c50180600013caf16040950.jpg

    https://img1.sycdn.imooc.com//5c50181f0001c6cb16040950.jpg

  7. 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
  8. 执行成功如下

    https://img1.sycdn.imooc.com//5c501a590001716416040950.jpg

  9. 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里指定的文件夹中,并且覆盖源文件

    https://img1.sycdn.imooc.com//5c501f720001382c16040950.jpg

    https://img1.sycdn.imooc.com//5c501f7d0001893b16040950.jpg

    https://img1.sycdn.imooc.com//5c501f890001f96d16040950.jpg

  10. 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的客户端。

    各位老友千万不要弄错服务端或者客户端的系统。

    https://img1.sycdn.imooc.com//5c50233b0001492816040950.jpg

    https://img1.sycdn.imooc.com//5c5024440001019916040950.jpg

  11. #写一个服务端运行的脚本,以后这台服务器就是运行内网穿透的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"

    https://img1.sycdn.imooc.com//5c5025fd0001728f16040950.jpg

    https://img1.sycdn.imooc.com//5c502d6000014fd416040950.jpg

  12. 去服务商开放端口,比自己开放端口简单很多。红框中三个端口需要开放

    https://img1.sycdn.imooc.com//5c50288e0001e5ea24021150.jpg

  13. 然后回去启动你刚才写的ngrokserver2.sh,应该一下就可以启动成功了。

    nohup 你的命令 &应该不用我多说

    当然,我上面展示的脚本代码中,所选的服务端,不是我所用的服务端。你们要参考自己服务器的操作系统选择。

    https://img1.sycdn.imooc.com//5c502dbb0001277e16040950.jpg

  14. 然后到了客户端,利用ftp把生成好的客户端文件拿到要穿透的电脑上。

    https://img1.sycdn.imooc.com//5c5058090001770524001700.jpg

  15. #创建配置文件来配合运行客户端配件
    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"

    https://img1.sycdn.imooc.com//5c62365200016b6614780950.jpg

  16. #运行客户端文件,进行内网渗透
    ./ngrok -config=ngrok.cfg start http https ws
    # ngrok.cfg是配置文件,和我的客户端文件(ngrok)同级所以可以直接指定使用

    https://img1.sycdn.imooc.com//5c62357b00017fae14780950.jpg

  17. 穿透成功

    红框内是外网用以访问内网的域名。

    8080是我springboot起的http服务,8088是我springboot用netty起的websocket服务。

    至此,你本机上运行的项目,外网就能够访问得到了。

    By the way,我的https的域名还是没法访问的,因为不知道怎么配置SSL证书。

    https://img1.sycdn.imooc.com//5c6235d700013c4414780950.jpg

    

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
4
获赞与收藏
17

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消