在阿里云服务器自己搭 ngrok 的服务器,步骤基本跟着 [1, 2] 一步步来,本人需要用到:

  • 一个 linux 的 server 软件,放在有公网 IP 的服务器上(那个阿里云服务器);
  • 一个 linux 的 client 软件,放在自己的内网 linux 机器上;
  • 一个 windows 的 client 软件,放在自己的内网 windows 机器上;

这里仅提几点注意:

  1. 我那个阿里云服务器有个域名,在管理页可以看的,生成证书时设置export NGROK_DOMAIN="<那个域名>"就是用这个域名,后面 ngrokd 的运行参数、client 端的配置文件也要用到(好像说只要内网穿透的话只用 ip 也行?);
  2. 编译前要改两处源代码,使 ngrok 从用 ipv6 转回用 ipv4,见 [2],具体就是:
    • src/ngrok/server/tunnel.go 文件中 net.ListenTCP 后面的 tcp 改为 tcp4
    • src/ngrok/conn/conn.go 文件中 net.Listen 后面的 tcp 改为 tcp4
  3. 前作 [6]在小米球下的 windows 客户端软件好像不能用了,因为编译的时候会将证书也一起写进软件里(所谓 证书 参见 [1, 2] 的配置过程),所以在编译的时候总共要编译三个文件:linux 的 server、linux 的 client、windows 的 client,即这几条:
    # linux server
    GOOS=linux GOARCH=amd64 make release-server
    # linux client
    GOOS=linux GOARCH=amd64 make release-client
    # windows client
    GOOS=windows GOARCH=amd64 make release-client
    
  4. 要开放防火墙对应端口,用到哪些就开哪些,比如 ngrokd 运行的tunnelAddrhttpAddr、客户端配置文件里用到的那些端口,这些。下面贴配置文件再说;
  5. 阿里云的服务器需要需要在它的网页开放防火墙端口,在系统里设置是没用的(那个阿里云的系统里 firewalld 和 iptables 根本就没开),参考 [3];

ngrokd

ngrokd就是 ngrok 的 server 软件的名字,为了启动方便,将启动命令写成 shell 文件,用到nohup后台运行,也可以用screen。log 文件的操作见 [7]。

#!/usr/bash
# run.ngrokd.shNGROKD=/root/tom/ngrok/bin
DATE=$(date +%Y-%m-%d-%H-%M)
LOG=/root/tom/log/ngrokd.$DATE.lognohup $NGROKD/ngrokd -domain="<那个域名>" -tunnelAddr=":4443" \--httpAddr=":50018" \--httpsAddr=":50019" \> $LOG 2>&1 &

这里出现的tunnelAddrhttpAddrhttpsAddr要在防火墙那放行。

auto run

将 ngrokd 设成开机启动,参考 [4, 5],在/etc/rc.d/init.d放一个 shell 脚本:

#!/bin/sh
# chkconfig: 2345 55 25sh /root/tom/run.ngrokd.sh

就是运行上面写的那个 ngrokd 启动命令脚本,但注意# chkconfig: 2345 55 25这行,是我从同目录下的nginx文件那抄来的,不加这行 [4] 中用chkconfig的几条命令会报错,见 [5],加上就解决了。

ngrok

client 端的软件叫 ngrok,这里分 windows 和 linux 两台内网机器。
这两个内网 client 的配置文件中用到若干端口(那几个50开头的),也要在防火墙放行。

in windows machine

将编译出来的软件下载到自己的 windows 机器,就一个ngrok.exe文件。
基本配置跟之前的 [6] 差不多,就是改下配置文件(ngrok.windows.conf)。

# ngrok.windows.conf
server_addr: "<那个域名>:<上面的 tunnelAddr>"
trust_host_root_certs: falsetunnels:sshW:remote_port: 50000proto:tcp: 127.0.0.1:22mstscW:remote_port: 50001proto:tcp: 127.0.0.1:3389jupyterW:remote_port: 50002subdomain: jupyter148proto:http: 127.0.0.1:8888tensorboardW:remote_port: 50003subdomain: tensorboard148proto:http: 127.0.0.1:6006

将启动命令写成 .bat 文件:

@echo off
set DAY=%date:~0,4%-%date:~5,2%-%date:~8,2%
set TIME=%time:~0,2%-%time:~3,2%
set NGROK=E:\ngrok
set LOG=%NGROK%\log\ngrok.%DAY%-%TIME%.log%NGROK%\ngrok.exe -config=%NGROK%\ngrok.windows.conf -log=%LOG% start sshW mstscW jupyterW tensorboardW

注意这里用新编译的那个 ngrok.exe,而是用 [6] 里下的那个。[6] 下的那个也能用,但配置文件就用回 [6] 里的配置文件。

in linux machine

也是下那个 linux 的 client 软件,也是只有也个ngrok文件,放在自己内网的 linux 机器。
配置文件 ngrok.linux.conf

# ngrok.linux.conf
server_addr: "<那个域名>:<上面的 tunnelAddr>"
trust_host_root_certs: falsetunnels:sshL:remote_port: 50010proto:tcp: 127.0.0.1:22jupyterL:remote_port: 50012subdomain: jupyter243proto:http: 127.0.0.1:8888tensorboardL:remote_port: 50013subdomain: tensorboard243proto:http: 127.0.0.1:6006

这里不用 mstsc,因为那个是 windows 的远程登录。
启动命令:

#!/bin/sh
DATE=$(date +%Y-%m-%d-%H-%m)
./ngrok -log=log/ngrok.$DATE.log -config=ngrok.linux.conf start sshL jupyterL tensorboardL

References

  1. 内网穿透 ngrok 服务器和客户端配置
  2. ngrok 实现内网穿透
  3. 阿里云端口开放
  4. Linux CentOS 开机自动启动的设置方法
  5. 解决“service nginx does not support chkconfig”的问题?
  6. 用ngrok穿透内网访问windows
  7. .bat和.sh生成带时间的log文件
  8. Ubuntu开机启动脚本

自搭ngrok服务器相关推荐

  1. ngrok linux开机自启动,CentOS 搭建ngrok服务器

    原标题:CentOS 搭建ngrok服务器 1一.前提条件 1. 准备好一台主机,带公网IP 2. 准备一个一级域名,做好泛解析(二级域名的没有配置成功,汗...) 切记 一定要做好域名泛解析 二.安 ...

  2. 使用netkit搭pppoe服务器

    使用netkit搭pppoe服务器 @(工作笔记)[工作笔记, netkit] 关于netkit的使用前一遍文章已有说明,这一篇文章主要介绍另一种使用场景,netkit里面搭的虚拟网络拓扑怎么连接到真 ...

  3. 阿里云centos6.9搭建ngrok服务器

    准备工作:(1)阿里云ECS服务器(2)自己的域名 1,安装gcc centos查看是否安装了gcc命令   rpm -qa|grep gcc*         没有就需要安装 yum install ...

  4. 10分钟教你搭建自己的ngrok服务器

    内网穿透想必开发过微信的同志都很了解,大部分人选择网上寻找各种现成的,比如ngrok官网.ittun-ngrok.sunny-ngrok或者花生壳之类的.但是世界上没有免费的午餐,要不就是收费,要不就 ...

  5. Windows搭建ngrok服务器、Linux搭建ngrok服务器、支持用户管理

    微信公众号.支付宝支付等开发要求有公网(外网)服务器.每次调试时,上传代码到服务器很不方便.ngrok很好的解决了这一问题.网上的文章大多是讲怎么在Linux下搭建ngrok服务器.其实依靠云计算的强 ...

  6. 搭建ngrok服务器

    要搭建 ngrok 服务器,首先需要在本地安装 ngrok,安装完成后在命令行中输入 ngrok authtoken <YOUR_AUTH_TOKEN> 来设置认证令牌. 接下来,使用 n ...

  7. 一分钟实现内网穿透(ngrok服务器搭建)

    简单来说内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点. 最近公司的花生壳到期了,要续费,发现价格一直在涨,都是5年以上的老用户,旗舰 ...

  8. 搭建ngrok服务器,实现内网穿透服务,实现外网到内网的在线访问

    一:前言 场景问题: 如果本地的项目在没有服务器的情况下,需要让他人访问: 在自己的电脑上搭建一个web服务器,实现本地的访问和外部的访问.我们就要做内网穿透了,内网穿透就是别人通过外网能够访问到我们 ...

  9. ngrok服务器搭建流程

    ngrok服务器搭建流程 微信开发内网测试问题一直是一个困扰开发者的问题,ngrok服务是一个很好的解决方案,网上有类似的工具比如小米球但是不稳定或收费,如果自己有一台公网上的centos服务器,可以 ...

最新文章

  1. Log4j格式化符号
  2. 函数指针--全局函数指针与类的函数指针(二)
  3. 临时目录 Path.GetTempFileName()
  4. webapi+EF(增删改查)
  5. navicat 怎么调试存储过程_Mysql调试存储过程最简单的方法
  6. 屏下摄像头技术来了!OPPO FindX2有望率先搭载
  7. 【比赛】CCF BDCI新闻情感分类初赛A榜4/2735,复赛1%题解报告
  8. html5 电商模板,多用途电商HTML模板
  9. Excel2007版的常用功能(6):Excel数据透视表
  10. 搭建1078部标流媒体服务器
  11. 算法高级(45)-阿尔法狗到底有多厉害?
  12. 陈强教授《机器学习及R应用》课程 第十章作业
  13. 哈希表查找 的 平均长度
  14. 极路由通过SSH添加静态路由表之后无法跳转的问题
  15. SameSite cookie 理解与设置
  16. K660E I7 D4 clover 引导黑苹果完美驱动
  17. 骚扰电话不胜其烦 防止隐私泄露只能靠网友不满?
  18. 单片机学习笔记——微机基础知识
  19. hiho 挑战赛16 A.王胖浩与三角形
  20. 使用 BULL 转换Java Bean

热门文章

  1. 【计算机毕业设计】学生宿舍管理系统
  2. 我开始搞研发管理和项目管理了,发现最难管理的还是人
  3. 动态规划:区间动态规划
  4. Java发邮件(详解+源代码)
  5. Java 调用第三方接口,实战来了!
  6. 安装mysql出现问题:由于找不到VCRUNTIME140_1.dll,无法继续执行代码。重新安装程序可能会解决此问题
  7. Rosalind第11题——ros_bio11_FIBD
  8. 利用jQuery制作简易手风琴
  9. 【UML】— 用例图
  10. Google搜索引擎使用技巧大全