V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
maskerTUI
V2EX  ›  问与答

有没有稳定的网络穿透方案?

  •  
  •   maskerTUI · 2015-11-24 10:13:54 +08:00 · 13736 次点击
    这是一个创建于 3066 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需求:从校外访问校内的一个网站。
    没有学校的路由权限,所以做不了 dmz,vpn 之类的。
    现在用着 ngrok,但是在人数多的时候很容易断,稳定性不尽人意。
    问问 V 友有没有稳定的穿透 /建隧道的方案?
    求轮子
    第 1 条附言  ·  2015-11-24 12:47:07 +08:00
    补充一下网络环境的情况: a,b,c,d 四台电脑, a,b 为校内局域网的, a 是不接外网的目标网站, b 是校内接了外网的电脑(windows), c 是有公网 ip 的一台 vps , d 是我,我(d)想通过访问 c 的时候就能直接访问到 a 的网站,求这样的一样轮子,最好 d 是不需要借助客户端的,因为我还要把这个通道发布给熟悉的人用。
    目前使用的方案, b 用 ngrok 把 a 的 80 端口映射到 c 去。缺点:不稳定。
    53 条回复    2017-05-26 16:14:16 +08:00
    TuxcraFt
        1
    TuxcraFt  
       2015-11-24 10:31:54 +08:00
    找一个校内的肉鸡…… (逃
    Sullivan
        2
    Sullivan  
       2015-11-24 10:34:52 +08:00
    同样需求+1
    Sullivan
        3
    Sullivan  
       2015-11-24 10:37:32 +08:00
    不知道 能不能 有 ssh 那样的反向连接没有。
    maskerTUI
        4
    maskerTUI  
    OP
       2015-11-24 10:38:01 +08:00
    @TuxcraFt 这个......我就算搞下来学校的某台肉鸡也不敢公开啊,我还没毕业呢
    maskerTUI
        5
    maskerTUI  
    OP
       2015-11-24 10:47:58 +08:00
    @Sullivan 内网的跳板是个 windows ,用不了 ssh 。
    Sullivan
        6
    Sullivan  
       2015-11-24 10:49:49 +08:00
    @maskerTUI 昂,我是说类似的工具~
    maskerTUI
        7
    maskerTUI  
    OP
       2015-11-24 11:04:27 +08:00
    @Sullivan 目前找到的一些方案都一般般,花生壳限制太多,狗洞要两端安装客户端, ssh 需要 linux , teamviewer vpn 要客户端,看来是要逼自己造轮子的节奏。
    odirus
        8
    odirus  
       2015-11-24 11:12:20 +08:00
    @maskerTUI 请问花生壳能为内网主机提供一个在外网可以访问的域名么,并且可以访问该域名(内网主机)的非 80 端口?
    loveyu
        9
    loveyu  
       2015-11-24 11:13:38 +08:00
    之前用 ngork ,后来不行了
    odirus
        10
    odirus  
       2015-11-24 11:13:50 +08:00
    @maskerTUI 如果你能访问内网主机的某个端口,也许我能帮到你
    comicfans44
        11
    comicfans44  
       2015-11-24 11:17:02 +08:00
    n2n
    maskerTUI
        12
    maskerTUI  
    OP
       2015-11-24 11:30:14 +08:00 via Android
    @odirus 有内网主机,求轮子
    GeekTest
        13
    GeekTest  
       2015-11-24 11:30:31 +08:00 via Android
    就没人用 vpn 么。 anyconnect 挺稳定 shadowvpn 也不错
    maskerTUI
        14
    maskerTUI  
    OP
       2015-11-24 11:32:17 +08:00 via Android
    @odirus 有内网机子,但是没有映射到公网的
    odirus
        15
    odirus  
       2015-11-24 11:34:23 +08:00
    @maskerTUI 别着急,我在实验
    odirus
        16
    odirus  
       2015-11-24 11:35:13 +08:00
    @maskerTUI 你内网有机子,外网有机子的话就好办了。
    maskerTUI
        17
    maskerTUI  
    OP
       2015-11-24 11:36:32 +08:00 via Android
    @odirus 可以提供一个二级域名,非 80 好像也可以,不知道有限制,有些还是收费的。
    maskerTUI
        18
    maskerTUI  
    OP
       2015-11-24 11:38:06 +08:00 via Android
    @odirus 外网机子可以用 vps 这个不是问题
    odirus
        19
    odirus  
       2015-11-24 11:46:08 +08:00   ❤️ 1
    @maskerTUI 好吧,大概过程就是:
    ( 1 )内网的 Windows 安装一个 docker ,基于 linux 制作一个镜像,里面安装一个 HTTP 代理服务,假设开放的是 8080 端口
    ( 2 )同时使用 SSH 反向代理连接至你的 VPS ,"ssh -R 18080:localhost:8080 user@vps",大意是把内网主机的 8080 端口映射到 VPS 中的 localhost:18080 。
    ( 3 )再在 VPS 上安装一个 HTTP 代理服务,请求流量都转发至 localhost:18080
    ( 4 )在你自己的机器上填上 HTTP 代理信息,然后上网。

    当然中间很多细节可以优化
    ( 1 )比如不安装 HTTP 服务,可以安装一个 SS 服务,这样的话,国内 VPS 不用备案,因为不使用 HTTP 流量,而阿里云学生优惠还是比较大。
    ( 2 ) HTTP 服务在投入使用的时候一定要加密,因为总有人来爬你的代理信息。

    如果你不会制作 docker 镜像的话,可以留言,我可以做一个完整的教程。
    vs506
        20
    vs506  
       2015-11-24 11:55:05 +08:00
    yexm0
        21
    yexm0  
       2015-11-24 12:17:11 +08:00 via Android
    花生壳能为内网主机提供一个在外网可以访问的域名,不过价格真贵。
    imlonghao
        22
    imlonghao  
       2015-11-24 12:25:42 +08:00
    maskerTUI
        23
    maskerTUI  
    OP
       2015-11-24 12:27:28 +08:00
    @vs506 看了一下说明:
    免费用户(已到期用户)限速 10KB/s,可添加 3 个映射,映射 8 小时后失效需重新登录新建.
    付费用户不限速度,最快 1280KB/s,可添加 10 个映射,在 VIP 期间不会失效.
    还不如我自己搭建的 ngrok 服务呢
    Sullivan
        24
    Sullivan  
       2015-11-24 12:27:34 +08:00
    @maskerTUI 我的 想法是 能不能 借助 有外网 IP 的 vps 中转一下,让内网主动连接 vps 映射端口。
    maskerTUI
        25
    maskerTUI  
    OP
       2015-11-24 12:32:01 +08:00
    @odirus 校内能联网的那台主机环境需要 windows ,而且它本身已经是个虚拟机(vmware,1 核, 512m 内存)了,所以不能再做虚拟化了。这个 ssh 反向之前考虑过的,不过条件不符合所以做不了。
    maskerTUI
        26
    maskerTUI  
    OP
       2015-11-24 12:35:13 +08:00
    @imlonghao 目前就是用着 ngrok ,不过稳定性不怎么好
    harry890829
        27
    harry890829  
       2015-11-24 12:36:11 +08:00
    我们这边是服务器外网客户端内网的解决办法,和你这个还不一样,你是双内网啊,花生壳?
    maskerTUI
        28
    maskerTUI  
    OP
       2015-11-24 12:36:35 +08:00
    @Sullivan 我也是这样想的,不过缺具体的方案
    Sullivan
        29
    Sullivan  
       2015-11-24 12:40:22 +08:00
    @maskerTUI 试过 自己搭建 ngrok 么? 自己搭建的也不稳定吗? 我这的内网主机也是 win 的 但是是 物理机,非虚拟机,能够访问外网(之前被用来做个 绕过上网验证的跳板),快毕业了,也想继续享用校内资源~
    xmoiduts
        30
    xmoiduts  
       2015-11-24 12:42:00 +08:00
    试过 ssserver ,能接到外网发来的请求,外网连不了校内的网。
    odirus
        31
    odirus  
       2015-11-24 12:51:31 +08:00
    @maskerTUI 你的配置其实够了,你可以通过这个平台( daocloud )在你的 Windows 上面安装一个 docker ,目的是能够随时管理(启动、重启等)你的所有容器。

    PS :我自己也是没有实体机的,我也是在虚拟机里面虚拟的东西,你自己试试吧。
    datocp
        32
    datocp  
       2015-11-24 12:52:58 +08:00   ❤️ 2
    vps 上的客户端
    socat -d -d -d tcp-l:80,reuseaddr,bind=0.0.0.0,fork tcp-l:8080,bind=0.0.0.0,reuseaddr,retry=10
    只有在 tcp 80 端口有请求时才会生成侦听 tcp 8080 端口。

    lan 内的服务器端
    socat -d -d -d -v tcp:vpsip:8080,forever,intervall=10,fork tcp:localhost:80
    将 lan 内的电脑不断尝试连接 vps 的 tcp 8080 端口,当连接成功后台会连到 localhost 提供的 tcp 80 端口应用。
    maskerTUI
        33
    maskerTUI  
    OP
       2015-11-24 12:55:22 +08:00
    @Sullivan ngrok 在人多的时候很不稳定,我试过很多次了,试过用洛杉矶,日本,香港,广州的服务器分别搭建 ngrok 服务,测试结果大概是 ngrok 一个映射最多承受十多个人同时访问,我现在都要设定定时任务检查 ngrok 有没有崩了。
    maskerTUI
        34
    maskerTUI  
    OP
       2015-11-24 12:57:55 +08:00
    @comicfans44 n2n 似乎只是把连接的电脑形成一个局域网,这个并不符合条件呀。
    mrliusg
        35
    mrliusg  
       2015-11-24 13:26:32 +08:00
    https://github.com/localtunnel 同样的情况,用 localtunnel 已经稳定运行多个月,需要守护进程
    vh2h
        36
    vh2h  
       2015-11-24 13:29:34 +08:00 via Android
    不用 vps 了,直接在 b 上装个 ss 的 win 服务端不行吗?想用的话装个 ss 客户端就行了,反正是轻量级的东西。
    comicfans44
        37
    comicfans44  
       2015-11-24 14:57:40 +08:00
    使用 n2n 默认工作模式是连接成局域网(不收发其他网卡的包),但是也可以与其他网卡互联,就像真实网卡一样(-r Enable packet forwarding through n2n community )。
    鉴于你后面描述的这种使用场景, n2n 可能比较麻烦, abcd 可以这样操作:
    机器 b 上运行 ssh 客户端(xshell 什么的)连接 vps (c)并打开反向代理,远程端口(在 vps 上监听)就是 d 访问 c 的端口,本地端口转发到 a 的 web 端口即可,这样只需要 b 上运行一个 ssh 客户端即可
    maskerTUI
        38
    maskerTUI  
    OP
       2015-11-24 15:12:17 +08:00
    @vh2h b 是局域网的机子
    maskerTUI
        39
    maskerTUI  
    OP
       2015-11-24 15:12:55 +08:00
    @datocp 这是个方法,谢谢
    msg7086
        40
    msg7086  
       2015-11-24 15:40:07 +08:00 via Android
    你们确定 windows 上不能运行 ssh ?
    chineselittleboy
        41
    chineselittleboy  
       2015-11-24 16:00:08 +08:00
    @odirus 求教程
    ultimate010
        42
    ultimate010  
       2015-11-24 16:15:36 +08:00
    自己阿里云搭建的 ngrok ,效果好。
    kyze8439690
        43
    kyze8439690  
       2015-11-24 16:33:23 +08:00
    ngrok 是开源的啊,找一台国内的 vps ,运行 ngrok ,只是要花流量费。
    zonghua
        44
    zonghua  
       2015-11-24 17:23:14 +08:00   ❤️ 2
    @kyze8439690
    ququ 的新玩具, node.js 实现的内网穿透

    https://imququ.com/post/web-proxy.html
    popu111
        45
    popu111  
       2015-11-24 17:33:52 +08:00 via Android
    要搞 VPN 的话论 softether VPN azure 的好用之处。
    maskerTUI
        46
    maskerTUI  
    OP
       2015-11-24 18:51:25 +08:00
    @zonghua 谢谢,这个不错
    xierch
        47
    xierch  
       2015-11-24 21:28:15 +08:00
    Windows 也可以用 ssh -R 啦..
    可以用 PuTTY 的 Plink ,也可以用 Cygwin 的 ssh
    vibbow
        48
    vibbow  
       2015-11-25 09:49:33 +08:00
    @maskerTUI ssh server 和 ssh client 在 windows 下也都有的啊。
    lovedboy
        49
    lovedboy  
       2016-02-29 22:44:28 +08:00
    flynaj
        50
    flynaj  
       2016-07-10 13:05:55 +08:00
    @maskerTUI windows 下的 ssh 服务端跟客户端,支持流量混淆, https://www.bitvise.com/getting-started
    binaryer
        51
    binaryer  
       2016-09-09 11:21:42 +08:00
    https://vpip.net/?from=v2ex

    轻量级内网穿透工具,直接转发 ip 包
    FW36
        52
    FW36  
       2017-02-24 23:24:17 +08:00
    http://blog.csdn.net/u014762921/article/details/50976130?locationNum=2&fps=1 包你满意,我是成功,需要一台 VPS 中继。
    lijy0717
        53
    lijy0717  
       2017-05-26 16:14:16 +08:00
    现在应该可以用 kcptun 了吧. 速度是没问题的. 问题在于 ISP 会封杀你的 udp 流量.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   948 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 20:58 · PVG 04:58 · LAX 13:58 · JFK 16:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.