在云主机上搭建ngrok实现内网穿透
  

sailyang 1168

{{ttag.title}}
CentOS系统的云主机上搭建ngrok的,域名和证书都是免费获取的,具体方法可以参照这篇教程
当然嫌麻烦也可以不申请证书,但是域名一定要有,而且域名申请也十分简单,。,

域名和证书都有了之后就是ngrok的安装了,这里提供一下CentOS的安装教程
1.首先安装GO语言,因为ngrok是GO语言编写的

yum install golang
1
2.接下来需要从github上将ngrok拉取下来,如果没有git,执行yum install git安装,然后选个地方直接拉取git clone https://github.com/tutumcloud/ngrok.git ngrok
拉下来的目录结构如下

[root@VM_16_11_centos temp]# ll ngrok/
total 40
drwxr-xr-x 4 root root 4096 Sep  2 10:16 assets
drwxr-xr-x 4 root root 4096 Sep  2 13:53 bin
drwxr-xr-x 2 root root 4096 Sep  2 10:16 contrib
-rw-r--r-- 1 root root  199 Sep  2 10:16 CONTRIBUTORS
drwxr-xr-x 2 root root 4096 Sep  2 10:16 docs
-rw-r--r-- 1 root root  551 Sep  2 10:16 LICENSE
-rw-r--r-- 1 root root 1433 Sep  2 10:16 Makefile
drwxr-xr-x 5 root root 4096 Sep  2 10:23 pkg
-rw-r--r-- 1 root root 1904 Sep  2 10:16 README.md
drwxr-xr-x 5 root root 4096 Sep  2 10:18 src

3.进入拉下来的ngrok文件夹,如果你已经配置了letsencrypt的免费证书,那么就将生成的证书文件复制到asseert文件夹,下面是博主自己的证书存放的位置和ngrok的存放位置,请自行更改

cp /etc/letsencrypt/live/madongyu.ml/chain.pem temp/ngrok/assets/client/tls/ngrokroot.crt
cp /etc/letsencrypt/live/madongyu.ml/cert.pem temp/ngrok/assets/server/tls/snakeoil.crt
cp /etc/letsencrypt/live/madongyu.ml/privkey.pem temp/ngrok/assets/server/tls/snakeoil.key

没有证书的话就只能自己签名一个了,$NGROK_DOMAIN是自己的域名

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

你用的是letsencrypt的证书,那么运行ngrok的时候最好指定证书地址,而不是放在assert打包到程序。。。不然就要三个月换一次。。。
4.证书也配置好之后就是程序的打包了,可以选择打包对应平台的客户端和服务端

#win服务端
GOOS=windows GOARCH=386 make release-server
#win客户端
GOOS=windows GOARCH=386 make release-client
#linux服务端
GOOS=linux GOARCH=386 make release-server
#linux客户端
GOOS=linux GOARCH=386 make release-client

直接在ngrok目录下运行命令就可以了,生成的程序在bin文件夹里面
5.最后就是运行了,如果客户端一直连接不上,请关掉防火墙,或者检查证书是否有误。
服务端运行
ngrokd -domain="madongyu.ml" -httpAddr=":1111" -httpsAddr=":2222 -tlsKey=xxx.key -tlsCrt=xxx.crt"
如果配置了assert就不需要后面两个参数,这两个就是指定证书的位置,domian参数代表域名,httpAddr和htppsAddr代表监听的http和https对应的端口
客户端运行,需要写一个配置文件ngrok.cfg,当然也可以不写
A)监听http和https,这里监听客户端主机的8987端口
ngrok.exe -subdomain test kyt -config=ngrok.cfg 8987
这里监听成功后会在你的域名前面添加前缀,即subdomain的值test,变成test.xxxx.xxxx,这个时候你需要配置自己域名的子域名,具体操作可以在自己云主机的管理界面操作,下面是我自己的配置成功的图,使用‘*’是为了偷懒。。。记住配置成功后需要时间生效,10分钟以内生效
B)监听TCP(可用于远程主机联机),这里使用start参数可以直接在配置文件里面调用参数,这样就不用写很多了,而且这里也不用配置子域名了,不需要。
.\ngrok.exe -config=.\config.cfg start transmission
配置文件ngrok.cfg,必须遵循YML文件格式,否则会报错,直接复制过去可能运行的时候会报错,可以使用线上的YAML检测工具校验

server_addr: "madongyu.ml:4443"
trust_host_root_certs: false
tunnels:
  transmission:
    remote_port: 3389
    proto:
      tcp: 3389

server_addr就是自己服务器的域名以及默认的监听端口4443,可以在启动的时候自定义。
tunnels是隧道的意思,我们可以自定义多条隧道,名字也可以自定义,transmission就是我自定义的tcp隧道(名字随意),监听客户端的3389端口,绑定到主机的3389端口。

打赏鼓励作者,期待更多好文!

打赏
1人已打赏

法律框架 发表于 2018-12-1 16:38
  
真是难得一见的好帖,收藏·····
ie5000 发表于 2018-12-1 18:47
  
666,马克一下
好心情能长寿 发表于 2018-12-1 21:57
  
好分享。好分享。
发表新帖
热门标签
全部标签>
西北区每日一问
技术盲盒
每日一问
技术笔记
干货满满
GIF动图学习
通用技术
标准化排查
SDP百科
产品连连看
技术咨询
技术圆桌
社区新周刊
信服课堂视频
功能体验
2023技术争霸赛专题
秒懂零信任
自助服务平台操作指引
畅聊IT
在线直播
新版本体验
技术晨报
安装部署配置
sangfor周刊
VPN 对接
专家问答
高手请过招
升级&主动服务
答题自测
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
运维工具
云计算知识
用户认证
原创分享
解决方案
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选
2024年技术争霸赛
北京区每日一练
场景专题
故障笔记
排障那些事
高频问题集锦

本版版主

461
247
13

发帖

粉丝

关注

本版达人

feeling

本周分享达人

新手29676...

本周提问达人