V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Had
V2EX  ›  分享创造

一个国内的 ngrok 服务器

  •  9
     
  •   Had · 2014-11-21 14:32:06 +08:00 · 68405 次点击
    这是一个创建于 3689 天前的主题,其中的信息可能已经有所发展或是发生改变。
    鉴于ngrok官方服务器连接速度一般,我在国内搭了一台ngrok服务器(ubuntu+ngrokd+nginx),主页还没做(准备用个模版马马虎虎了),但是ngrok服务已经可以正常使用,大家可以试用一下。

    使用方法:
    1. 你需要一个官方客户端,可以去https://ngrok.com/下载;
    2. 你需要创建一个配置文件(例如ngrok.cfg),内容是以下两行(你也可以改~/.ngrok的默认配置文件);
    server_addr: "tunnel.mobi:44433"
    trust_host_root_certs: true
    3. 执行ngrok时添加载入配置文件的参数-config,使用范例如下:
    ngrok -config ngrok.cfg -subdomain example 8080
    4. 服务器支持ngrok的除了自定义域名以外的所有服务(例如自定义二级域名*.tunnel.mobi、转发自定义端口、转发内网的服务器、密码保护以及同时运行多个tunnel)

    PS1: 配置文件的第一行指定了服务器地址以及ngrok客户端与服务器的通讯端口;第二行意为信任本机(指运行ngrok客户端的机器)的根证书(因为ngrok的默认逻辑是只信任ngrok.com的根证书。
    PS2: 建议不要修改或添加两行配置到ngrok默认的配置文件~/.ngrok,这样即使是我的服务器宕了,您也可以使用ngrok官方的服务器。
    第 1 条附言  ·  2014-11-21 17:00:18 +08:00
    你可能需要把客户端升级到官网最新版本(现在是1.7)才能正常使用,之前的版本可能无法正常连接。
    123 条回复    2016-12-02 10:06:54 +08:00
    1  2  
    hcymk2
        1
    hcymk2  
       2014-11-21 14:52:09 +08:00
    连不上。。。
    telnet 能通 但是Tunnel Status 一只是reconnecting
    Had
        2
    Had  
    OP
       2014-11-21 14:57:03 +08:00
    @hcymk2 我用aws的ubuntu机器试了试,一切正常啊... 就是首次connecting的时间可能需要3秒左右...
    hcymk2
        3
    hcymk2  
       2014-11-21 14:59:57 +08:00   ❤️ 1
    @Had 我用的是windows客户端 可以连上官方的服务 但是连不上tunnel.mobi
    Had
        4
    Had  
    OP
       2014-11-21 15:03:14 +08:00
    @hcymk2 好,我测试一下windows,ubuntu和我的mac都是正常的...
    wong2
        5
    wong2  
       2014-11-21 15:18:07 +08:00   ❤️ 1
    Mac,一直是 reconnecting
    Had
        6
    Had  
    OP
       2014-11-21 15:27:35 +08:00
    @wong2 太神奇了... 我这里怎么都无法重现... 来集思广益一下到底问题在哪里...

    附配置文件: http://ngrokd.b0.upaiyun.com/ngrok.cfg
    hcymk2
        7
    hcymk2  
       2014-11-21 15:58:56 +08:00
    @Had
    我用ubuntu连上了 ,和windows是一样的网络环境。
    Had
        8
    Had  
    OP
       2014-11-21 16:10:56 +08:00
    @hcymk2 真是一则好消息...

    我在服务器这边多看到的error还是bad certificate,我已经为服务端绑定了wildcard证书(非自签名证书),为了再次验证,我在同事的mac上(她从未装过类似的服务)全新配置,也是官网的ngrok,也是一切正常...
    Had
        9
    Had  
    OP
       2014-11-21 16:38:48 +08:00
    @hcymk2 我在VirtualBox起了一个XP,测试正常...
    无法重现故障,定位不能...
    hcymk2
        10
    hcymk2  
       2014-11-21 16:53:50 +08:00   ❤️ 1
    @Had
    我连上的那机器是双系统 ubuntu+win7 ,现在切换到win7也能连上去。
    那台连不上的机器是windows server 2003
    Had
        11
    Had  
    OP
       2014-11-21 16:58:01 +08:00
    @hcymk2 我发现问题了!我的服务端是1.7版本,官网现在提供的最新版客户端是1.7,是可以正常使用的。
    而同事的1.6版就不能连接,你可能需要升级最新版客户端才可以。
    Had
        12
    Had  
    OP
       2014-11-21 16:58:49 +08:00
    @wong2 您好,可以把客户端升级到1.7版,应该就可以正常使用了。
    zzutmebwd
        13
    zzutmebwd  
       2014-11-23 10:56:45 +08:00 via Android
    @Had 最近看过一些类似的东西 请问自行搭建ngrok服务器可以实现自定义顶级域名吗?想搭个外网可访问的本地服务器
    Had
        14
    Had  
    OP
       2014-11-23 11:37:32 +08:00
    @zzutmebwd 官方提供的源码里没有包含如何保留自定义二级域名不被别人占用的(因为这是他提供的付费功能),而自定义顶级域名这个功能其实就是保留的二级域名+CNAME记录,所以自行搭建的ngrok服务器无法实现自定义顶级域名这个功能。
    Had
        15
    Had  
    OP
       2014-11-23 11:41:41 +08:00
    @zzutmebwd 另外,你要搭建这样的服务器至少得有:

    1.外网可访问的服务器;
    2.域名。

    当然,如果你只是自己用的话,那么其实这个顶级域名不就是你自己的自定义顶级域名了么...
    比如tunnel.mobi之于我,就已经是不同于ngrok.com的顶级域名了。

    PS:以上内容好拗口...
    zzutmebwd
        16
    zzutmebwd  
       2014-11-23 12:19:49 +08:00
    @Had 也对哦哈哈哈 是这样的,我频繁在校园网和外网之间切换,希望能够无缝的通过局域网内服务器转发来访问内网服务(文献版权什么的你懂的)。域名和vps都有。我去试试 很赞~
    zzutmebwd
        17
    zzutmebwd  
       2014-11-23 12:22:48 +08:00
    @Had 谢谢 我自己用足够啦
    stayreal
        18
    stayreal  
       2014-11-25 15:38:54 +08:00 via Android
    支持ipv6吗
    Had
        19
    Had  
    OP
       2014-11-25 17:27:04 +08:00
    @stayreal 我的托管商不支持IPV6
    yidinghe
        20
    yidinghe  
       2014-11-28 16:44:18 +08:00
    Up 主是大大的良心,十分感谢。希望能长久用下去
    Had
        21
    Had  
    OP
       2014-11-28 19:56:03 +08:00
    @yidinghe 我们自己的项目一直在用~
    immjun
        22
    immjun  
       2014-12-16 13:15:30 +08:00
    想问一下内网上网需要设置 http 8080 代理的话 怎么连上ngrok ?
    Had
        23
    Had  
    OP
       2014-12-17 00:24:43 +08:00   ❤️ 1
    @immjun 或许这个网页的最底部能帮到你?
    https://ngrok.com/usage
    immjun
        24
    immjun  
       2014-12-17 09:06:28 +08:00
    @Had 赞~
    jacko
        25
    jacko  
       2014-12-24 15:33:32 +08:00
    @Had 好用, 谢谢了
    lujq
        26
    lujq  
       2014-12-24 15:47:59 +08:00
    求搭建教程!!
    Had
        27
    Had  
    OP
       2014-12-24 15:57:12 +08:00
    @lujq 这个so easy的,唯一的门槛是需要你有一个wildcard证书...
    lujq
        28
    lujq  
       2014-12-24 16:14:58 +08:00
    @Had 有编译好的ngrokd程序吗,我clone了github的源码但总是编译不成功
    Had
        29
    Had  
    OP
       2014-12-24 16:24:36 +08:00
    @lujq 需要什么系统的?
    lujq
        30
    lujq  
       2014-12-24 16:30:04 +08:00
    @Had ubuntu 14.04 64位,12.04也有
    Had
        31
    Had  
    OP
       2014-12-24 16:38:38 +08:00
    @lujq

    https://ngrokd.b0.upaiyun.com/ngrokd

    运行时请用以下命令行:

    ./ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="yourdomain.com" -httpAddr=":80" -httpsAddr=":443"

    如果是自签名证书,需要将证书编译到客户端里面。
    lujq
        32
    lujq  
       2014-12-24 16:40:26 +08:00
    @Had thx!!
    lyf362345
        33
    lyf362345  
       2014-12-24 17:02:26 +08:00
    大赞楼主
    hyzjshwo
        34
    hyzjshwo  
       2015-01-14 12:08:13 +08:00
    lz是好人啊!!
    zdyan10
        35
    zdyan10  
       2015-01-30 17:51:10 +08:00
    我的ngrok服务器也编译好了,还没VPS和域名放这个服务
    Had
        36
    Had  
    OP
       2015-01-30 21:16:42 +08:00
    @zdyan10 国内网络友好的VPS优先,域名是小事,证书是大事~
    zdyan10
        37
    zdyan10  
       2015-01-31 12:51:20 +08:00
    @Had 我还没明白你说的证书,在vps上用自签名证书不行吗?
    Had
        38
    Had  
    OP
       2015-01-31 17:07:58 +08:00
    @zdyan10
    自签证书意味着你需要将你的证书编译到客户端里。
    而如果你有非自签证书,则可以用官方的客户端,无需再编译。
    zdyan10
        39
    zdyan10  
       2015-01-31 23:21:45 +08:00
    @Had 这样的啊,现在我已把自签名证书编译到客户端里了,再找个VPS和域名就可以对外使用了,是这样吧?
    Had
        40
    Had  
    OP
       2015-02-01 08:56:10 +08:00
    @zdyan10
    是,如果你要给别人用的话,要么把你编译好的给他,要么你把证书给他让他自己编译,这里毕竟麻烦一些...
    treblam
        41
    treblam  
       2015-03-04 02:38:43 +08:00
    @Had 为什么我自建的ngrok服务器每次客户端连接都报Failed to read message: remote error: bad certificate错误?快疯了,用的ngrok默认的证书,客户端自己编译也试过,用官方的客户端也试过,都是一样报这个错误。
    Had
        42
    Had  
    OP
       2015-03-04 09:29:33 +08:00   ❤️ 1
    @treblam
    域名是自己的?如果是,那么你的证书就必须是自签名证书或者是可信CA颁发的Wildcard证书,否则就会因为证书和域名不匹配造成无法使用。
    viko16
        43
    viko16  
       2015-03-04 15:10:41 +08:00
    @Had
    这两天似乎用不了,一直都是 reconnecting,之前还好好的。用官方的正常。

    OS X 10.9,广州 电信
    Had
        44
    Had  
    OP
       2015-03-04 15:55:40 +08:00
    @viko16
    非常抱歉,这种情况我就不能左右了...
    西安、北京应该是无碍的,我们这里倒是官方直接被墙了,服务器在Azure北京。
    viko16
        45
    viko16  
       2015-03-04 22:28:07 +08:00
    @Had
    又再测试过一下,发现公司的电信不行,在家的联通反而妥妥的
    不管怎样,非常感谢你提供这个国内镜像
    treblam
        46
    treblam  
       2015-03-04 23:35:58 +08:00
    @Had 非常感谢,终于明白怎么回事了,我还以为不用https就可以不用自签名证书呢。
    Had
        47
    Had  
    OP
       2015-03-04 23:41:09 +08:00
    @treblam 客户端和服务端之间的传输也是加密的,所以证书也要配套。
    ccbikai
        48
    ccbikai  
       2015-03-05 22:17:22 +08:00
    跑起来了,HTTP,HTTPS 正常,但是转发的 SSH 无法连接
    Had
        49
    Had  
    OP
       2015-03-05 23:38:00 +08:00
    @ccbikai
    关于TCP的转发,我只开放了有限的端口(55501~55555),部分端口不可用,可以多尝试几个,然后~目录的.ngrok默认配置文件是这样写的:

    server_addr: tunnel.mobi:44433
    trust_host_root_certs: true
    tunnels:
    example:
    subdomain: test
    remote_port: 55514 (多测试几个端口)
    proto:
    tcp: 22 (SSH的端口号)

    然后运行ngrok start example即可使用test.tunnel.mobi:55514访问SSH了。
    ccbikai
        50
    ccbikai  
       2015-03-06 09:12:06 +08:00
    @Had 原来是这样,我那个是 3 开头的端口
    dosgo
        51
    dosgo  
       2015-03-14 13:57:32 +08:00
    原来如此,我说怎么端口不行呢。。
    dosgo
        52
    dosgo  
       2015-03-18 16:26:38 +08:00
    你好,我这边访问tunnel.mobi了...
    wwek
        53
    wwek  
       2015-03-25 09:56:25 +08:00
    非常感谢~ 用上了
    prowayne
        54
    prowayne  
       2015-04-02 15:42:17 +08:00
    速度很快, 感谢
    garfunkle
        55
    garfunkle  
       2015-04-07 20:39:49 +08:00
    @Had Hey, man.
    I love this service!!!

    BTW. You should clarify that only 55501~55555 are availible as remote_port for ssh situations on tunnel.mobi website.
    dfc643
        56
    dfc643  
       2015-04-18 21:50:02 +08:00
    @Had 之前一直在使用楼主提供的服务,速度挺快的。今天下午 15:00 开始好像不能够连接到服务器了,是这样的吗?感谢楼主
    Had
        57
    Had  
    OP
       2015-04-18 22:39:04 +08:00   ❤️ 1
    @dfc643 Azure的服务器到期了... 正在重新找机器,估计明天恢复吧。
    dfc643
        58
    dfc643  
       2015-04-19 10:25:06 +08:00
    @Had 辛苦了,感谢
    crayhuang
        59
    crayhuang  
       2015-04-23 10:16:21 +08:00
    辛苦 感谢
    fhefh
        60
    fhefh  
       2015-04-23 16:55:42 +08:00
    如何加载tunnel.mobi的配置文件 貌似ngrok2与1的加载方式不一样 配置文件格式是不是也不一样了?
    Had
        61
    Had  
    OP
       2015-04-23 17:48:52 +08:00   ❤️ 2
    @fhefh 目前无法用2.0的客户端连接第三方ngrok服务器...
    fhefh
        62
    fhefh  
       2015-04-24 10:12:31 +08:00
    @Had 谢谢回复,现在使用1.7版本了~
    defunct9
        63
    defunct9  
       2015-04-28 12:01:03 +08:00
    ngrokd.b0.upaiyun.com/ 能把1.7版本的ngrok amd64的版本放这里一份供大家下载吗?
    defunct9
        64
    defunct9  
       2015-04-28 12:01:44 +08:00
    @Had 能把1.7版本的ngrok amd64的版本放到ngrokd.b0.upaiyun.com一份,供大家下载吗?
    ckj475913710
        65
    ckj475913710  
       2015-04-28 17:40:15 +08:00
    以前没有这个站点的账号
    申请来感谢你 @Had
    ckj475913710
        66
    ckj475913710  
       2015-04-28 17:46:31 +08:00   ❤️ 1
    @Had 先感谢你的服务器
    你说的
    关于TCP的转发,我只开放了有限的端口(55501~55555),部分端口不可用,可以多尝试几个,然后~目录的.ngrok默认配置文件是这样写的:

    server_addr: tunnel.mobi:44433
    trust_host_root_certs: true
    tunnels:
    example:
    subdomain: test
    remote_port: 55514 (多测试几个端口)
    proto:
    tcp: 22 (SSH的端口号)

    然后运行ngrok start example即可使用test.tunnel.mobi:55514访问SSH了。

    这里貌似不行
    subdomain对tcp不起作用


    还有我试了一些端口(55501~55555),貌似都不能实现TCP转发。。
    官方的文档我读过了
    现在2.0的官方的tcp功能能正常使用 类似 0.tcp.ngrok.io:*****的服务器地址的0.tcp.ngrok.io是可以ping通的,
    tunnul.mobi ping不通 不知道原因。。
    也不知道是不是其实1.X版本的其实不是tcp转发。。。
    麻烦楼主百忙中回复一下。。
    Had
        67
    Had  
    OP
       2015-04-28 17:48:06 +08:00
    @ckj475913710 TCP的部分因为我更换了服务器,所以对应的端口没有打开...
    2.0官方还没有提供第三方的服务器...
    ckj475913710
        69
    ckj475913710  
       2015-04-29 14:17:37 +08:00
    @Had 嗯嗯 谢谢
    不知道什么时候能打开一些端口供使用呢
    另外 问下 接不接受赞助呀
    感觉老是免费用你的服务器
    挺感激的
    majinjing3
        70
    majinjing3  
       2015-05-02 10:55:35 +08:00
    楼主,我这边可以使用,但是好像不支持2.0的ngrok
    我目前使用的是1.7的ngrok。
    Had
        71
    Had  
    OP
       2015-05-02 12:42:56 +08:00
    @majinjing3 2.0还不支持第三方服务器...
    zzutmebwd
        72
    zzutmebwd  
       2015-05-05 08:10:47 +08:00 via Android
    原来是你 我再试试 围观一下~
    66beta
        73
    66beta  
       2015-05-25 10:49:23 +08:00
    2.0不行了,不过1.7临时用用也够了
    fwkimi
        74
    fwkimi  
       2015-06-04 21:24:16 +08:00
    @Had lz问下怎么后台运行?另外可以用supervisor吗?小白照着ss的写
    [program:ngrok]
    command=./ngrok -config ngrok.cfg -subdomain example 80
    autorestart=true
    user=nobody
    无法启动,出现
    ngrok FATAL can't find command './ngrok'
    supervisorctl tail -f ngrok stderr 就一行
    error: <class 'socket.error'>, [Errno 13] Permission denied: file: /usr/lib/python2.7/socket.py line: 224
    谢谢
    maskerTUI
        75
    maskerTUI  
       2015-06-21 19:21:44 +08:00
    今天试了一下楼主服务器,非常好用,我把局域网的一个论坛映射到外网用来跟朋友交流了,因为打算长久使用了,所以问问楼主接受赞助吗?
    liberize
        76
    liberize  
       2015-06-30 22:13:30 +08:00
    我自己搭了一个,不过在国外,楼主这个速度不错,多谢
    liberize
        77
    liberize  
       2015-06-30 22:38:45 +08:00
    希望开放一些 tcp 端口 +1
    Metre
        78
    Metre  
       2015-07-10 00:42:04 +08:00
    @Had 首先感谢楼主提供的服务
    目前 tcp 端口 还是55501~55555 还是已经关闭了?
    kai1248
        79
    kai1248  
       2015-07-13 09:42:30 +08:00
    楼主,tunnel的服务挂了?
    Had
        80
    Had  
    OP
       2015-07-13 15:15:49 +08:00
    @kai1248 被Azure重启了,早上就恢复了。
    zonghua
        81
    zonghua  
       2015-07-21 08:17:51 +08:00
    用dosgo的ngrok-c客户端,不需要ssl证书,但是经常断开,不稳定。
    dosgo
        82
    dosgo  
       2015-07-28 13:05:55 +08:00
    @zonghua 断开是什么情况?我这边断开重连概率很低,目前已经加上openssl支持了。。
    zonghua
        83
    zonghua  
       2015-07-28 15:12:48 +08:00
    @dosgo 你服务器的服务很稳定,很快。我是用ngrok-c和我自己的vps经常断开。。。
    dosgo
        84
    dosgo  
       2015-07-29 17:40:56 +08:00
    @zonghua 我自己的服务器没公开,相当慢,tunnel.mobi还是不错的
    Had
        85
    Had  
    OP
       2015-07-29 19:23:11 +08:00
    @dosgo 我们团队自己用都觉得tunnel变慢了... 用的人挺多的
    其实用的是上海Azure A0,目前每天入流量5GB(出入10GB),一个月支出也就六十多。
    zonghua
        86
    zonghua  
       2015-07-31 00:21:25 +08:00
    @Had 备案挺麻烦吧?挂了两天的ngrok,今天一看,竟然竟然爆了2.5G内存。系统windows 8.1
    Had
        87
    Had  
    OP
       2015-07-31 09:33:34 +08:00   ❤️ 1
    @zonghua 之前用了阿里云的备案,所以压力0
    zonghua
        88
    zonghua  
       2015-07-31 09:57:07 +08:00
    @Had 怎么弄,直接转过去?还是根本不管什么流程
    fishioon
        89
    fishioon  
       2015-07-31 11:38:59 +08:00
    @Had 现在支持SSH了吗?
    a512532593
        90
    a512532593  
       2015-07-31 15:37:22 +08:00
    为什么我在VPS上连接不上一直显示重新连接 在我公司的电脑是可以的 请问是什么端口没打开还是什么 我用ngrok2.0是可以正常使用的
    a512532593
        91
    a512532593  
       2015-07-31 15:38:45 +08:00
    @Had 为什么我在VPS上连接不上一直显示重新连接 在我公司的电脑是可以连接上服务器的 请问是什么端口没打开还是什么 我用官方的ngrok2.0是可以正常使用的
    heygu
        92
    heygu  
       2015-09-01 15:49:20 +08:00
    @Had 楼主,似乎利用 ngrok 无法转发到我内网的 VPN 服务器上,无法通过认证
    zonghua
        93
    zonghua  
       2015-09-05 12:42:36 +08:00
    @Had 楼主你的的服务出现异常了。。 chmod +x /etc/init.d/njitclient
    linkdesu
        94
    linkdesu  
       2015-09-20 22:54:24 +08:00
    刚刚调试 ping++ 实际使用了一下 LZ 的服务~~很好用~~好人一身平安 :sparkles:
    Moveha
        95
    Moveha  
       2015-10-10 10:02:40 +08:00
    Error 502
    源站异常(请求处理超时或者主动断开到牛盾加速节点的连接)

    貌似今天流量过大,导致这个挂掉了
    Had
        96
    Had  
    OP
       2015-10-10 10:23:32 +08:00
    @Moveha 嗯嗯,已经修了。
    mow
        97
    mow  
       2015-10-12 15:34:44 +08:00
    能问一个傻傻的问题吗,运行 ngrok tcp 22 已经成功了,但是就是无法远程 ssh 访问内网的机器, putty 返回“ connection refused ”,有谁遇见过吗? 这是 ngrok 当前的显示状态(官方服务器)
    Forwarding tcp://0.tcp.ngrok.io:40535 -> localhost:22
    哪位大侠可以在 5:30 之前测试一下能不能连吗
    mow
        98
    mow  
       2015-10-13 15:22:22 +08:00
    @mow 起了一个美国的 vpn server 再去连就好了,唉,骚扰了-:-(
    cubie
        99
    cubie  
       2015-10-13 17:53:06 +08:00 via Android
    感谢 up 主分享
    dosgo
        100
    dosgo  
       2015-10-26 17:21:27 +08:00
    你好现在好像没用了。。 80 端口,连接不上, 44433 也不行
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3023 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 11:03 · PVG 19:03 · LAX 03:03 · JFK 06:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.