内网穿透的目的是什么,简单的来说,就是让外网能够访问内网,也就是让别人通过互联网来访问你本地的应用。网上有一些工具可以实现,但大多都需要收费,免费的又不太稳定,域名还长,所以就用自己的云服务器去搭建一个ngrok来实现内网穿透的功能。

  为什么要内网穿透呢,例如微信平台开发的时候,能够本地进行调试,是不是就很方便了。

一、域名

  域名必须要有,不然没有办法解析映射。而且域名挺便宜的,在阿里或腾讯买个便宜的域名只要几块钱/年。如果不做网站服务的话,可以不需要备案,但是需要进行实名认证。然后进行域名解析,记录值修改成自己云服务器上的公网ip就行了。  

  

二、云服务器安装和配置ngrok

1.配置服务端

  (1)安装git 用于下载ngrok代码。

  yum -y install git

  (2)克隆ngrok代码,ngrok-server是文件夹命名。

  git clone https://github.com/inconshreveable/ngrok.git ngrok-server

  (3)安装golang。

  yum -y install golang

  (4)安装完成后,进入ngrok目录下。

  cd ngrok-server

  (5)设置环境变量,Go语言的安装位置。

  export GOPATH=/usr/local/ngrok/

  (6)设置环境变量,ngrok域名,填写自己配置的域名。(一定要是自己的域名:如test.com

  export NGROK_DOMAIN=“你的域名”

  (7)执行命令创建ssl证书。

  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)然后直接拷贝覆盖证书文件。

  \cp -rf rootCA.pem assets/client/tls/ngrokroot.crt
  \cp -rf server.crt assets/server/tls/snakeoil.crt
  \cp -rf server.key assets/server/tls/snakeoil.key

  (9)编译ngrok的Linux服务端。

  GOOS=linux GOARCH=amd64 make release-server

  (10)编译生成ngrok的Windows客户端。

  GOOS=windows GOARCH=amd64 make release-client

  (11)进入到bin目录,启动ngrok服务。(这里我设置http端口为8080,https为4430,ngrok的默认连接口为4443这里我就不做更改了,注:请注意服务器是否放行了你设置的端口

  cd bin

  ./ngrokd -domain=”你的域名” -httpAddr=”:8080″ -httpsAddr=”:4430″ -tunnelAddr=”:4443″

  启动后如下图:

  

  如果启动失败,请检查端口是否被占用。

  服务端这里就配置完成了,如果想关闭服务的话可按Ctrl+C退出。

2.配置客户端

  (1)下载生成的ngrok客户端文件,文件在ngrok-server/bin/windows_amd64文件夹内。

  

  (2)将下载下来的ngrok.exe放在一个文件夹里,并在同级目录下新建一个文本文件,重命名为ngrok.cfg配置文件。

   

  (3)用记事本打开该文件,保存以下内容(你的域名+ngrok连接口:默认连接口为4443,233和2333为自定义的本地端口,www为二级域名前缀)注:缩进要用空格打,不要用tab制表符!!!冒号后接的参数前要加上一个空格,不然会报错无法启动的!

server_addr: "你的域名:4443"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "www"
    proto:
      http: "233"
  https:
    subdomain: "www"
    proto:
      https: "2333"

  

   (4)再在此目录下新建一个文本文件,重命名为start.bat启动文件。

  

  (5)同样用记事本打开该文件,保存以下内容。

  ngrok -config=ngrok.cfg start http http

  (6)双击运行start.bat,如果显示下面的界面就表示成功了。

  

三、遇到问题

  1.双击start.bat闪退:请注意ngrok.cfg配置文件的内容格式是否正确。

  2.出现下面界面:请确认服务器是否开启了服务,或是否放行了相应的端口。

  

  3.如果第2条检查没有问题,服务器上出现Failed to read message: remote error: tls: bad certificate错误:

  为证书错误,请确认ngrok.cfg中的域名服务开启命令中的域名配置环境变量中的域名是否保持一致。

  查看环境变量域名的命令为:echo $NGROK_DOMAIN

 

版权声明:本文为LYF1997原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LYF1997/p/11193998.html