本文介绍一下 brook link
https://txthinking.github.io/brook/protocol/brook-link-protocol.html
我们知道 brook 支持创建 brook server, brook wsserver, brook wssserver, brook socks5, 以及未来可能会支持的新的类型。
一般情况下,在客户端使用时只需要输入两个概念,Server 和 Password,比如
brook server
1.2.3.4:9999
password
brook wsserver
ws://1.2.3.4:9999
password
brook wssserver
wss://domain.com:443
password
brook socks5 需要输入一个概念或三个概念,这个是由 socks5 协议标准决定的,只能遵守
1.2.3.4:1080
或
1.2.3.4:1080
username
password
这个设计的出发点是,因为对于普通用户来说,普遍已经熟悉的登录操作,一般就是两个概念,用户名或等价的东西,和,密码。
最一开始只有 brook server,其 Server 类似这样 1.2.3.4:9999,看起来其实比较整洁干净。后来增加了 wsserver 和 wssserver 也顺势保留了个设计理念,并且把其表层协议放到了 Server 上,类似 ws://1.2.3.4:9999,wss://domain.com:443。
对于喜欢研究的同学,可能知道,brook server, brook wsserver, brook wssserver 都分别有高阶用法,大部分用户可能用不到,这些高阶用法就是由 brook link 来支持的。
比如 brook server
--udpovertcp 可以指定UDP over TCP
--name 图形客户端展示的名字
举例
brook link -s 1.2.3.4:9999 -p hello --name MyName
比如 brook wsserver
--address 可以指定IP,比如有同学用来指定 cloudfare 的IP
--name 图形客户端展示的名字
举例
brook link -s ws://1.2.3.4:9999 -p hello --name MyName
比如 brook wssserver
--address 可以指定IP,比如有同学用来指定 cloudfare 的IP
--insecure 可以客户端不验证 Server 的证书
--withoutBrookProtocol 可以指定内容不使用 brook 协议加密,当然需要 Server 端配合
--ca 指定 CA 证书,当然需要 Server 端配合
--name 图形客户端展示的名字
举例
brook link -s wss://domain.com:443 -p hello --name MyName
具体可以查看文档中的事例
https://txthinking.github.io/brook/
也可以通过 brook link --help 查看
善用 brook --help 以及 brook xxx --help 其实是会节省你的时间的,比如即使是作为作者,我也记不住那么多参数,所以我每次输入命令或子命令的时候,一个 --help 就会让我知道想输入什么了。
brook link -s socks5://1.2.3.4:1080
或者需要认证的 socks5
brook link -s socks5://1.2.3.4:1080 --username hello --password hello
因为有特殊符号,注意需要用引号括起来
brook tproxy --link "brook://..."
brook connect --link "brook://..."
brook testbrook --link "brook://..."
tun2brook --link "brook://..."
Brook 图形客户端
其实 shell 有一个用法,小引号的输出直接作为命令的一部分,比如我们要测试一个 brook server
1.2.3.4:9999
password
brook testbrook `brook link -s 1.2.3.4:9999 -p password`