美文网首页
Ngrok内网穿透

Ngrok内网穿透

作者: qboy0000 | 来源:发表于2018-08-31 22:56 被阅读0次

为什么要用

至于为什么要用内网穿透技术,网上一大堆,也有很多收费的网站进行内网穿透,比如花生壳等等。

这里我们选择的是一个开源项目ngrok来自己搭建开源内网穿透环境,以下服务器和客户端都是在ubuntu下编译使用.

编译

  1. 安装编译环境

由于Ngrok采用Go语言编写,因此需要下载 Go,可以直接下载编译的的包来使用。

  1. 获取源码

git clone https://github.com/inconshreveable/ngrok.git ngrok

  1. 生成key
NGROK_DOMAIN="xxx.com"
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

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

最好在服务器上生成以上Key,当时不清楚在客户端生成了这些Key在服务端一直提示公私钥对不上。

  1. 编译
sudo make release-server release-client

直接使用apt-get install golang安装的go环境好像是版本太旧了,是1.6的,当前最新的版本是1.11 所以需要第1步安装go环境。

如果一切正常,ngrok/bin 目录下应该有 ngrok、ngrokd 两个可执行文件。ngrokd是服务端软件,ngrok是客户端软件

服务端

运行服务端程序

sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="xxx.com" -httpAddr=":9081" -httpsAddr=":9082"

到这一步,ngrok 服务已经跑起来了,可以通过屏幕上显示的日志查看更多信息。httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=":xxx" 指定),如果你配置了iptables 规则或者其他安全规则,需要放行这三个端口上的 TCP 协议。
在这里我使用的是<b>supervisor</b>来管理进程的,很简单。在这里就不介绍了

与Nginx结合

由于我的服务器的80端口被其他服务占用了,无法使用80端口来使用ngrok,本来想使用80端口来进行转发,但是一时没配合,因此使用nginx的80端口来进行端口跳转。

nginx配置文件如下

upstream ngrok {
    server 127.0.0.1:9081;
    keepalive 64;
}

server {
    listen 80;
    server_name "*.pub.xxx.com";
    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host  $http_host:9081;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header Connection "";
        proxy_pass      http://ngrok ;
    }
}

由于使用了域名,因此在域名解析处时需要配置成泛解析,这里我使用的<b>*.pub</b>来泛解析域名,采用泛解析之后针对多个客户端时可以不需要再单独去配置不同的域名解析

客户端

Ngrok客户端配置文件

server_addr: "xxx.com:4443"
trust_host_root_certs: false
tunnels:
  http:
    subdomain: "test.pub"
    proto:
      http: "9091"
  ssh:
    remote_port: 3322
    proto:
      tcp: "22"

客户端启动命令:

启动http ngrok -config ngrok.conf start http

启动ssh ngrok -config ngrok.conf start ssh

如果启动ssh,那么远端端口3322也要在安全规则中启用。
那么可以在外网使用ssh 穿透时内网了。我觉得这个有时比teamviewer方便一些,毕竟有一些是服务器无法使用teamviewer客户端

连上之后在控制台输出

Tunnel Status   online
Version
Forwarding
……

如果没有连上或者服务器断开 online会显示成reconnecting

相关文章

  • sunny-ngrok 内网穿透

    sunny-ngrok 内网穿透是基于 ngrok 的一个内网穿透服务,提供免费的用于开发的内网穿透隧道。 接下来...

  • 使用Ngrok实现内网穿透服务

    # 使用Ngrok实现内网穿透服务 tags: 网络 Linux ngrok ngrok是什么? ngrok是一个...

  • Sunny-Ngrok实现自定义域名内网穿透

    内网穿透 + Sunny-Ngrok + 自定义域名 1、内网穿透 1.1 内网IP:内网IP,过多官方的解释这里...

  • Ngrok服务端搭建

    本文介绍Ngrok服务搭建。Ngrok和花生壳类似都是内网穿透工具,了解更多可以查看另外一篇专门介绍内网穿透工具的...

  • 内网穿透 -ngrok

    内网穿透 -ngrok 1.下载 下载ngrok,我下载的是win64.zip下载地址:https://ngrok...

  • Ngrok内网穿透

    为什么要用 至于为什么要用内网穿透技术,网上一大堆,也有很多收费的网站进行内网穿透,比如花生壳等等。 这里我们选择...

  • ngrok 内网穿透

    第一个先下载ngrok 客户端 下载地址: https://ngrok.com/download点击进去下面 ...

  • ngrok内网穿透

    ngrok可以将本地项目映射到公网,以便外网环境的访问本地应用 下载地址传送门 使用方法 启动ngrok.exe ...

  • ngrok内网穿透

    0X00 前言 在渗透测试过程中,可能目标主机是内网里面的机器,由于外网无法直接访问内网,我们就需要反向代理,来为...

  • 内网穿透—ngrok

    很多时候公司电脑是没有公网ip, 都连路由器去了.当我们在进行一些开发时候,比如,支付需要回调通知,就只能将代码拉...

网友评论

      本文标题:Ngrok内网穿透

      本文链接:https://www.haomeiwen.com/subject/zytywftx.html