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

Brook 工作原理

  •  4
     
  •   thisismr2 · 2021-12-28 08:55:43 +08:00 · 4566 次点击
    这是一个创建于 1059 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://talks.txthinking.com/articles/brook.article

    • 概述
    • Brook CLI 就是一个文件
    • Brook 协议设计
    • CLI: brook server 和 brook client 工作原理
    • CLI: brook wsserver 和 brook wsclient 工作原理
    • CLI: brook wssserver 和 brook wssclient 工作原理
    • CLI: brook relay 工作原理
    • CLI: brook relayoverbrook 工作原理
    • CLI: brook dns 原理
    • CLI: brook tproxy 原理
    • CLI: brook socks5tohttp 原理
    • GUI: macOS 图形客户端 proxy 模式, Windows 图形客户端 proxy 模式
    • GUI: macOS 图形客户端 tun 模式, Windows 图形客户端 tun 模式, iOS 图形客户端, Android 图形客户端
    • 数据流向
    • Fake DNS
    • Block 屏蔽广告
    • Brook 图形客户端导入服务器列表

    https://talks.txthinking.com/articles/brook.article

    第 1 条附言  ·  2021-12-28 09:33:19 +08:00
    and 规则
    24 条回复    2022-01-07 15:59:52 +08:00
    zuosiruan
        1
    zuosiruan  
       2021-12-28 09:25:21 +08:00
    大佬一个人全端都包了,点个赞先
    ToBeHacker
        2
    ToBeHacker  
       2021-12-28 09:33:29 +08:00
    开源嘛
    thisismr2
        3
    thisismr2  
    OP
       2021-12-28 09:42:51 +08:00
    @zuosiruan :) 也不全是,有几个 GUI 端的部分功能有朋友工作之余在帮忙维护
    gesse
        4
    gesse  
       2021-12-28 10:25:33 +08:00
    用了几次没有用了。
    66beta
        5
    66beta  
       2021-12-28 10:30:54 +08:00
    配合 GCP 用过,后来没再用了
    thisismr2
        6
    thisismr2  
    OP
       2021-12-28 10:59:18 +08:00
    @66beta @gesse :) 有改善建议也可以不吝提提
    gesse
        7
    gesse  
       2021-12-28 11:12:03 +08:00
    @thisismr2
    不支持 ipset
    thisismr2
        8
    thisismr2  
    OP
       2021-12-28 11:34:20 +08:00
    tproxy 吗,支持啊,可以禁用内置的 iptables 脚本 --doNotRunScripts ,完全自己写 iptables:
    https://github.com/txthinking/brook/issues/198#issuecomment-374090878
    thisismr2
        9
    thisismr2  
    OP
       2021-12-28 11:41:20 +08:00
    且据有限的测试,因为网上大部分都是在 nat 表,brook 在 mangle 表,可以不用 iptables 匹配那么长的规则,所以可以不用添加成千上万行的 iptables 记录,tproxy 直接在内存里处理规则更有效
    thisismr2
        10
    thisismr2  
    OP
       2021-12-28 11:46:24 +08:00
    #9
    因为原生支持 udp, 所以即使自己写 iptables mangle 表也更简单了
    https://github.com/txthinking/brook/blob/master/tproxy_linux.go#L181-L229
    thisismr2
        11
    thisismr2  
    OP
       2021-12-28 12:19:47 +08:00
    总结性解释是 因为 brook tproxy 原生支持 udp 和 tcp ,也支持 iptables mangle 表,就让使用者可以写更简单的 iptables 就可以了,也给了用户两种选择,
    可以用 iptables (自己也可选择 iptables 是否使用 ipset)
    也可以直接在 brook tproxy 层做
    cat9life
        12
    cat9life  
       2021-12-28 14:49:11 +08:00
    Brook 用在番羽已经被针对了
    thisismr2
        13
    thisismr2  
    OP
       2021-12-28 15:16:52 +08:00
    @cat9life 结论有些不严谨, 可以看这篇协议比较
    shunia
        14
    shunia  
       2021-12-28 15:58:53 +08:00
    刚试了一下,0 配置我个人觉得真的挺好的,但是还是觉得服务器端有配置文件更好一点,方便需要重启的情况。
    另外也希望客户端可以做到故障自动转移,因为日常使用过程中真的是经常遇到断线等情况,有时候甚至分不清是设备的网断了,还是服务不可达,就很难受。
    shunia
        15
    shunia  
       2021-12-28 16:01:02 +08:00
    @shunia #14 再一个就是还是想要更有竞争力的客户端产品,目前的客户端似乎缺乏比较方便的自定义能力。我日常使用 cfw 都已经做到 mixin+parser 了,不用的时候觉得这些功能可能多余,需要用的时候还挺击中痛点的。
    thisismr2
        16
    thisismr2  
    OP
       2021-12-28 16:16:32 +08:00 via iPhone
    #14
    恩,目前重启可以搭配 joker ,不过还是输入了全命令,不过也可以写个 sh 脚本。
    故障转移是指 有多个节点 当前节点有故障了就尝试其他节点吗 有点类似复杂均衡
    thisismr2
        17
    thisismr2  
    OP
       2021-12-28 16:26:20 +08:00 via iPhone
    #15 大部分功能其实都差不多,只是名字说明不同
    正在考虑 parser 类的,修改包的功能,看看过年的空闲时间
    thisismr2
        18
    thisismr2  
    OP
       2021-12-28 16:34:05 +08:00 via iPhone
    大家可以提一些现在没有的功能 (包括其他软件付费才提供的功能)
    MeiJiayun
        19
    MeiJiayun  
       2021-12-28 18:38:29 +08:00 via iPhone
    用了半年多,支持下
    w1287928345
        20
    w1287928345  
       2021-12-28 23:20:40 +08:00 via iPhone
    Brook 和 WireGuard 很早就出来了,就是不知道为啥没能流行起来?
    X_Del
        21
    X_Del  
       2021-12-29 22:04:45 +08:00
    @thisismr2 可以让 Clash 兼容 Brook 协议就好了,也可以利用上 Clash 丰富的规则 / 客户端生态(这个需求应该是 Clash 的),或者也可以反过来参考 Clash ,看看一个好的上网工具还需要什么功能。

    Brook 除了协议本身之外,比较出彩的点是可以单文件解决透明代理的问题。阻止 Brook 被商业机场广泛使用的主要原因其实就是缺乏配置文件 + 配置文件订阅,不好给末端用户分发。
    MeiJiayun
        22
    MeiJiayun  
       2022-01-06 09:04:05 +08:00 via iPhone
    麻烦大佬帮适配 m1 苹果电脑,现在除了 brook ,其他自用 app 都兼容了 m1
    thisismr2
        23
    thisismr2  
    OP
       2022-01-06 10:54:13 +08:00 via iPhone
    @MeiJiayun 应该可以直接在 m1 上的 app store 里直接搜索安装吧
    MeiJiayun
        24
    MeiJiayun  
       2022-01-07 15:59:52 +08:00
    @thisismr2 好的,谢谢提醒,已经通过使用 ios 版 app 来兼容 m1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1071 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:03 · PVG 03:03 · LAX 11:03 · JFK 14:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.