• 最新论文
  • 香港经济遇冷 中小企业慨叹:中秋佳节没人敢订桌 日本90岁老兵扬言还想打中国?问他为何不道歉,他说了2个原因 电子烟行业乱象频发,铂德如何坚持做好产品? 女星们的吃戏:杨颖错位,赵丽颖吃特效,而她却被当作教科书 电子烟行业乱象频发,铂德如何坚持做好产品? 《水浒传》第一百一十回 燕青秋林渡射雁 宋江东京城献俘 60岁大爷凌晨偷车,事后竟骑行40公里,返回案发现场时被抓 在公益救援的大道上一路向前 ——记聊城市“最美退役军人”秦一杰 CentOS 7 下搭建自己的 ngrok 内网穿透服务 大爆冷!混双头号种子2:3出局,张本智和0:3惨遭一轮游 CentOS 7 下搭建自己的 ngrok 内网穿透服务 车联网服务non-RESTful架构改造实践 《水浒传》第一百一十回 燕青秋林渡射雁 宋江东京城献俘
  • 推荐论文
  • 香港经济遇冷 中小企业慨叹:中秋佳节没人敢订桌 日本90岁老兵扬言还想打中国?问他为何不道歉,他说了2个原因 电子烟行业乱象频发,铂德如何坚持做好产品? 女星们的吃戏:杨颖错位,赵丽颖吃特效,而她却被当作教科书 电子烟行业乱象频发,铂德如何坚持做好产品? 《水浒传》第一百一十回 燕青秋林渡射雁 宋江东京城献俘 60岁大爷凌晨偷车,事后竟骑行40公里,返回案发现场时被抓 在公益救援的大道上一路向前 ——记聊城市“最美退役军人”秦一杰 CentOS 7 下搭建自己的 ngrok 内网穿透服务 大爆冷!混双头号种子2:3出局,张本智和0:3惨遭一轮游 CentOS 7 下搭建自己的 ngrok 内网穿透服务 车联网服务non-RESTful架构改造实践 《水浒传》第一百一十回 燕青秋林渡射雁 宋江东京城献俘
  • 热门标签
  • 日期归档
  • CentOS 7 下搭建自己的 ngrok 内网穿透服务

    来源:www.nwovbc.com 发布时间:2019-09-20

    今天的家庭宽带或一些公司的宽带不直接分配公共IP,这给我们在开发和调试时带来了很多不便。例如,当我们需要连接到第三方系统,如微信公众账号和支付宝时,第三方系统需要通过异步回调通知我们的服务,但是我们自己的计算机上的应用程序无法从外部访问它,所以它无法通知,联合调试测试不能很好。

    在这种情况下,ngrok为我们提供了很多帮助。它允许我们访问外部应用程序,无论是HTTP(s)服务还是TCP/SSH等,都可以通过ngrok服务。内联网渗透以实现外部访问。

    第1步:安装golang环境

    博主的服务器使用CentOS 7版本,因此您可以通过yum install golang安装golang环境。对于其他操作系统,您可以参考官方文档。如何安装golang

    第2步:下载ngrok源代码

    目前ngrok 2.x是封闭源代码,我们可以下载的最新版本是ngrok-1.7.1.zip,

    下载完成后,解压缩zip包。这里我们需要修改src/ngrok/log/logger.go中的源代码,

    将日志'code.google.com/p/log4go'更改为日志'github.com/alecthomas/log4go',

    否则,它将在编译时报告错误。构建失败:'包code.google.com/p/log4go:无法检测到code.google.com/path'的版本控制系统

    第3步:生成TLS证书

    例如,我们使用4kb.cn域名作为示例。生成证书时,我们可以指定ngrok.4kb.cn域名来指定ngrok服务器地址(要求DNS解析为ngrok所在服务器的IP地址),并提供ngrok域名作为外部。 4kb.cn(需要泛域名解析.4kb.cn到ngrok所在服务器的IP),这里对ngrok.4kb.cn和* .4kb.cn的分析没有冲突。

    生成TLS证书的命令如下:

    Openssl genrsa -out rootCA.key 2048

    Openssl req -x509 -new -nodes -key rootCA.key -subj'/CN=ngrok.4kb.cn'-days 3650 -out rootCA.pem

    Openssl genrsa -out device.key 2048

    Openssl req -new -key device.key -subj'/CN=ngrok.4kb.cn'-out device.csr

    Openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 3650

    第4步:覆盖ngrok默认TLS证书

    Cp rootCA.pem assets/client/tls/ngrokroot.crt

    Cp device.crt assets/server/tls/snakeoil.crt

    Cp device.key assets/server/tls/snakeoil.key

    第5步:设置Golang构建目录和参数

    导出GOPATH=/go

    为了在docker环境中运行,我们还需要运行以下命令,否则它将报告错误无法在docker/bin/sh:内运行go程序./ngrokd:未找到

    导出CGO_ENABLED=0

    第6步:编译ngrok服务器和客户端

    Linux 32位系统ngrok编译器命令

    导出GOOS=linux GOARCH=386

    制作发布服务器发布客户端

    Linux 64位系统ngrok编译器命令

    导出goos=linux goarch=amd64

    生成发布服务器发布客户端

    Windows 32位系统ngrok编译器命令

    导出goos=windows goarch=386

    生成发布服务器发布客户端

    Windows 64位系统ngrok编译命令

    导出goos=windows goarch=amd64

    生成发布服务器发布客户端

    macos 32位系统ngrok编译命令

    导出goos=darwin goarch=386

    生成发布服务器发布客户端

    macos 64位系统ngrok编译命令

    导出goos=darwin goarch=amd64

    生成发布服务器发布客户端

    其他操作系统修改goos和goarch以对应:go(golang)goos和goarch

    步骤7:运行ngrokd服务器

    编译之后,您可以在bin目录中看到ngrokd(server)和ngrok(client)。运行服务器时,需要使用assets/server/tls/snakeoil.crt和assets/server/tls/snakeoil.key

    复制到同一目录,启动命令如下:

    ./ngrokd -tlsKey=snakeoil.key -tlsCrt=snakeoil.crt -domain='4kb.cn'-httpAddr=': 80'-httpsAddr=': 443'-tunnelAddr=': 4443'

    如果使用默认的80,443和4443端口,则可以使用以下命令运行它:

    ./ngrokd -tlsKey=snakeoil.key -tlsCrt=snakeoil.crt -domain='4kb.cn'

    第8步:运行ngrok客户端

    在运行之前,我们需要编写一个包含以下内容的ngrok.cfg文件

    Server_addr:'ngrok.4kb.cn: 4443'

    Trust_host_root_certs: false

    这里的server_addr需要与生成TLS的第三步一致,否则服务器将报告错误的证书证书错误,

    编辑完成后,使用ngrok客户端运行

    ./ngrok -config=ngrok.cfg 8080

    指定域名运行命令

    ./ngrok -config=ngrok.cfg -subdomain=xxx 8080

    使用tcp协议映射SSH 22端口

    ./ngrok -config=ngrok.cfg -proto=tcp 22

    总结

    构建ngrok服务器之后,任何可以连接到服务器的应用程序都可以穿透ngrok内部网,

    不仅可以通过Java,PHP等开发的网站通过ngrok映射提供域名访问,还可以在之后允许SSH 22端口映射

    我们连接到没有公共IP的服务器(例如在家中构建私有服务器),甚至是MySQL的3306端口

    映射后,可以在任何位置远程连接到Intranet数据库。这给我们带来了极大的便利,并且不需要购买第三方服务(例如花生壳)。

    手稿来源:阿里云开发者社区(点击下面的“了解详情”)

    http://wap.bchi.com.cn

    友情链接: