登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 833|回复: 0

centos7下利用ngrok编译服务端和客户端实现内网穿透

[复制链接]

187

主题

187

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-3-16 23:23:24 | 显示全部楼层 |阅读模式 来自 江苏徐州
PKTMgzm4eEc6d299.jpg

有时间想在本身电脑、路由器大概树莓派上搭建一些web、vpn等服务让本身用,但是本身的电脑一样平常没有外网ip,没法在外部访问这些服务,就像下图,电脑能访问到外网,但是没法从外网访问到电脑。
YSzaaeeq2D9arbR5.jpg 这时可以用一台有外网ip的服务器使用ngrok在中心做个跳板,如下图,原理是搭有web服务的内网电脑A 与公网服务器C长毗连,手机B访问服务器C的指定一个端口,服务器C将收到的手机发来的数据转发给内网电脑A,A做出相对的相应回传给服务器C,C再将收到的数据发给手机A,实现穿透内网。端口转发这些规则都是在服务器C和电脑B上界说好的。
eq3NwnLtiqWVYEav.jpg ngrok穿透内网原理搭建比力简朴,搭建也比力简朴,不必要填许多设置文件。只必要在服务器上运行服务端步伐,在内网电脑上运行客户端步伐就行了。
必要:一台服务器、一个域名
搭建步调:
1、情况预备:在服务器上安装git、go语言情况,下载ngrok源码包。
2、用域名天生证书(防止别人用使用你的服务器做跳板)。
3、编译服务端步伐。
4、编译客户端步伐,并复制到内网电脑上。
5、分别运行服务端和客户端,实现长毗连。
6、测试,用手机访问看能不能转发数据。
具体步调:
(为了轻易明白,这里用abcd.cn当做域名,二级域名是ngrok.abcd.cn,指向同一个服务器)
1、情况预备

安装git
yum install git -y
下载go语言包,直接给出下好的了:http://pan.baidu.com/s/1dTzXD-r5kMgIvcD8HZJN1g
解压go语言压缩包,创建情况变量:
tar -zxvf go1.9.2.linux-amd64.tar.gz
添加并生存profile文件:
vi /etc/profile

export GO_HOME=/file/go/go

export PATH=$PATH:$GO_HOME/bin
更新情况变量
source /etc/profile
下载解压github上的ngrok源码
wget http://codeload.github.com/inconshreveable/ngrok/zip/master
给一个下好的ngrok:http://pan.baidu.com/s/1K2PB-Kka0-alLDSBfpotqQ
2、天生证书

实行下列下令:
NGROK_DOMAIN="你的域名"
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
实行后文件夹下会天生一些证书文件。
将新天生的证书,更换掉assets/client/tls下的证书
cp base.pem assets/client/tls/ngrokroot.crt -y
3、编译天生服务端步伐

make release-server
会在ngrok/bin/目次下天生ngrokd可实行文件,
实行:
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abcd.cn" -httpAddr=":80" -httpsAddr=":443"
下令中-httpAddr 和-httpsAddr 是手机访问ngrok.abcd.cn的的端口,服务端会将80端口吸收到的数据通过4443端口(默认)转发到内网电脑。
出现下列信息是乐成运行了。
[22:17:33 CST 2018/08/19] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified
[22:17:33 CST 2018/08/19] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:80
[22:17:33 CST 2018/08/19] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443
[22:17:33 CST 2018/08/19] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443
[22:17:33 CST 2018/08/19] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds
4、编译天生客户端步伐

这里编译一个window版的客户端:
GOOS=windows GOARCH=amd64 make release-client

(天生linux客户端直接实行make release-client
实行完上述下令后会在ngrok/bin/目次下天生windows_amd64文件夹,内里有一个ngrok.exe步伐,复制到本身内网电脑上。
好比复制到E:/ngrok文件夹,需在此文件夹里新建ngrok.cfk设置文件,内里写:
server_addr: "abcd.cn:4443"
trust_host_root_certs: false
在下令提示符里切换到此文件夹,实行:
ngrok.exe -config=ngrok.cfg -log=ngrok.log -subdomain  ngrok  5000
下令中指定设置文件、日记文件,-subdomain背面跟的是二级域名和服务器将数据转发到的当地端口,留意填的是二级域名的前一部门,好比ngrok.abcd.cn就写ngrok。
下图是运行乐成的截图:
n4nvAznUCVa88Nc8.jpg 就会将服务器80吸收到的数据转发到内网电脑的5000端口。
5、服务端和客户端运行下令

先运行服务端
./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="abcd.cn" -httpAddr=":80" -httpsAddr=":443"
再运行客户端
ngrok.exe -config=ngrok.cfg -log=ngrok.log -subdomain  ngrok  5000
6、用手机访问举行测试

假如是客户端毗连不到服务端(就是上面步调谁人图状态不表现online),一样平常是服务端设置的题目,客户端步伐和服务端步伐是用证书编译出来的配套利用的。
假如服务端能吸收得手机访问的数据但是找不到隧道转发,大概是客户端域名写的有题目(我就是如许的错误)。
ps:域名那边没做其他实验,不知道填服务器ip可不可行,我在运行客户端写一级域名不可,写二级域名可以,但是看网上教程填的一级域名。
让您学习到的每一节课都有所劳绩
《Linux就该这么学》是一本由资深运维专家刘遄老师及国内多名红帽架构师(RHCA)基于最新RHEL7体系共同编写的高质量Linux技能自学教程,极其适适用于Linux技能入门教程或授课辅助课本。荣获双11、双12购物狂欢节IT品类册本销量冠军,2017年、2018年国内读者增速最快的技能册本,您可以在京东、当当、亚马逊及天猫搜刮书名后购买,亦可加刘遄老师微信交换学习(手指按住下图3秒钟即可主动扫描)~

t42p1oo9q2pzpQ54.jpg

刘遄老师QQ:5604583

☀ Linux技能交换群:5604215(新群,火热加群中……
☀ 官方站点:www.linuxprobe.com
☀ 册本在线学习(电脑在线阅读结果更佳
http://www.linuxprobe.com/chapter-00.html




上一篇:微信公众号:方式软件管家(费尽心血来团体,重要无病毒)! ...
下一篇:CentOS7设置supervisor开机自启
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-3-29 00:37 , Processed in 0.084542 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表