V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
acumen
V2EX  ›  程序员

内网穿透都有哪些解决方案?

  •  
  •   acumen ·
    acumen1005 · 2017-11-15 19:54:41 +08:00 via iPhone · 38452 次点击
    这是一个创建于 2563 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在搭 jenkins 的时候 gitlab 的是 web hook 需要访问到 jenkins 服务器(搭建在 mac nimi 上)。这里需要做一个内网穿透。搜索了一番,有以下解决方案:

    1. 花生壳等服务平台,好像没有什么 mac 版,我们的路由器也不支持。
    2. ngrok 开源项目,用 vps 做跳板。听说有隐患。

    大佬们还有什么比较好的解决方案?
    第 1 条附言  ·  2017-11-15 23:38:54 +08:00
    意外找到之前有人也讨论过 frp 和 ngrok
    https://www.v2ex.com/t/334792
    66 条回复    2019-07-17 14:43:15 +08:00
    tomczhen
        1
    tomczhen  
       2017-11-15 20:05:19 +08:00
    花生壳有 linux 版本,支持内网穿透,容器跑一个就行了。

    https://hsk.oray.com/download/

    也可以使用 IFTTT 或 Automate,内网放台设备,Gitlab 触发通知到内网设备,然后内网设备调 Jenkins。
    cs8425
        2
    cs8425  
       2017-11-15 20:09:28 +08:00
    對現有的方案不滿意就自己動手嚕一個摟
    只要雙方都能連到某台可控制的伺服器就好解決了
    半個月前才搞定一個用手機網路上網卻要開 server 讓外界直連的 case
    花了 1 小時的成果: https://github.com/cs8425/revese-server
    8023
        3
    8023  
       2017-11-15 21:26:25 +08:00 via Android
    frp
    lingo
        4
    lingo  
       2017-11-15 21:30:05 +08:00
    我也是来给 frp 加一的。简单好用。
    whypool
        5
    whypool  
       2017-11-15 21:36:11 +08:00
    ngrok
    microhz
        6
    microhz  
       2017-11-15 21:40:09 +08:00
    ngrok
    duoguo
        7
    duoguo  
       2017-11-15 21:44:52 +08:00
    frp
    airyland
        8
    airyland  
       2017-11-15 21:48:58 +08:00
    frp +1
    feast
        9
    feast  
       2017-11-15 22:29:20 +08:00 via Android
    你首先要知道,访问内网只能反向或者靠中转,不可能去中心化
    litter123
        10
    litter123  
       2017-11-15 23:07:38 +08:00
    @feast N2N 表示不服,只要首次超级节点的通信即可
    feast
        11
    feast  
       2017-11-15 23:28:11 +08:00 via Android
    @litter123 你都说了需要超级节点了,怎么去中心化?
    dot
        12
    dot  
       2017-11-15 23:32:30 +08:00 via Android
    frp +1
    acumen
        13
    acumen  
    OP
       2017-11-15 23:34:10 +08:00 via iPhone
    @cs8425 厉害厉害,有空的时候折腾一下,哈哈哈哈
    @tomczhen 哦,大概了解,需要一台设备做中间转发。
    @whypool
    @microhz ngrok 直接用开源的项目?
    introle
        14
    introle  
       2017-11-15 23:51:49 +08:00
    ngrok 从 1.0 版开始就不开源了 还是老实用 frp 吧。。。
    laudukang
        15
    laudukang  
       2017-11-16 00:08:22 +08:00
    frp
    n2n
    ngrok
    qqpkat2
        16
    qqpkat2  
       2017-11-16 01:17:53 +08:00
    自己写一个程序就行了,ssh 隧道转发加 socket5 代理
    Dillion
        17
    Dillion  
       2017-11-16 01:18:56 +08:00 via iPhone
    @qqpkat2 赞同,不麻烦还安全
    arclin16
        18
    arclin16  
       2017-11-16 01:21:07 +08:00 via iPhone
    frp+1
    ngrok+1
    NUT
        19
    NUT  
       2017-11-16 08:29:42 +08:00
    bintianbaihua
        20
    bintianbaihua  
       2017-11-16 09:11:09 +08:00
    frp
    xmoiduts
        21
    xmoiduts  
       2017-11-16 09:38:34 +08:00 via Android
    看了一阵 frp,发现配不明白。于是放我的简易解决方案-ssh 反向。 https://xmoiduts.github.io/2017/10/30/我是如何翻回学校的 /
    gecco
        22
    gecco  
       2017-11-16 11:17:16 +08:00
    都各有各的问题,支持 autossh 反代 +1
    suduo1987
        23
    suduo1987  
       2017-11-16 11:41:14 +08:00
    @litter123 看起来不错哦
    zen9073
        24
    zen9073  
       2017-11-16 11:42:01 +08:00
    反正我用着 ngrok 感觉很方便,也没发现什么问题。
    tank
        25
    tank  
       2017-11-16 14:28:59 +08:00
    samv2
        26
    samv2  
       2017-11-16 16:12:08 +08:00   ❤️ 4
    ngrok,n2n,frp 都研究过也基本用过,最终是 n2n 用的最久.
    但是 n2n 说是 p2p,打洞,但是实测,根本做不到 p2p,流量还是走了 supernode,传输速度慢得一塌糊涂.

    最终,发现了 zerotier,呵呵,这特么才是 p2p,速度直接跑满宽带.虽然刚连接上还是需要找中心服务器握手,但是后期确实可以建立直联跑满带宽.其次,zerotier 可以自己搭建国内私有握手服务器(moon),握手速度超快,真心爽爆了~~~

    再次,n2n 只要知道域和密码就能连接进来,有时候还是不太放心的,而 zerotier 是有管理界面的,虽说也是托管在官方,但是相对来说,还是安心不少的~~~

    以上绝逼经验之谈~~~
    gengfire
        27
    gengfire  
       2017-11-16 16:20:46 +08:00
    最近在瞎弄 nodejs 版,https://github.com/localtunnel/localtunnel
    xustrive
        28
    xustrive  
       2017-11-16 16:48:24 +08:00
    @samv2 可以自己完整搭一套么? 搭建国内私有握手服务器(moon) 这个咋弄的 就怕哪天被强了就不能用了,
    yoqu
        29
    yoqu  
       2017-11-16 17:17:56 +08:00
    推荐一个哥们用 JAVA 写得,反正我做 JAVA 的,部署起来特别方便,哈哈。
    地址: https://github.com/ffay/lanproxy
    hackxing
        30
    hackxing  
       2017-11-16 17:19:33 +08:00
    nkcfc
        31
    nkcfc  
       2017-11-16 17:28:19 +08:00 via Android
    @feast 不一定的
    samv2
        32
    samv2  
       2017-11-16 17:55:52 +08:00
    @xustrive 完整的还没研究过,可以看看官方的文档.官方的中心服务器挂了没关系了,有私有服务器就够了呀,moon 还专门给那些没有英特网的网络组建虚拟局域网呢~~

    具体操作可以看官网:https://www.zerotier.com/manual.shtml#4_4
    siyiye
        33
    siyiye  
       2017-11-16 19:11:23 +08:00
    @samv2 完美取代 hamachi 的东西,用来好友联机玩游戏,很爽
    20015jjw
        34
    20015jjw  
       2017-11-16 19:48:37 +08:00
    好可爱的头像
    只看标题的话 推荐 hamachi
    crazycen
        35
    crazycen  
       2017-11-16 19:53:30 +08:00
    @samv2 #32 这个还不错,已经使用了一个月了!
    jtsai
        36
    jtsai  
       2017-11-16 19:56:56 +08:00 via Android
    vps + ssh tunnel 目前自己选择的方案 简单方便 不需要额外的软件和服务支持
    jasontse
        37
    jasontse  
       2017-11-16 20:21:17 +08:00 via iPad
    以前用过 n2n 后来感觉太轻量了,IPv6 也有问题。后来觉得 Zerotier 不错,不用维护路由协议了,而且支持 IPv6。
    tolerance
        38
    tolerance  
       2017-11-16 21:36:14 +08:00
    n2n v2 建立的 IP,虚拟机(Linux)可以 ping 通 win10,win10 可以 ping 通 Linux
    zerotier 1.2.4 建立的 IP,虚拟机(Linux)无法 ping 通 win10,win10 可以 ping 通 Linux,
    不知是哪里设置不对
    Spxg
        39
    Spxg  
       2017-11-16 22:33:11 +08:00 via Android
    我用的 frp,感觉还行,路由器都可以玩
    https://ftdabaobei.cn/?p=256
    kirafreedom
        40
    kirafreedom  
       2017-11-16 23:04:56 +08:00
    问一下内网穿透能跟公网 IP 一样远程 WOL 唤醒内网的机器么?
    mrfox
        41
    mrfox  
       2017-11-17 03:50:13 +08:00
    本贴里的高手们,有空也来我的相关问题指导一下谢谢
    https://www.v2ex.com/t/406783
    datocp
        42
    datocp  
       2017-11-17 06:38:19 +08:00 via Android
    没人提 softether ? frp 之类的代理和 vpn 没得比。vpn 是万能的应用,当年就是用来玩语音通讯的。
    softether 最显著的优势是完全可以自建,通过带公网 ip 服务器反向连接,方便的 gui 管理界面,nb 的二层级联,3 层路由,32 线程 https 连接,可以将多台服务器连接在一起通过 iproute2 组网多出口,支持 n 多常用客户端 l2tp openvpn sstp。
    目前比下来相对 tinc 就少了个去中心化的 mesh vpn。虽然作者说是支持 mesh 形式,但不知道如何配置。在 mtk7620 这种路由也有 4MB/s 的速度,非常不错。
    wol 没通过 vpn 尝试过,应该没什么问题,其实找个 openwrt 每天 cron 定时 wol 网络启动服务器就可以了。
    bao3
        43
    bao3  
       2017-11-17 09:16:54 +08:00
    @datocp 同楼上。
    你们都好折腾,其实在任意 vps 和你内网的电脑上都装上 Softether,使用 l2tp 互联后,你不光可以穿透,你还可以像我一样,人在广州,但是可以连回上海的家里,使用路由器分配的上海 IP。。。。这个简直是神器。虽然 l2tp 也不神秘,可是这货是 GUI 配置。
    bao3
        44
    bao3  
       2017-11-17 09:19:38 +08:00
    哦,对了,Softether 穿透后,你电脑拿到的 IP 就是家里路由的内网 IP,所以局域网唤醒这种小事是肯定支持的,因为人家是 L2TP 二层穿透,这包含了 VLAN 和 DHCP,和你实际在家一模一样,没有任何差别。
    kenshinji
        45
    kenshinji  
       2017-11-17 13:19:54 +08:00 via iPhone
    @Dillion 哦哦?有 sample 么?我也来撸一个
    cfcboy
        46
    cfcboy  
       2017-11-17 15:40:54 +08:00
    @samv2 你好,能写个自建 moon 的教程吗?网上的教程好少,而且不详细。特别是多客户端上面。
    tmac33
        47
    tmac33  
       2017-11-17 17:16:32 +08:00
    不好用你打我,源码地址 https://github.com/try-to/electron-proxy/
    acumen
        48
    acumen  
    OP
       2017-11-17 19:56:37 +08:00 via iPhone
    ngrok 编译 mac 的客户端一直报 MSpanList_Insert,

    看 github 上的 issue 说是和 最新的 macOS 的锅?
    anubu
        49
    anubu  
       2017-11-17 21:27:28 +08:00
    @bao3 说得很心动,马上试试。
    比较关注流量是否经过中心节点,虽然双向打洞要求比较苛刻,但是可能的话还是希望能支持。
    samv2
        50
    samv2  
       2017-11-21 12:43:26 +08:00
    @cfcboy 参考官方教程就够了呀,地址我贴在上面了,非常简单......前提也是要有公网 ip 才能私建 moon..
    cfcboy
        51
    cfcboy  
       2017-11-22 08:54:00 +08:00
    @samv2 官网的教程只有 Linux 的,而且步骤不是很详细。没有 IOS,Android,Win 的,你有博客吗。可以在博客上发布详细一点的教程吗?
    samv2
        52
    samv2  
       2017-11-22 11:56:33 +08:00
    @cfcboy 官网的教程已经是很详细了.....目前建立私有 moon,只能在 linux 吧,win 没试过,但是加入私有 moon 应该只有 win,mac,linux,移动端是不支持的,至少移动端的客户端上完全没有相关选项~~我比较懒,没有博客,233333333~
    leviacn
        53
    leviacn  
       2017-11-28 17:06:07 +08:00
    Frp 挺稳定的,也在用 Zerotier。两者受平台限制几乎没有,都可以自由使用。Zerotier 也建立了自己 moon 中转服务器组(一个固定公网 ip,一个非固定公网 ip,一个内网 ip )。不过现在看起来速度最佳也就 350k,同一运营商或者网间都是这个速度,可能是只是使用了一个很弱的小路由 tp ling 703n lede 的缘故,也可能是没有打通 p2p,握手速度倒是挺快的。Zerotier 要正常使用你的网络状况会有要求,我测试朋友的一个加入进来的节点就经常掉线,ping 值看起来高于 500ms 就会开始偶发掉线,如果再高一点 ping 值就更厉害了,会完全离线。因为是公司网络等到深夜网络状况好的时候,又恢复正常。
    leviacn
        54
    leviacn  
       2017-11-28 17:07:33 +08:00
    Frp 挺稳定的,也在用 Zerotier。两者受平台限制几乎没有,都可以自由使用。Zerotier 也建立了自己 moon 中转服务器组(一个固定公网 ip,一个非固定公网 ip,一个内网 ip )。不过现在看起来速度最佳也就 350k,同一运营商或者网间都是这个速度,可能是只是使用了一个很弱的小路由 tp ling 703n lede 的缘故,也可能是没有打通 p2p,握手速度倒是挺快的。Zerotier 要正常使用你的网络状况会有要求,我测试朋友的一个加入进来的节点就经常掉线,ping 值看起来高于 500ms 就会开始偶发掉线,如果再高一点 ping 值就更厉害了,会完全离线。因为是公司网络等到深夜网络状况好的时候,又恢复正常。Frp 在同一台 703n 上也有部署,它则在 Zerotier 离线期间也有比较稳定的表现。
    alyssa0326rr
        55
    alyssa0326rr  
       2018-03-22 12:19:18 +08:00
    @leviacn 请问“一个非固定公网 ip ”的 Moon 是怎么做的呢,stableEndpoint 那一项只能填 IP 嘛
    jeffson
        56
    jeffson  
       2018-06-09 17:23:41 +08:00
    Mark
    andrewhxism
        57
    andrewhxism  
       2018-06-23 14:21:00 +08:00
    zerotier 好用
    leviacn
        58
    leviacn  
       2018-08-14 17:45:35 +08:00
    @alyssa0326rr 现在新版就是可以直接使用动态域名 DDNS 来做 moon,udp 9993 端口能用就成。
    mattx
        59
    mattx  
       2018-09-13 07:19:47 +08:00
    @datocp 和 openvpn 比起来有什么优势.
    datocp
        60
    datocp  
       2018-09-13 07:38:53 +08:00 via Android
    Openvpn 很早就不用了,穿不了墙虽然一直说有什么修改方案。没有图形配置界面,这绝对是很多基于文本配置 vpn 的致命伤。
    JohnGilbert
        61
    JohnGilbert  
       2018-09-14 20:37:02 +08:00
    JohnGilbert
        62
    JohnGilbert  
       2018-09-14 20:41:07 +08:00
    @tolerance 我也是 inux 无法 ping 通 win10,github 上提了这个 bug,问题地址在 61 楼
    zlylong
        63
    zlylong  
       2019-01-11 23:44:08 +08:00
    @leviacn 那个版本?我最新版本还是不支持 ddns 啊
    ghostsf
        64
    ghostsf  
       2019-03-10 15:49:50 +08:00
    ZeroTier 了解一下
    thisismr2
        65
    thisismr2  
       2019-05-06 17:45:10 +08:00   ❤️ 1
    刚看的这个页面, 一提交变页面了 = =

    试试 github.com/txthinking/mr2
    wdom
        66
    wdom  
       2019-07-17 14:43:15 +08:00   ❤️ 1
    这里列举了一些比较好用的开源的内网穿透工具,详细介绍一下各个软件工具的特点:

    1. frp
    FRP 功能完整,主要采用 GO 语言实现,重量级的工具,服务端界面样式风格一般。
    配置繁琐,不同的协议需要配置不同的参数,采用文件存放数据,不支持数据库管理数据。

    2. holer
    轻量级的内网穿透工具,holer 服务端采用 Java 语言实现,服务端界面漂亮简洁。
    Holer 客户端采用了 Java 语言和 GO 语言实现了两种版本,支持几乎所有的 OS 平台。
    用到流行的微服务框架 springboot 和 Java 网络框架 netty。
    配置很简单,针对所有 TCP 协议只需在客户端设置一个 holer access key 即可。
    采用 MySQL 数据库统一管理数据。

    3. nps
    轻量级的内网穿透工具,完全采用 GO 语言实现,服务端界面漂亮简洁。
    支持的协议最广泛,配置稍简单,采用文件存放数据,不支持数据库管理数据。

    4. lanproxy
    轻量级的内网穿透工具,客户端采用 GO 语言和 Java 语言实现两种版本,采用了 Java 网络框架 netty,服务端界面体验较差。
    配置稍繁琐,采用文件存放数据,不支持数据库管理数据。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3009 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:13 · PVG 22:13 · LAX 06:13 · JFK 09:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.