内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点。

一、ngrok

ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。ngrok可捕获和分析所有通道上的流量,便于后期分析与响应。

开源免费

官网:https://ngrok.com/

源码:https://github.com/inconshreveable/ngrok

ngrok1.x开源,ngrok2.x不开源

ngrok使用go语言开发,源代码分为客户端服务器端

国内免费服务器:http://ngrok.ciqiuwl.cn/


下面以上面的免费服务器为示例完成内网穿透

现在假定我的本地已成功部署了一个网站,访问地址为127.0.0.1,想内网穿透后被公网上的用户访问,一般步骤如下:

步骤1、下载windows版本的客户端,解压。一般在为你提供代理服务器的网站上找你要下载的客户端:

步骤2、在命令(cmd)行下进入到ngrok客户端目录下

步骤3、执行 ngrok -config=ngrok.cfg -subdomain xxx 80 //(xxx 是你自定义的域名前缀),建议批处理

如果连接成功,会提示如下信息:

这一步如果你认为太麻烦,可以直接运行目录下的start.bat批处理文件就不用进DOS环境了。运行start.bat直接跳过2,3步

步骤4、如果开启成功 你就可以使用 xxx.ngrok.xiaomiqiu.cn 来访问你本机的 127.0.0.1:80 的服务了,当然你必须确定的是你本机的Web是可以正常访问的。

注意:

如果你自己有顶级域名,想通过自己的域名来访问本机的项目,那么先将自己的顶级域名解析到120.25.161.137(域名需要已备案哦,80端口必须备案),然后执行 ngrok -config=ngrok.cfg -hostname xxx.xxx.xxx 80 //(xxx.xxx.xxx是你自定义的顶级域名)

二、ubuntu下生成ngrok服务器与客户端应用程序

使用Putty远程登陆到服务器,如下所示:

1、安装GIT、获取ngrok:

mkdir ngrok #创建名称为ngrok的目录apt-get update #更新包管理器apt-get install git  #安装gitgit clone https://github.com/inconshreveable/ngrok.git ngrok2 #将ngrok源代码克隆回本地

成功执行后如下所示:

PS. 直接在服务器上下载的话实在太慢,可以先在本地下载好,然后用ftp放到服务器上去直接用

2、安装Go语言:

apt-get install golang #安装go语言

执行结果如下:

3、设置环境变量

export GOPATH=/usr/local/ngrok/  #设置环境变量,Go语言的安装位置
export NGROK_DOMAIN="xxxx.cn"  #设置环境变量,xxx.cn为你的域名

4、切换到ngrok目录下执行以下命令为域名生成证书

cd 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

生成后的结果如下:

证书如下:

5、拷贝证书到指定位置

cp rootCA.pem assets/client/tls/ngrokroot.crt  #复制rootCA.pem到assets/client/tls/并更名为ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt #复制server.crt到assets/server/tls/并更名为snakeoil.crt
cp server.key assets/server/tls/snakeoil.key #复制server.key到assets/server/tls/并更名为snakeoil.key

6、 编译

由于go语言的特性,在编译时直接生成机器码,所以在运行过程中并不需要go的环境(非托管应用)。在ngrok目录下,运行一下命令分别生成对应的客户端与服务端。

#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

生成完成后,在工作目录的bin文件夹下,产生对应的文件。以编译windows平台为例,会产生“ngrok.exe”与“ngrokd.exe”这两个文件,前者客户端,后者需要运行在公网服务器上。

因为项目中引用了一些外部资源,生成会耗费一些时间,对网络也有一定的要求,太慢会中短,命令执行下如:

生成结果:

这里我还生成了两个运行在windows服务器与客户端的应用:

ngrok 是客户端,ngrokd 是服务端。

7、启动ngrok服务端

切换到ngrokd 服务端程序所在的目录并执行如下命令:

./ngrokd -domain xxxx.cn

xxx.cn代表你的域名

执行效果如下:

8、配置客户端

拷贝生成的ngrok.exe到本地计算机,并新建配置文件ngrok.cfg,内容为:

server_addr: "xxxx.cn:4443"
trust_host_root_certs: false

xxx.cn代表你的域名

再新建文件start.bat批处理文件,内容为:

ngrok.exe -subdomain hello -config=ngrok.cfg 8080

hello为子域名前缀,访问时格式为hello.xxx.cn

8080为本地tomcat服务器使用的端口号。

双击start.bat启动效果如下所示:

到此,就可以通过域名hello.xxx.cn访问本地的服务器了。例如我的tomcat服务器:

在编译生成的时候执行

GOOS=windows GOARCH=386 make release-server 

生成服务器端一切正常,可是生成客户端的时候一直报错,说找不到 sync.Pool。后来发现是GO语言软件版本太低了,使用1.3以上版本就不会有问题。

内网穿透、反向代理(ngrok服务器搭建)相关推荐

  1. 内网穿透反向代理应用 xfrp

    授权协议: Apache 开发语言: C/C++ 操作系统: 跨平台 软件首页: https://github.com/KunTengRom/xfrp 软件文档: https://github.com ...

  2. 【树莓派学习笔记】七、(免费)内网穿透将树莓派作为服务器管理网站

    目录 nginx 安装 开机自启动 测试 查看nginx安装路径 查看配置文件路径 (测试用)修改index.nginx-debian.html 内网穿透 免费方案 ngrok原版方案 下载ngrok ...

  3. frp点对点udp方式内网穿透ssh,不走服务器流量

    frp点对点udp方式内网穿透ssh,不走服务器流量 (2019 年 5 月 30 日) frp ssh 安全连接和服务器安全设置 (2019 年 5 月 29 日) frp 控制台监控dashboa ...

  4. 还在用内网穿透?手把手教你搭建pptp服务器

    前言 说到内网穿透,想必很多人都会想到花生壳.natapp等等穿透工具,优点就是简单方便,缺点就是有端口数量限制,不交钱的话,还限制带宽.限制协议等等 pptp能做什么? 1.连上pptp的主机都会有 ...

  5. frp内网穿刺/反向代理教程

    文章目录 前言 一.明确基本概念 二.frp下载与使用 1.云服务器做为Server端 2.GPU服务器做为Client端 3.远程访问 三.云服务器防火墙端口开启 前言    frp 是一个高性能的 ...

  6. 【内网穿透服务器】利用云服务器+FRP实现内网穿透并远程连接服务器

    应用目的:远程管理或在外网访问内网机器上的服务 这里我们是使用云服务器+FRP实现内网穿透,达到远程连接服务器的目的 准备工作 云服务器 这里我们租用的是腾讯云的服务器,类似于下图的这种,配置选择可以 ...

  7. Ngrok 实现内网穿透教程(Ngrok 和 Sunny-Ngrok )

    ngrok是什么我这边就不多介绍了,百度一找一大堆.你可以把它理解为内网穿透的工具.(简而言之就是将内网IP映射成对外可访问的域名) Ngrok使用流程如下: 从https://ngrok.com/ ...

  8. 【frp】使用 frp 实现内网穿透(CentOS 云服务器 + Win10)

    文章目录 前言 参考目录 准备内容 资源下载(V0.41.0) 配置 服务端配置(云服务器) 客户端配置(Win10 本机) 测试 前言 前段时间因为突然爆发疫情,可能需要居家办公,然而平常开发调试接 ...

  9. 内网穿透工具 FRP Linux 环境搭建安装

    公网服务端设置 1.先确定公网服务端linux系统版本 通过 getconf LONG_BIT Linux查看系统位数命令:返回的结果如果是64,说明linux系统属于64位:返回32,系统属于32位 ...

  10. linux服务器搭建ngrok服务-实现内网穿透(转载,自己搭建成功)

    1.ngrok依赖gcc 和 golang的安装已经存在请忽略 # 安装 gcc   yum -y install gcc   yum -y install gcc-c++   # 安装 golang ...

最新文章

  1. geany配置python_Linux系统下搭建基于Geany+Python开发环境
  2. delphi 保存数据到sql_介绍一款免费好用的可视化数据库管理工具
  3. crowd counting_[crowd_counting]-MANet_arxiv1901
  4. C++ — 智能指针的简单实现以及循环引用问题
  5. Linux block
  6. oracle 取第三大的值,Oracle 常见的几种访问提取数据的方式!
  7. uwp post php,在UWP應用程序使用PHP腳本
  8. java项目学习_一个Java项目的学习
  9. C++项目学习(机器人方向)
  10. 跟着杨中科学习asp.net之dom
  11. Python制作翻译软件(中英文互译)
  12. OpenWrt U盘分区启动设置
  13. STM32F103ZG单片机解密确保成功 ST芯片解密
  14. MSP430X1XX系列ADC12和DMA详解(附带程序)(上)--ADC12详解与源码
  15. 苹果操作系统 leopard 10.5 (PC破解完全中文安装版,IBM X40安装成功)
  16. 安装系统-win 10
  17. mysql小写转大写_MySQL字符串中的大小写转换详解
  18. 3D打印机的故障检测及排除
  19. 北大计算机图灵班,北京大学举办图灵班开班仪式
  20. 版式设计编排形式与规律,丰富多彩!

热门文章

  1. 净空法师法语:你想真正消业障,要用真心待人接物!南无阿弥陀佛!
  2. Threejs实现标签,自定义样式显示标签
  3. android之DPAD上下左右四个键控制
  4. linux 备份信息查看器,Linux_MaxDOS V6 系统备份查看器 批处理代码,复制代码 代码如下:@echo off :_ma - phpStudy...
  5. oracle ebs 采购员表,oracle EBS采购订单各表作用分析
  6. 学习DVB知识的疑问与自我解答
  7. CodeGear 发布 3rdRails
  8. Android自定义日期区间选择,类似12306酒店入住的日期选择
  9. 多普达(dopod)原装配件在线订购中心-搜索结果 P900 2008-08-20
  10. 2017多校 Balala Power!