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

是否有基于 WebSocket 的路径的『动态端口转发』软件?

  •  
  •   MFWT · 310 天前 · 1103 次点击
    这是一个创建于 310 天前的主题,其中的信息可能已经有所发展或是发生改变。

    详细说明

    我设想中的是:

    1. 软件固定监听一个端口,使用 WebSocket 协议
    2. 接收到连接请求后,解析路径,比如考虑以下三个情况:
    /something_like_password/1145
    /something_like_password/1919
    /not_password/810
    

    第一条和第二条,路径第一部分是正确的(当作简单鉴权用),就解析第二部分,得到的数字就作为端口号,也就是说 WebSocket 连接建立后,数据分别被软件转发到本机的 1145 和 1919 端口(并建立 TCP 双向连接)

    第三条,『密码』对不上(包括其他非法路径格式),不予连接

    在网上找了找,似乎没有成品实现的,不知道是我找的方法不对还是真的没有?

    8 条回复    2023-06-25 12:31:10 +08:00
    momocraft
        1
    momocraft  
       310 天前
    要求这么具体自己写啦
    opengps
        2
    opengps  
       310 天前
    这种需求与主流防御方案不符合(主流的防火墙不会这么随意的开放端口),所以要这么明确的用法,那就需要匹配自研的软件了,而且不能有防火墙规则阻拦
    1423
        3
    1423  
       310 天前
    拿 gost 改,写过 go 的话一天基本可以搞定
    huahsiung
        4
    huahsiung  
       310 天前
    这玩意不是 nginx location 不就行了吗?

    location /something_like_password/1145 {
    ....
    }


    location /something_like_password/1919 {
    ....
    }

    location / { #未匹配成功,默认匹配
    return 444; #444 为 nginx 的默认断开,不发送任何数据
    }
    MFWT
        5
    MFWT  
    OP
       310 天前
    @huahsiung
    问题是,我的需求是端口不固定的,总不可能 1024-65535 都加上罢
    huahsiung
        6
    huahsiung  
       310 天前
    @MFWT
    不是可以用模糊匹配前辍?

    location ~ /something_like_password {
    ...
    }

    然后把$url 切出来。

    nginx 里面有一个变量$url ,就是代表当前 url ,https://web.com/something_like_password/1145

    可以写一个 lua
    MFWT
        7
    MFWT  
    OP
       310 天前
    @huahsiung 我去看看吧
    xuanbg
        8
    xuanbg  
       307 天前
    为何不固定端口?我去年也被人带坑里去,要求给每个群一个特定端口。最后遗留的问题就是没法做反向代理,端口也容易被垃圾数据包攻击。前一阵子回过神来,改成一个固定端口,然后加上身份认证,就是客户端创建链接的时候带两个 url 参数。现在用起来好得很。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   914 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:03 · PVG 04:03 · LAX 13:03 · JFK 16:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.