如上 网上找到的都是不稳定的 还不如自己搭建一个。去问度娘了,发现了一堆。好吧,那就动手开干吧。

准备工作(其实也是硬性条件):

1.服务器一台

2.备案域名一个。(好多都说可以不备案,我也不知道真假,我的备了)

工具:

1.远程连接工具:xshell 或者 putty 。(甭管是啥 能连上好使就行 按照个人习惯选择)

2.下载工具:winscp(这是我最爱用的哈) 当然用命令也是可以的。

安装:

1.git安装

# 安装git
yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++

这段命令是度娘告诉我的 那啥 要是不好使 就找个安装git的教程啥的 我这个执行完就ok了

由于ngrok是在go的基础上开发的所以先安装go(go语言完全不同 这不重要 安装好就可以)

2.安装go

我觉得服务器上下载go太慢了 所以我决定本地下载 在往服务器上传

下载地址:https://studygolang.com/dl(我觉得这个挺好的)

下载linux版的 位数看好在下,这些细节问题一定要注意。

下载后 用winscp 上传到服务器下的 /usr/local/下

解压

tar -zxvf go1.12.4.linux-amd64.tar.gz /usr/local/  

目录下即可看见 go 的目录

这时需要做一个软连接(为什么做 我也不知道啊 哪个大神可以指导一下)

# go的命令需要做软连接到/usr/bin
ln -s /usr/local/go/bin/* /usr/bin/ 

做完这些 最后设置全局的环境变量

export GOROOT=/usr/local/go
export GOPATH=\$HOME/go
export PATH=\$PATH:\$GOROOT/bin

使环境生效

source /etc/profile 

好了 到这 我们的go安装完了 检测安装是否安装成功

go version

go env

执行其中一个 出现对应的即可 代表安装成功

3.安装ngrok

为了查找方便 也安装到local目录下

cd /usr/local/ //ngrok下载地址
git clone https://github.com/inconshreveable/ngrok.git

这个地址可以git下载 再传上去 也可以fock到自己项目里

下载完成后可以看到一个 ngrok的文件夹

配置 ngrok的环境变量

export GOPATH=/usr/local/ngrok/  #这里写你自己的域名,不要前缀,比如www.abc.club 填写abc.club (域名已备案)
export NGROK_DOMAIN="abc.club"

4.生成ngrok证书并覆盖原有的证书

cd /usr/local/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 

以上这个命令是拷来的 不必介意 就是生成证书的

覆盖证书 以下命令分着打 打完每一个 会让你确定 按 y 就可以

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

到此 安装配置结束

生成服务端

进入ngrok的目录

cd /usr/local/ngrok/

执行生成服务端 其中amd64代表64位的linux系统 如果是32位的 改为:GOARCH=386

GOOS=linux GOARCH=amd64 make release-server

生成成功后 会在ngrok的bin下有一个ngrokd文件夹 即代表成功

生成客户端

和服务端一样

cd /usr/local/ngrok/
GOOS=windows GOARCH=amd64 make release-client

会在ngrok的bin下有一个windows_amd64文件夹 即代表成功

下面是不同系统生成不同客户端的版本 替换GOODS 和GOARCH的值即可

#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
#ARM 平台:GOOS=linux GOARCH=arm

服务端的启动

在ngrock下执行

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abc.club" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443"参数说明:
#-domain 访问ngrok是所设置的服务地址生成证书时那个
#-httpAddr http协议端口 默认为80
#-httpsAddr https协议端口 默认为443
#-tunnelAddr 通道端口 默认4443

一定要注意 domain 代表 域名 那么这个域名就是之前你定义的环境变量的域名 千万不要错。

启动成功显示:

可以看出 监听80端口 443 端口 4443端口 并且30秒执行一次监听 启动成功

二级域名的映射设置

这个 跟简单 但很重要如下

用泛解析 解析一级域名 3级的还没研究  按照上面的解析就可以

客户端的启动

用winscp将生成的windows_amd64拉倒本地

里面只有一个ngrok.exe程序

同目录下新建ngrok.cfg文件 文件类型可自定义 但是执行时注意一致

ngrok.cfg内容

server_addr: "abc.club:4443"
trust_host_root_certs: false  

server_addr: "abc.club:4443" 其中 abc.club还是你自己设置的那个域名 4443是服务区启动时的监听端口 保持一致 (改就都改 不改就不要动)

客户端有俩种启动方法:

1.cmd到windows_amd64根目录下

直接执行以下命令

ngrok -config=./ngrok.cfg -subdomain=test 8080#参数说明
ngrok.cfg 刚才新建的文件
-subdomain=test test:穿透的域名前缀
8080 :穿透的域名映射端口

启动

代表成功 访问分配的域名即可

2.写一个.bat的脚本

boom.bat的内容

@echo OFF
color 0a
Title boom Ngrok启动工具
Mode con cols=109 lines=30
:START
set /p clientid=   请输入前缀:
echo.
set /p port=   请输入端口:
echo.
ngrok -config=ngrok.cfg -subdomain %clientid% %port%
PAUSE
goto TUNNEL

简单些 也可以弄一些图案什么的 根据个人喜好

访问分配的域名即可

图形界面

项目启动后 访问127.0.0.1:4040或者localhost:4040

将ngrok设置为系统服务 并且开机自启

编辑

vim /etc/rc.d/init.d/ngrok

ngrok内容

#!/bin/bash#chkconfig: - 99 01#description:ngrok  case "$1" instart)echo "start ngrok service.."cd /usr/local/ngrok/setsid ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abc.club" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" ;;*)exit 1;;
esac###参数说明:
### cd /usr/local/ngrok/:进入ngrok目录
### setsid:开始没有这个 结果关闭窗口 发现服务停掉了 加上目前好用
### setsid ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abc.club" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":4443" :启动ngrok服务端命令

给该配置文件权限

chmod 755 ngrok

注册为系统服务

chkconfig --add  ngrok

然后查看是否添加成功

chkconfig

启动

service ngrok start

若能出现和之前直接打命令出现的监听30s界面 则添加成功

设置为开机自启

再添加为系统服务后 ngrok状态都是off 所以需要设置为开机自启

systemctl enable ngrok.service //加入开机启动
systemctl daemon-reload  //重新加载配置文件

重启服务器 直接开启客户端检测

注意事项

服务端 启动成功 客户端连不上:

是因为 防火墙 端口没有开放443 4443 8080 等 都开放一下

开放后可以关闭防火墙 没什么大用

开了之后 还是连不上 这就需要去云服务器端设置安全组的入站规则:

设置好就好了  搭建的还算可以 没有太多的问题 一路很顺

码字码图不易 且看且珍惜

如有问题 欢迎提出指导 谢谢

完整的搭建内网穿透ngrok详细教程(有图有真相)相关推荐

  1. 用frp开源工具,实现内网穿透(详细教程)

    上一篇文章,讲了"穿透届的骨灰级软件工具",点击查看. 选取其中的frp内网穿透方式,给大家分享本此教程供大家参考. ^ - ^ 如果你有一台云服务器(有公网IP),或者有使用权, ...

  2. 使用Lanproxy搭建内网穿透服务完整教程

    本文主要记录了使用基于Docker的Lanproxy搭建内网穿透服务的过程,其中包括服务端和客户端的详细配置,并且基于宝塔面板的Nginx实现域名绑定.反向代理与SSL. 本文主要内容: 1. 解决的 ...

  3. Frps搭建内网穿透(服务器及客户端详细)

    目的:通过云服务器搭建内网穿透,实现外网访问内部应用或者服务(不限操作系统,服务器只需一个,客户端可以多个). 所需资源:阿里/百度/腾讯云服务器 有外网IP即可 软件下载(包含Windows.Liu ...

  4. 手把手教你,搭建内网穿透服务

    我的 GitHub 仓库:? 手把手教你搭建内网穿透服务,基于 lanproxy 穿透服务,为你深度定制了开箱即用的服务端和客户端 Docker 镜像. 在很多场景下内网穿透都是我们常常遇到的需求,之 ...

  5. 搭建内网穿透服务一步一步讲解教程

    我的 GitHub 仓库:? 手把手教你搭建内网穿透服务,基于 lanproxy 穿透服务,为你深度定制了开箱即用的服务端和客户端 Docker 镜像. 在很多场景下内网穿透都是我们常常遇到的需求,之 ...

  6. 内网穿透(详细且免费)部署

    内网穿透(详细且免费)100%成功 我们在做开发时,不想购买服务器,只想搭建我们本地的服务器,我们搭建的本地服务器只能供我们自己电脑的浏览器访问,或者处于同一个wifi下的手机访问 平常我们访问的网站 ...

  7. 本地web项目如何使用外网访问?教你轻松使用cpolar在windows搭建内网穿透

    文章目录 写在前面 轻松实现内网穿透 1.官网账号注册 2.软件下载并安装 3.绑定自己的个人账号 4.启动自己的web项目 5.实现内网穿透 6.访问一下吧 总结 写在前面 相信很多小伙伴开发了一个 ...

  8. 【全过程记录】将windows电脑连接到ipad的rd client远程桌面,通过路由器搭建内网穿透隧道

    caiyi 2021/10/03 通过路由器搭建内网穿透隧道 将本台计算机设置为一台服务器 文章目录 一.找到内网ip 二.找到端口号 三.在ipad上同一局域网下连接 四.在不同局域网下连接 五.突 ...

  9. FRP搭建内网穿透(亲测有效)

    FRP搭建内网穿透 1.概述: frp可以通过有公网IP的的服务器将内网的主机暴露给互联网,从而实现通过外网能直接访问到内网主机:frp有服务端和客户端,服务端需要装在有公网ip的服务器上,客户端装在 ...

最新文章

  1. 8GB变3GB Vista操作系统瘦身安装大法
  2. linux安装Python2.7
  3. 怎么用c语言画出坐标曲线,c语言打印贝塞尔曲线坐标(三阶)
  4. 使用Python对Syslog信息进行分析并绘图
  5. Eclipse设置中文汉化
  6. STM32物联网实战教程(一)—ESP8266的AT指令集详解
  7. 计算机硬盘应该什么格式化,电脑硬盘打不开提示要格式化怎么办
  8. 软工网络15团队作业8——Beta阶段敏捷冲刺(Day4)
  9. 对于基金定投,以月、周、天为单位,哪个更好?
  10. 2007年个人回忆与总结
  11. 移动互联网业务的产业链
  12. 基于ssl协议和基于openssl工具创建私有CA
  13. “新产业50人论坛”之陈柳平:量子通信与量子计算的商业实践
  14. 1000道Java面试题之Java IO 附答案
  15. 译《The Part-Time Parliament》——终于读懂了Paxos协议!
  16. 2018年全国多校算法寒假训练营练习比赛(第二场)H 了断局
  17. 用express-hbs写layout
  18. GA/T1400文档请求失败消息返回提
  19. 复杂网络中衡量网络中节点中心性的几种度量指标
  20. html中alert弹窗自动消失,模拟alert2秒后自动消失弹出框

热门文章

  1. HCNA学习笔记(一)企业网络基本架构简述
  2. 2022年全球市场汽车倒车雷达总体规模、主要生产商、主要地区、产品和应用细分研究报告
  3. logstash截取指定字符和grok的使用
  4. 数字信号处理实验一(离散时间信号的MATLAB实现)
  5. 日语二级语法汇总(part10/16)
  6. 素描的正方体怎么绘制面
  7. linux中标麒麟u盘制作,中标麒麟桌面操作系统龙芯版系统安装盘(U盘)制作方法
  8. 运用python编写凯撒密码并实现_凯撒密码实现英文短句的加解密
  9. 挺住,意味着一切--读书笔记
  10. 点击次数、访问次数、访问者人数、综合浏览量和唯一浏览量有何区别?(转)...