关于搭建自己的内网穿透服务-ngrok

允我心安 提交于 2019-12-13 14:56:00

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

简述搭建ngrok的过程

1、环境准备

1)必须有一台公网服务器,阿里云服务器为例(最好是linux 系统 centOs7)

2)必须注册自己的域名(xxx.vip),阿里云上可以注册

并在阿里云服务器管理中,添加域名,并设置dns解析

设置域名云DNS解析

2 linux服务器上安装ngrok,开启ngrok服务

1.安装git和golang,其中git不是必须的,安装git仅仅是为了后面下载ngrok源码方便,golang是因为ngrok是用go语言写的
   1)yum install git 安装git
   2)yum install git ,若存在最好先执行yum remove git,再安装,怕到时候下载不下来ngrok源码
   3)安装golang语言环境-wget https://studygolang.com/dl/golang/go1.8.linux-amd64.tar.gz。下载地址在
      https://studygolang.com/dl中找的,想换版本可以在这里找
   4)tar -zxvf go1.8.linux-amd64.tar.gz
   5)vi /etc/profile 加上这两句话
      export GOROOT=你的go解压地址
      export PATH=$PATH:$GOROOT/bin
      source /etc/profile 是环境生效
      go version 查看go是否安装成功

2.下载ngrok源码,安装
  1)本地下载ngrok
    创建ngrok目录 mkdir ngrok 并进入 cd ngrok
    在本地访问https://github.com/inconshreveable/ngrok点击下载zip包,解压并上传到ngrok服务器
  2)可以通过git 克隆git clone https://github.com/inconshreveable/ngrok.git
  3)ngrok配置,执行一下命令。使用ngrok.com官方服务时,我们使用的是官方的SSL证书。
     自建ngrokd服务,如果不想买SSL证书,我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。
     证书生成过程需要一个NGROK_BASE_DOMAIN。 填写我们的域名地址xxx.vip
  4)按照如下命令一步步配置
     1. cd ngrok
     2. NGROK_DOMAIN="你的域名"
     3. openssl genrsa -out base.key 2048
     4. openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
     5. openssl genrsa -out server.key 2048
     6. openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
     7. openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
  经过以上步骤,证书已经生成
  5)覆盖证书 cp base.pem assets/client/tls/ngrokroot.crt 复制证书
  6)编译打包程序 make release-server release-client 或者 make release-all
     这一步骤等待时间较长,成功编译后,会在bin目录下找到ngrokd和ngrok这两个文件。
  7)前面生成的 ngrokd 就是服务端程序了,指定证书、域名和端口启动它(证书就是前面生成的,注意修改域名)
    ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":8080" -httpsAddr=":8090" 其中domain是你的域名,httpAddr是服务器http访问端口,httpsAddr是服务器https访问端口,其中,ngrok会开启4443端口与客户端保持连接,所以以上三个端口必须准入防火墙。若正常的话会提示


   8)生成window客户端和mac客户端
      GOOS=windows GOARCH=amd64 make release-client windown系统
      GOOS=windows GOARCH=amd64 make release-client  mac系统
   9)然后在同级目录下新建一个配置文件ngrok.cfg
      内容为:server_addr: "你的域名:4443"  
             trust_host_root_certs: false  
      同目录下新建一个start.bat
       @echo on
       cd %cd%
       #ngrok -proto=tcp 22
       #ngrok start web
       ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=prefix(子域的前缀) port(本地服务的端口)

   双击start.bat 正常情况下有如下所示

这种情况就是成功了。

3.服务端后台运行,只需要开机自启即可实现

1.通过nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":8080" -httpsAddr=":8090" 启动可以将启动置入后台,且断开ssh也无影响。

2.开机自启方式

1)在ngrok程序目录下新建一个启动脚本,例如:start.sh
    path=/usr/local/ngrok
    cd $path
    ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="你的域名" -httpAddr=":8080" -httpsAddr=":8090" 

给脚本授予执行权限
chmod +x start.sh

2)把ngrok程序制作成系统服务
在 /etc/rc.d/init.d目录下新建一个服务项目(ngrok),如下:
    #!/bin/sh  
    #chkconfig:2345 70 30  
    #description:ngrok  
      
    ngrok_path=/usr/local/ngrok
    case "$1" in  
        start)  
            echo "start ngrok service.."  
            sh ${ngrok_path}/start.sh  
            ;;  
        *)  
        exit 1  
        ;;  
    esac  

给该文件赋权限755
chmod 755 ngrok


3)注册ngrok服务自启动
  chkconfig --add  ngrok

  测试服务是否能启动成功
  service ngrok start

  检查自启动的服务
  chkconfig

reboot重启就实现自启后台运行了

4.linux 客户端 ngrok后台启动方式

ngrok 用 & 不能后台运行 

  这就要使用screen这个命令

  首先安装screen

  yum install screen

  之后运行

  screen -S 任意名字(例如:keepngork)

 然后运行ngrok启动命令

最后按快捷键

 ctrl+A+D

既可以保持ngrok后台运行
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!