`

ngrok编译

 
阅读更多

最接地气的Ngrok服务器搭建教

https://www.jianshu.com/p/f5c2a55e77bd

前言:

简单说一下什么是ngrok:

ngrok是一个内网穿透的解决方案,它使得你本地的服务器可以被局域网外的公网访问到
ngork有服务端和客户端,服务端运行在公网服务器,客户端运行在本地服务器
ngrok服务端会建立http和https服务,默认端口80/443,以及供ngrok客户端连接的服务,默认端口4443

它的工作流程如下:

访问端输入域名->DNS->ngrok服务端->请求映射到ngrok客户端->客户端返回响应到ngrok服务端->ngrok服务端返回响应到访问端

本文环境:

centos7 64位 (其它环境请根据流程自行尝试)

准备工作:
  1. 一台公网服务器
  2. 一个域名,顶级或二级均可

关于域名:我们声明两个概念:一个是基础域名,可以是顶级或者二级,它用来为ngrok服务端本身提供外部访问(ngrok客户端连接用)。二就是基于基础域名的二级或者三级域名,它用来映射到你的本地服务器,我称它为映射域名。它可以设置多个,这取决于你的需要。例如 abc.com 和 ngrok.abc.com / ngrok2.abc.com,每个映射域名对应一个ngrok客户端

假设你的域名是 abc.com (全文皆使用此假设)

如果你需要使用顶级域名作为基础域名,那么请将 abc.com 泛解析到服务器ip,然后将你需要使用的二级域名通过A记录解析到服务器ip,例如 ngrok.abc.com

如果你需要使用二级域名,那么先将你的二级域名 xxx.abc.com 通过A记录解析到服务器域名。然后将三级域名(比如 test.xxx)通过CNAME的方式解析到 xxx.abc.com,这次 xxx.abc.com 便成为了客户端与服务端的连接域名,test.xxx.abc.com 则是映射域名

下面的教程我们使用 abc.com 作为基础域名演示,请根据实际替换域名

一,安装git和go以及其它依赖
yum install gcc mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386 -y

二,下载源码 (项目早已停止更新,源码完全固定)
git clone https://github.com/inconshreveable/ngrok.git

完成后会在当前目录生成ngrok目录

三,生成证书(默认的证书是 ngrok.com,我们需要改成 abc.com

生成:

cd ngrok  

mkdir cert 

cd cert

export NGROK_DOMAIN="i9i.pub"

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 device.key 2048

openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr

echo subjectAltName = IP:106.14.44.59 > extfile.cnf

openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000 -extfile extfile.cnf

替换(提示overwrite输入y)

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

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

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

四:生成服务端与客户端

切换回ngrok目录

以下命令按需生成

<!--linux服务端/客户端-->
GOOS=linux GOARCH=386 make release-server (32位)
GOOS=linux GOARCH=amd64 make release-server(64位)

GOOS=linux GOARCH=386 make release-client (32位)
GOOS=linux GOARCH=amd64 make release-client(64位)

<!--Mac OS服务端/客户端-->
GOOS=darwin GOARCH=386 make release-server
GOOS=darwin GOARCH=amd64 make release-server

GOOS=darwin GOARCH=386 make release-client
GOOS=darwin GOARCH=amd64 make release-client


<!--windows服务端/客户端-->
GOOS=windows GOARCH=386 make release-server
GOOS=windows GOARCH=amd64 make release-server

GOOS=windows GOARCH=386 make release-client
GOOS=windows GOARCH=amd64 make release-client

所有程序都将生成在bin目录中,不同平台将建立不同的子目录

(当我生成linux 64位程序时,会直接保存在bin目录下无子目录。所以我个人推测,如果生成是当前系统的程序,则无子目录,直接存放于bin目录下。各位若有条件可验证下)

目录中,ngrok是客户端,ngrokd是服务端

linux
bin/linux_386
bin/linux_amd64

mac os 
bin/darwin_386 
bin/darwin_amd64 

windows
bin/windows_386
bin/windows_amd64

启动服务器:

./bin/ngrokd -domain="$NGROK_DOMAIN"

其它配置:

-httpAddr=":80" http服务的访问端口 默认80

-httpsAddr=":443" https服务的访问端口 默认443

-tunnelAddr=":4443" 客户端连接服务端的端口 默认4443

以上端口,如若与系统其他服务有冲突,开启服务时请自行配置其他端口,同时记得配置防火墙

五:客户端配置与连接

通过sz或者ftp等方式将ngrok下载到你需要使用客户端的电脑中

新建配置文件ngrok.cfg

<!--配置服务端连接地址,也就是基础域名。端口则与服务端-tunnelAddr配置相同-->
server_addr: "abc.com:4443"  
trust_host_root_certs: false

运行客户端

ngrok -config=ngrok.cfg -subdomain ngrok 80 

-subdomain用来指定域名的前缀(也就是映射域名的前缀),如上设置ngrok,当访问ngrok.abc.com时,ngrok服务端接收到请求后,便会将客户端http相应返回给访问端。80用来指定本地http服务的端口

此时,ngrok服务便搭建完成

以上,如有问题,欢迎提问。如有错误,也欢迎指出,谢谢

分享到:
评论

相关推荐

    ngrok.zip 编译好的ngrok

    这个压缩包“ngrok.zip”包含已经编译好的ngrok程序,对于那些在尝试自己编译ngrok时遇到困难的用户来说非常有用。 首先,我们来了解一下ngrok的基本原理。ngrok创建一个安全的隧道,将公共互联网上的请求转发到你...

    Ngrok服务器端Windows版(已编译好).zip

    软件介绍: 已编译好的Windows版Ngrok服务器端ngrokd.exe,压缩包内有32和64位两个版本。不用安装配置,解压就能用,网上很难找。

    编译好的Windows版Ngrok服务器端

    总的来说,这个压缩包为Windows用户提供了方便的Ngrok服务器端,无需自行编译,只需解压并配置好API密钥,就可以轻松实现内网穿透。对于开发者、测试人员以及需要分享本地服务的用户来说,这是一个非常实用的工具。...

    ngrok 源码包,个人搭建ngrok内网穿透工具

    源码包的提供意味着你可以自行编译和部署ngrok,以适应你的特定需求或环境,这对于开发者来说是极具价值的。下面我们将深入探讨ngrok的工作原理、搭建过程以及使用技巧。 ngrok的工作原理主要基于反向代理。当你在...

    ngrok相关文件.zip

    Go语言支持跨平台编译,这意味着你可以用它在不同的操作系统上编译ngrok,如Linux、Windows或macOS。Go环境还包括了构建工具链,用于编译源码并生成可执行文件。 4. **新建文本文档.txt**:这个文件可能是搭建过程...

    搭建自己ngrok服务器

    将编译好的`ngrok-client`文件从服务器下载到本地,然后运行: ```bash ./ngrok-client -remote=&lt;你的服务器公网IP&gt;:8080 -authtoken=&lt;你的自定义令牌&gt; ``` 这里的`&lt;你的自定义令牌&gt;`是你为客户端和服务端之间通信...

    已经编译好的ngrok for window 和 for linux

    这个压缩包包含了ngrok的预编译版本,分别适用于Windows和Linux操作系统,使得用户可以快速地在自己的电脑上部署和使用ngrok。 一、ngrok的基本原理与工作方式 ngrok通过创建一个安全的TLS隧道,将本地机器上的端口...

    ngrok启动脚本

    3. **编译ngrok**:进入源码目录,使用`go build`或`make`命令进行编译,生成ngrok可执行文件。 4. **注册与认证**:为了使用ngrok,你需要在官方注册一个账户,并获取到你的API密钥。将这个密钥配置到你的ngrok...

    自己搭建的ngrok服务器,需要的可以自行下载

    1. 下载并编译ngrok源码。 2. 设置一个反向代理服务器,如Nginx或Apache,用于接收并转发请求。 3. 配置SSL证书以启用HTTPS连接。 4. 部署ngrok服务端,并确保其稳定运行。 5. 配置DNS,将自定义域名指向ngrok服务的...

    NGROK---LINUX服务端和客户端

    - 在服务器上编译并安装NGROK,通常涉及`go get`命令和自定义配置文件。 - 配置服务端的配置文件(如`ngrok.yml`),包括监听的端口、认证信息等。 3. **部署Linux客户端** - 客户端安装同样需要下载源码,但不...

    ngrok-stable-linux-amd64

    而 “linux-amd64” 指出这是为 Linux 平台的 AMD64(也称为 x86_64)架构编译的版本。这意味着它可以在运行 Linux 操作系统的 64 位计算机上顺利运行。 ngrok 的工作原理是,在公网和你的本地设备之间建立一个安全...

    ngrok

    在文件列表中,"ngrok-main"可能是ngrok的主程序或者源码目录,用户需要进一步操作,如编译或直接运行,才能启动ngrok服务。 总的来说,ngrok是一个强大的开发工具,通过它,开发者可以轻松地让外部世界访问他们的...

    ngrok服务器和客户端文件包

    NGrok服务器搭建所需要的ngrok服务器和客户端文件包。 已经编译好的二进制文件,服务器是x64版本,客户端有多种平台。

    ngrok-c:ngrok客户端为c语言,由于使用ngrok语言进行GO开发,移植到嵌入式设备有些不便,例如openwrt,因此使用C语言重写了客户端。 很小巧,需要支持Polarssl库

    ngrok-cthe client of ngrok in language CBefore compiling, you need to generate the libpolarssl.a static library(via polarssl official website).contact me via email:不会编译的伙伴可以用,hauntek大神写...

    docker-ngrokd:dockerized 自托管 ngrok 守护进程

    由于您想运行未正式分发的ngrokd ,我们为 linux 和 osx 编译了它,但正如所描述的那样: 由于客户端和服务器可执行文件是配对的,您将无法使用任何其他 ngrok 连接到此 ngrokd,反之亦然。 您还需要一个新客

    NGROK:这是可以帮助获得NGROK链接的工具

    如果你是高级用户或者想要自定义NGROK的行为,你可以研究这些源码,甚至编译自己的NGROK客户端。 总的来说,NGROK是一个强大且灵活的工具,对于开发者来说,无论是进行远程调试还是临时分享本地服务,都是不可或缺...

    Vue CLI3创建项目部署到Tomcat 使用ngrok映射到外网

    在本文中,我们将详细探讨使用Vue CLI3创建项目并部署至Tomcat服务器,最后通过ngrok将项目映射到外网的整个过程。这一系列操作涉及到前端开发框架Vue.js、Web服务器Tomcat以及内网穿透工具ngrok的使用,每个步骤都...

    NGROK:这是工具可以帮助您在NGROK中发送直接链接

    如果是一个源代码仓库,用户可以编译并自定义NGROK的行为,比如调整默认配置、添加自定义功能等。如果是可执行文件,用户可以直接下载解压后在本地使用。 ### 5. 应用场景 - **远程协作**:开发者可以通过NGROK让...

    windows_服务端.zip

    编译好的Windows版Ngrok服务器端 编译好的Windows版Ngrok客户端

    Bullet:【主线】基于Ngrok内网穿透开源项目,稳定、高效的内网穿透系统。私有部署、云服务

    注意:本项目对Ngrok源码定制化的修改以满足安全性等需求,所以需要使用作者提供的Ngrok源码来编译。推荐使用百度网盘编译好的ngrokd & ngrok命令。本项目已经解决ngrok内存泄漏问题国内加速地址:介绍;Bullet 特性...

Global site tag (gtag.js) - Google Analytics