5分钟快3首页    注册   登录
5分钟快3 = way to explore
5分钟快3 是一个5分钟快3关于 分享和探索的地方
现在注册
已注册用户请  登录
5分钟快3  ›  程序员

内网穿透5分钟快3工具 (替代 ngrok 和花生壳)

  •  5
     
  •   lswang · 5 天前 · 6676 次点击

    5分钟快3简介

    由于 IPv4 资源的有限性,目前大部分的5分钟快3本地 电脑都是没有公网 IP。所以想要访问自己的5分钟快3本地 5分钟快3服务 (ssh、http、vnc、NAS、智能家居接口回调 - 比如天猫精灵自定义语义),需要有个5分钟快3服务 来进行内网穿透。 目前有一些5分钟快3工具 比如花生壳、ngrok 等。但是,

    1. 花生壳是收费的;
    2. ngrok 第二版也开始收费(第一版据说有一些严重 bug)。

    所以,需要一款开源的方案( 当然还需要一个固定的公网 IP >_<)。

    解决方案

    本人用 netty 写了一个 tcp 的穿透5分钟快3工具 叫 Tcp Through,直接5分钟快3下载 可用。安装方式下面有介绍

    该项目分 server 端和 client 端,想要看详细信息的话,可以去 github 上查看

    这个5分钟快3工具 有以下一些比较实用的功能

    1. 支持 http api 管理5分钟快3服务 端,还支持 命令行来管理(自己写的 python 库,自己感觉还挺炫)
    2. 支持安全模式。只有在信任列表的 IP 5分钟快3地址 才可以访问 client (防止攻击的最好方式)
    3. 支持速度限制,功能已经测试可用。只是目前在代码中没有限速,可自己修改代码,具体代码在 server 库中的 OuterServer 中,注释中有说明。
    4. client 可设定不允许 server 控制 (client 端的 isRemoteManage 参数)
    5. 支持查看实时速率(不需要用总量来计算)
    6. 管理通道进行了 SSL 加密,防止注册信息被抓包
    7. 数据平面和控制平面分离,提高性能(mac 下测速能达到 10Gb/s+)。
    8. 管理平面和控制平面都进行了安全性校验,不正确的连接会被 kill 掉,拒绝攻击。
    9. Server 可以增加密码校验,不允许其他的 client 注册。Server 启动时候加上 -s 参数。

    备注: 如果是公网虚拟机(阿里云或者腾讯云),记得要开放相应的端口

    Server 安装和运行

    # 5分钟快3下载
    并解压
    > wget http://github.com/longshengwang/tcpthrough-server/releases/download/v1.0/server-1.0.zip
    > unzip server-1.0.zip
    > cd server-1.0
    # 启动 server 端,会占用 3 个端口,用途分别是 控制面(默认 9000)、数据面(9009)、http 5分钟快3服务
    (8080)。可以使用 --help 查看如何设定
    > bin/server
    

    注: 详细参数可以通过 bin/server --help 来查看

    下面的例子是通过 5分钟快3服务 器端的 333 端口来访问内网的 localhost22端口

    Client 安装和运行

    # 5分钟快3下载
    并解压
    > wget http://github.com/longshengwang/tcpthrough-client/releases/download/client-1.0/client-1.0.zip
    > unzip client-1.0.zip
    > cd client-1.0
    # 启动 client 端, 下面的字段表示:通过5分钟快3服务
    器上的 333 端口,可以访问客户端的 localhost:22 5分钟快3服务
    (这里是 ssh 5分钟快3服务
    )
    > bin/client -u my_home -s <server ip>  -p 333 -l localhost:22 -p 333 -c true -a true
    

    注: 详细参数可以通过 bin/client --help 来查看

    参数说明:

    • -c 表示 client 是否可以被 server 控制(是否可以增加被代理的5分钟快3服务 )
    • -u 客户端的名称,也是唯一标识,server 下的 client name 不可以重复
    • -a 表示被代理的端口只可以被信任的主机访问 (如何增加被信任的主机,下面的命令行会有提到)
    • -f 表示可以把所有的参数都写入文件,然后用 -f 指向该文件 文件模板如下
    name=wls_home
    password=wo_shi_server_password
    remote_host=192.168.122.20
    remote_data_port=9009
    remote_manager_port=9000
    local_host=192.168.122.20
    local_port=22
    remote_proxy_port=2222
    is_remote_manage=true
    

    命令行

    可以通过 python 的一个库(自己写的),来查看和管理 server 上的连接信息

    ➜ ~ pip install tcpth.cmd
    ➜ ~ tcpthcmd  # 如果 server 上的 http 端口不是默认的 8080,可以后面加上 -p <port>
    Welcome to use the tcp through.
    tcpthrough> help
    tcpthrough> help
        list -- get all registration
        get <name> -- get special name information
        monitor [<name>] -- monitor the information, refresh on 2s
        register add <name> <localhost:port> <proxy port> -- add registration
        register delete <name> <proxy port> -- delete registration
        trust add <name> [<proxy port>] <trusted ip> -- add trust ip
        trust delete <name> [<proxy port>] <trusted ip> -- delete trust ip
        trust get <name> [<proxy port>] -- get trust ip
    tcpthrough>
    tcpthrough> list   # 在命令行下,列是对齐的,拷贝过来之后就不对齐了
     Name | Local Service | Proxy Port | Out Conn Count | Remote Managed | Security | Write Speed | Read Speed
    --------------------------------------------------------------------------------------------------------------
     my_home | localhost:22 | 333 | 0 | true | true | 0KB/s | 0KB/s
    tcpthrough>
    

    说明:

    • 可以通过 exit 或者 ctrl + d 或者 ctrl + c 退出命令行模式
    • 如果客户端允许5分钟快3服务 端控制,那么可以通过 register 命令来进行添加和5分钟快3删除
    • 如果客户端开启安全模式 -a, 那么只有通过 trust add <your-client-name> <your-ip> 来添加信任的 IP 5分钟快3地址
    • monitor 是可以 每个 2s 打印一次 server 端的连接信息
    • register add 中的 localhost 可以是 client 网络中的其他主机的 IP 5分钟快3地址
    99 回复  |  直到 2019-11-12 18:52:06 +08:00
        1
    shadowczp   5 天前
    其实比较新的5分钟快3工具 里,有现成的叫做 frp。。。
        2
    xxsww211   5 天前
    @shadowczp 是,FRP 还是开源项目。ngrok 其实也够用。
        3
    HangoX   5 天前
    倒是差一个 ngrok 重放的功能,其他都没有
        4
    xxsww211   5 天前
    5分钟快3我 觉得楼主这个也很不错,很到位。
    楼主要不考虑其他的突破点,比如不需要固定的公网 IP。连接第三方5分钟快3服务 器实现转发,当然第三方这个过程也是开源的,让用户自由组建。
        5
    yorkyoung   5 天前
    限速、客户端管理和流量实时这些功能还是比较新颖的,先马后看
        6
    lswang   5 天前
    @xxsww211 现在可没有这么好的第三方,5分钟快3企业 宽带太贵了
        7
    lswang   5 天前
    @yorkyoung 感谢支持
        8
    wayixia   5 天前
    收费也好免费也好,最后都是要走公网 ip,都是要花钱。最终各种成本综合考虑,选择自己适合的。
        9
    lswang   5 天前
    @wayixia 其实电信可以申请公网 IP,就是不固定。想要用这个动态 IP,还是要一个固定 IP 来 >_<
        10
    lswang   5 天前
        11
    boywhp   5 天前
    FCN 一键免费穿透,日常维护管理基本够用了
        12
    keepeye   5 天前
    frp 很稳定,就是阿里云带宽太贵了
        13
    ChangHaoWei   5 天前
    5分钟快3你 们都不用 ssh 自带的端口转发?简单快捷。基于 alphine 装 ssh-client 然后 docker 起来也免进程管理。


    换5分钟快3服务 器还什么都不用调,通讯还是加密的。不能理解为什么不用。。
        14
    lswang   5 天前
    @ChangHaoWei 用过,容易断。用 docker 运行应该会好点
        15
    prenwang   5 天前
    java netty 实现,是不是内存占用多了一点
        16
    tigerstudent   5 天前
    @ChangHaoWei 断了就没了,得重新执行命令,还得写一套脚本去管理重连
        17
    xxsww211   5 天前
    @lswang 5分钟快3你 误会5分钟快3我 的意思了。5分钟快3技术 只管实现,至于这第三方到底是谁就不用去管,因为这是用户自己的需求,他们自己在一些云5分钟快3服务 器搭建个5分钟快3服务 就行了。这比自己去建一个第三方要实在很多。
        18
    easing   5 天前
    5分钟快3我 理解这还是需要5分钟快3服务 端转发流量?
        19
    jaybing926   5 天前
    @ChangHaoWei 5分钟快3我 用 SSH 转发,frp,ngrok 这些5分钟快3工具 都需要 server 端和 client 端,SSH 只要一条命令,一条命令~~
        20
    lihongjie0209   5 天前
    mark 一下 后面学习用
        21
    lswang   5 天前
    @easing 是的,现在 NAT 打洞已经非常难了
        22
    lswang   5 天前
    @jaybing926 ssh 转发是简单,不过少了 限速、管理一些其他的功能
        23
    fanyingmao   5 天前 via Android
    还是直接用 ssh 转发,比较简单。
        25
    wpblank   5 天前
    正好5分钟快3我 顺路问个问题,本来准备电脑弄个内网穿透,回家了也能连上。结果5分钟快35分钟快3我 们 5分钟快3公司 网络好像屏蔽了 frp 和 v2ray,想问下怎么实现的
        26
    sagaxu   5 天前 via Android
    家里宽带公网 IP,配了 dmz,域名解析到家里 IP,每隔半个小时向 dnspod 上报一次 IP。

    5分钟快3公司 ssh 连接到家里做隧道,systemd 管理,转发失败会自动重连。

    第三方5分钟快3工具 ,好像并不需要。
        27
    encro   5 天前
    frp,nps,goproxy 都很不错
        28
    wangyongbo   5 天前
    @jaybing926 教一下5分钟快3我 吧, 这一条命令是啥? 谢谢
        29
    shenqi   5 天前
    临时使用,5分钟快3推荐 pierced。不要滥用了,不然封了就惨了。
        30
    sagaxu   5 天前 via Android
    @tigerstudent systemd 或者 supervisord 都很成熟
        31
    lswang   5 天前
    @wpblank 怎么屏蔽 frp 和 v2ray 的就不知道了。 文章里的安装步骤照着做就行,如果是 5分钟快3Win dows 的,把文章里对应的命令换成5分钟快3你 手动操作。不过5分钟快3你 需要有一个固定的公网 IP
        32
    jaybing926   5 天前
    @wangyongbo ssh -R 20001:localhost:80 [email protected] 或者 autossh -p22 -M 5000 -NR 20001:0.0.0.0:80 [email protected],autossh 会一直尝试重新连接 可以消除网络故障隐患,ssh 透传的缺陷是透传到外网的端口只能监听 127
        33
    samondlee   5 天前
    点个 star2333
    感觉和 sakura frp 魔改的 有点儿像
        34
    zlylong   5 天前
    @wpblank 屏蔽 V2ray 是如何做到的???比 GFW 还强!?
        35
    lswang   5 天前
    @samondlee 谢谢支持
        36
    SenLief   5 天前
    有公网 IP 的还是直接用 DDNS,没有的5分钟快3我 觉得不如买一个设备了。省心
        37
    daimiaopeng   5 天前 via Android
    frp 不香吗?
        38
    lswang   5 天前
    @daimiaopeng 自己写的最香
        39
    ungrown   5 天前
    @xxsww211 5分钟快3你 们为什么造轮子之前就不能先查一下,5分钟快3你 说的这个也有了,而且早就有了,“远古”项目 n2n 就是(虽然已经凉凉),现在有个更大的项目 zerotier
        40
    ungrown   5 天前
    @lswang 有本事加密算法也自己写
    重复造轮子就是浪费生产力
        41
    ungrown   5 天前
    @zlylong 协议白名单,或者端口白名单,甚至 IP 地理池白名单
        42
    lswang   5 天前   ♥ 1
    @ungrown 5分钟快3我 也想写加密算法,可惜数学能力限制了5分钟快3我 。
    重复造轮子的说法不适合个人,程序员就是通过自己开发来学5分钟快3更多 的东西。自己造的轮子是自己的轮子,别人造的轮子是别人的。

    再说,如果都用别人的轮子,那5分钟快3你 说为什么华为还要搞芯片干嘛?华为也在浪费生产力?
        43
    m1862897   5 天前
    一般人用 frp 就行了

    5分钟快3我 当然会把5分钟快3你 这个作为备用的,毕竟有 java 源码,熟悉 netty 的 chanelhandler 和 pipeline 可以自己修改;
    frp 好像是 go 写的,go 这种语言,还真特么不会,完全看不懂写的神马,根本无从改起。
        44
    m1862897   5 天前
    所以,大佬,5分钟快3我 支持5分钟快3你 。
    呵呵,可能还会抄袭5分钟快3你 的 netty 代码。
        45
    ysys123   5 天前
    5分钟快3我 用的付费的 natapp 用起来也挺稳定 还不用担心自己的 vps 有问题
        46
    lswang   5 天前
    @m1862897 谢谢支持,代码随意用
        47
    lswang   5 天前
    @ysys123 这种流量收费的,怎么防止有人恶意蹭?
        48
    lswang   5 天前
    @ysys123 5分钟快3我 看阿里云也有按流量收费,不过不敢用,怕有心人搞。。
        49
    Calm1   5 天前
    收藏了,感觉不错。谢谢楼主分享。
        50
    ungrown   5 天前   ♥ 1
    @lswang 因为别的芯片厂商故意给华为使绊子,请问5分钟快3你 被别人使绊子了吗?
    如果5分钟快3你 还觉得实现加密算法的关键是数学能力的话,5分钟快3我 只能呵呵,请自行5分钟快3搜索 “不要自己实现加密算法”。
        51
    Kilerd   5 天前
    jaav 写这种东西真的是。。。。。。 怎么说呢? 感觉没必要?
        52
    lswang   5 天前
    @ungrown 如果5分钟快3你 用的5分钟快3服务 的供应商开不下去了,5分钟快3你 用啥。。 。 华为的例子,简单举例,用不着深入探讨。

    5分钟快3我 想5分钟快3你 的时间应该会用来创造5分钟快3更多 的价值,不会浪费的。
        53
    atom234   5 天前
    不错
        54
    lswang   5 天前
    @Kilerd 写这个库主要也是实际用下 netty,熟悉网络开发。Netty 很稳定,性能也还行,而且把底层的很多部分都省去了。很多开源项目(JAVA)涉及网络的部分都是 netty 开发的,比如 zookeeper。一些大5分钟快3公司 也会用 netty 做一些网络开发。
        55
    m1862897   5 天前
    大佬
    ,看了一下5分钟快3你 的代码
    ,5分钟快3你 的打包方式别具一格
    ,依赖相当精华尽量5分钟快3优化 到最低
    ,小可对大佬佩服得五体投地
    ,能否加个微信
    ,以后给小可一点指教
        56
    lswang   5 天前
    @m1862897 =.= 也就是用了 gradle 打包。。。优点就是不用写那么多冗余的 xml 标签。
        57
    thanatosS   5 天前
    学习了
        58
    tankren   5 天前
    5分钟快3我 的联通有公网 有 IPv6 有 443 哈哈
        59
    morphyhu   5 天前
    支持楼主,感谢分享。在中国的这种网络环境下,多个选择总是好的。
        60
    weifengzi2009   5 天前
    @jaybing926 #32 不只是能监听 127 啊,5分钟快3你 可以用 GatewayPorts 去控制监听任意 interface 啊
        61
    varrily   5 天前
    来个类似的,多了 web 端管理,client 鉴权 ifport.com 。但说真的,java 太占内存了。
        62
    lswang   5 天前
    @varrily java 的特性,内存占用多,但是相对稳定一些
        63
    gy123   5 天前
    server-->长连接-->client;
    client 监听 http 请求--->发送到 server 的 channl-->server 请求 http 5分钟快3服务 返回数据;
    思路是这样?
        64
    coloz   5 天前
    了解下
        65
    guanhui07   5 天前
    ngrok frp 5分钟快3我 只知道
        66
    dukang   4 天前
    @lswang 5分钟快3你 这个通信是所有流量都经由中转5分钟快3服务 器。还是穿透后,两端点对点通信,无需经过中转?
        67
    ungrown   4 天前 via Android   ♥ 1
    @lswang 5分钟快3你 别给5分钟快3我 腆着脸找台阶下,自己举错了例子就勇敢承担别人的质问。
    还5分钟快3服务 商开不下去,都是开源可自建项目,用户众多发展迅速。
    5分钟快3我 看5分钟快3你 这个多余的项目倒是过不了多久就不维护了。
        68
    meppy   4 天前
    mark,5分钟快3我 一直用 natfrp,挺不错的,还算比较稳定,网速比5分钟快3我 自己搭的快。。
        69
    ac2sherry   4 天前 via iPhone
    @lswang 5分钟快3公司 没有 vpn 吗?
        70
    conn4575   4 天前 via Android
    star 了,不过5分钟快3我 还是觉得 frp 更香。看到是 java 的就有点抵触,小机器内存耗不起 233,不过拿来学 netty 应该不错😮
        71
    lswang   4 天前 via iPhone
    @conn4575 谢谢,一开始写这个项目的目的也是为了学习 netty。其实之前已经用 Java 原生网络库写了一个,不过感觉性能不够好、功能不够多,就用 netty 重写了。
        72
    lswang   4 天前 via iPhone
    @conn4575 5分钟快3公司 肯定不给用自己的穿透5分钟快3软件 ,这个主要是为了访问家里的树莓派
        73
    shell314   4 天前 via Android
    支持
        74
    waiaan   4 天前
    这类5分钟快3软件 ,中转5分钟快3服务 器才是最关键的吧?
        75
    eq06   4 天前
    有 server 的人不需要内网穿透,没 server 的人用不了5分钟快3你 的5分钟快3工具
        76
    lswang   4 天前 via iPhone
    @eq06 是需要一个 server,内网需求还是看自己了。5分钟快3我 用内网穿透是为了用天猫精灵控制家里的树莓派开关电视
        77
    lswang   4 天前 via iPhone
    @waiaan 是的,现在双十一某宝和某讯针对新用户都有很大折扣,不过上车需注意,因为到期续费太贵了
        78
    lswang   4 天前 via iPhone
    @shell314 感谢支持
        79
    waiaan   4 天前
    @lswang 5分钟快3我 记得 ngrok 是可以直接用的。
        80
    ICKelin   4 天前
    最近怎么这么多人写内网穿透5分钟快3软件 。。。
        81
    ICKelin   4 天前
    ngrok 这款5分钟快3软件 很好,但是是国外的,连接的节点看其内部调度算法以及是否在国内有节点。

    frp 是开源项目,面向的是有5分钟快3技术 底子的人,没5分钟快3技术 功底的让他折腾不一定能搞得定,其实可以算一下,如果 frp 需要花一个早上来搞定部署,还需要域名5分钟快3备案 ,时间上的消耗足够购买收费5分钟快3软件 一年了,还需要额外支付5分钟快3服务 器费用,不太划算的。

    市面上有不少基于 frp 或者 ngrok 来做二次开发的5分钟快3软件 ,但是毕竟不是独立开发的,出故障能否快速解决其实也是一个问题,官网打着免费的旗号,但是这类5分钟快3软件 带宽费用是个大头,最终肯定是需要收回去的。

    5分钟快3我 觉得楼主是不是可以考虑尝试往5分钟快3软件 5分钟快3服务 方向去做。
        82
    imWBB   4 天前
    @ICKelin
    为什么要5分钟快3备案 ?
    直接用国外的5分钟快3服务 器就好了。
        83
    ICKelin   4 天前
    @imWBB 可以的。
        84
    lanternxx   4 天前
    @ICKelin #81 frp 部署不是 3 分钟就好了的吗。。使用非 80/443 端口也不需要5分钟快3备案
        85
    ICKelin   4 天前
    @lanternxx 部署这东西得看人,有人用内网穿透是用来做5分钟快3公众号 接口调试的,这个还真要求 80/443 端口。
        86
    xia0shi   4 天前 via iPhone
    支持 点赞
        87
    zhfsxtx   3 天前
    请问开发这种程序5分钟快3你 是用什么 IDE?
        88
    lswang   3 天前 via iPhone
    @zhfsxtx idea
        89
    quericy   3 天前
    后续考虑支持 client 之间 p2p 么
        90
    c0py7hat   2 天前
    为啥5分钟快3你 们都有这需求,5分钟快3我 就没这需求,佛系..难道5分钟快3我 太菜了
        91
    darknoll   2 天前
    @ICKelin frp 是5分钟快3我 见过部署最简单的5分钟快3软件 了,大部分人几分钟就搞定了吧。
        92
    lswang   2 天前
    @quericy 暂时不考虑,现在打洞太难了。之前用试过了,打不进去。。。
        93
    lswang   2 天前
    @c0py7hat 看自己的需求了,一般捣鼓树莓派和小米或者天猫智能家居之类的,这个需求还是很多的
        94
    stevenkang   2 天前
    有更简单的:
    ssh -R 80:localhost:8080 serveo.net
        95
    zunceng   2 天前
    5分钟快3你 都有 server 了 用 autossh 不就完事了
        96
    ICKelin   2 天前
    @darknoll 真得看人,5分钟快3我 印象中作者也搞了个付费星球群专门解决问题的,大部分人可能是大部分5分钟快3技术 人员。买个5分钟快3服务 器,买个域名做个解析是不是很难的事,但是并不是所有人都能做得了的。
        97
    wslzy007   1 天前
    目前 go 语言的穿透5分钟快3工具 很多,java 的倒是少见,奈何5分钟快3我 的哲学是绿色环保,自己动手,只用 c/c++的
        98
    lswang   1 天前
    @wslzy007 go 在做网络开发方面确实比 java 好。用 java 做网络开发的唯一理由就是 netty 这个库,真的是香
        99
    wslzy007   1 天前
    @lswang 认同,前提是从 0 开始。毕竟 java 生态是公认最好的。go 的网络框架 /web 框架的确很优秀,这个可以看5分钟快3我 之前发的对比测试帖子。做5分钟快3技术 ,始终是术业有专攻,没有最好的,只有最适合自己的。
    5分钟快3关于   ·   FAQ   ·   API   ·   5分钟快35分钟快3我 们 的愿景   ·   广告投放   ·   感谢   ·   实用小5分钟快3工具   ·   2830 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 36ms · UTC 11:46 · PVG 19:46 · LAX 03:46 · JFK 06:46
    ♥ Do have faith in what you're doing.