クロスプラットフォームでプログラム可能なネットワーク ツール。
❤️ Shiliew - 自分の時間を大切にする人のために設計されたネットワーク アプリ
bash <(curl https://bash.ooo/nami.sh)
nami install brook
brook server -l :9999 -p hello
brook link
使用していくつかのパラメータをカスタマイズすることもできます。
Brook GUI は、異なるタイミングで異なるグローバル変数をスクリプトに渡します。スクリプトは処理結果をグローバル変数out
に割り当てるだけで済みます。
GUI クライアントについて説明する前に、まずコマンド ライン クライアントbrook
について説明します。ご存知のとおり、サーバーをデプロイした後、コマンド ライン クライアントbrook
使用してマシン上にローカルの Socks5 プロキシまたは http プロキシを作成し、システム プロキシ設定またはブラウザでこのプロキシを使用するように構成できます。しかし:
Socks5 と http プロキシの詳細については、この記事を参照してください。
GUI クライアントは、socks5 および http プロキシ モードを使用しないため、システム プロキシを使用しない一部のソフトウェアには問題はありません。代わりに、仮想ネットワーク カードを使用して、UDP ベースの http3 を含むシステム全体のネットワークを引き継ぎます。さらに、Brook を使用するとネットワーク リクエストをプログラムで制御できるため、ネットワーク リクエストに関する基本的な知識が必要になります。
注: アドレスについて話すときは、ドメイン アドレス:
google.com:443
や IP アドレス:8.8.8.8:53
など、ポート番号を含むアドレスを意味します。
google.com:443
など) をリクエストする場合8.8.8.8:53
などのシステム構成の DNS にネットワーク リクエストを送信して、 google.com
の IP を問い合わせることを意味します。google.com
の IP 1.2.3.4
など) をアプリに返します。1.2.3.4:443
など)。1.2.3.4:443
にネットワーク要求を行います。上記のプロセスでは、アプリは実際に 2 つのネットワーク リクエストを作成します。1 つは IP アドレス8.8.8.8:53
に対して、もう 1 つは IP アドレス1.2.3.4:443
に対してです。つまり、ドメイン名は本質的に IP のエイリアスであり、接続を確立するにはドメインの IP を取得する必要があります。
Brook には Fake DNS 機能があり、アプリがシステム DNS に送信するクエリ リクエストからドメイン名を解析し、アプリへの応答方法を決定できます。
google.com:443
などのドメイン名アドレスをリクエストする場合8.8.8.8:53
などのシステム構成の DNS にネットワーク リクエストを送信して、 google.com
の IP を問い合わせます。8.8.8.8:53
に送信していることを検出します。これにより、 domain
などの情報を伝えるin_dnsquery
変数がトリガーされます。240.0.0.1
などの偽の IP をアプリに返します。240.0.0.1:443
240.0.0.1:443
に対してネットワーク リクエストを行います。240.0.0.1:443
に送信していることを検出し、これが偽の IP であることを発見し、偽の IP アドレスをドメイン アドレスgoogle.com:443
に変換します。これにより、 in_address
変数がトリガーされ、 domainaddress
などの情報が伝達されます。google.com:443
を Brook サーバーに送信しますgoogle.com
の IP を見つけるように要求します1.2.3.4
受信するなど)。1.2.3.4:443
。1.2.3.4:443
に送信し、データを Brook クライアントに返します。ただし、次の状況が発生した場合、ドメイン名は解析されない、または解析できません。つまり、Brook クライアントはドメイン名が何であるかを認識できず、IP アドレスに送信される通常のリクエストとして処理されます。
Fake DNS の無効性を回避するには、この記事を参照してください。
google.com:443
など) をリクエストする場合8.8.8.8:53
などのシステム構成の DNS にネットワーク リクエストを送信して、 google.com
の IP を問い合わせます。8.8.8.8:53
に送信していることを検出します。これにより、 in_address
変数がトリガーされ、 ipaddress
などの情報が伝達されます。8.8.8.8:53
Brook サーバーに送信します8.8.8.8:53
に送信し、 1.2.3.4
などの結果を Brook クライアントに返します。1.2.3.4:443
など)。1.2.3.4:443
にネットワーク リクエストを送信します。1.2.3.4:443
に送信していることを検出します。これにより、 in_address
変数がトリガーされ、 ipaddress
などの情報が伝達されます。1.2.3.4:443
Brook サーバーに送信します1.2.3.4:443
に送信し、データを Brook クライアントに返します。google.com:443
などのドメイン名アドレスをリクエストする場合8.8.8.8:443
などのセキュア DNS にネットワーク リクエストを送信して、 google.com
の IP を問い合わせます。8.8.8.8:443
に送信していることを検出します。これにより、 in_address
変数がトリガーされ、 ipaddress
などの情報が伝達されます。8.8.8.8:443
Brook サーバーに送信します8.8.8.8:443
に送信し、 1.2.3.4
などの結果を Brook クライアントに返します。1.2.3.4:443
など)。1.2.3.4:443
にネットワーク リクエストを送信します。1.2.3.4:443
に送信していることを検出します。これにより、 in_address
変数がトリガーされ、 ipaddress
などの情報が伝達されます。1.2.3.4:443
Brook サーバーに送信します1.2.3.4:443
に送信し、データを Brook クライアントに返します。Fake DNS の無効性を回避するには、この記事を参照してください。
in_brooklinks
変数がトリガーされると、次のようになります。in_dnsquery
変数がトリガーされると、必要に応じて次のような処理を行うことができます。in_address
変数がトリガーされると、必要に応じて次のような処理を行うことができます。in_httprequest
とin_httpresponse
がトリガーされます。in_httprequest
変数がトリガーされると、必要に応じて次のような処理を行うことができます。in_httpresponse
変数がトリガーされると、必要に応じて次のような処理を行うことができます。変数のプロパティと応答の詳細については、次のコンテンツを参照してください。
変数 | タイプ | 状態 | タイミング | 説明 | アウトタイプ |
---|---|---|---|---|---|
in_brooklinks | 地図 | / | 接続する前に | 複数のブルック リンクを事前定義し、どのリンクに接続するかをプログラムで指定します | 地図 |
in_dnsquery | 地図 | FakeDNS: オン | DNSクエリが発生した場合 | スクリプトはこのリクエストの処理方法を決定できます | 地図 |
in_address | 地図 | / | アドレスに接続する場合 | スクリプトは接続方法を決定できます | 地図 |
in_httprequest | 地図 | / | HTTP(S)リクエストが来たとき | スクリプトはこのリクエストを処理する方法を決定できます | 地図 |
in_httprequest、in_httpresponse | 地図 | / | HTTP(S) レスポンスが来たとき | スクリプトはこの応答を処理する方法を決定できます | 地図 |
鍵 | タイプ | 説明 | 例 |
---|---|---|---|
_ | ブール | 意味のない | 真実 |
out
、 map
型でない場合は無視されます
鍵 | タイプ | 説明 | 例 |
---|---|---|---|
... | ... | ... | ... |
カスタム名 | 弦 | ブルックリンク | 小川://... |
... | ... | ... | ... |
鍵 | タイプ | 説明 | 例 |
---|---|---|---|
ドメイン | 弦 | ドメイン名 | google.com |
タイプ | 弦 | クエリの種類 | あ |
アプリケーション | 弦 | アプリIDまたはパス | com.google.Chrome.helper |
インタフェース | 弦 | ネットワークインターフェース。 Macのみ | en0 |
out
、 error
タイプの場合はログに記録されます。タイプmap
でない場合は無視されます
鍵 | タイプ | 説明 | 例 |
---|---|---|---|
ブロック | ブール | ブロックするかどうか、デフォルトはfalse | 間違い |
ip | 弦 | IP を直接指定します。 type がA / AAAA の場合のみ有効です | 1.2.3.4 |
システム | ブール | システム DNS によって解決、デフォルトはfalse | 間違い |
バイパス | ブール | DNS をバイパスして解決します (デフォルトはfalse | 間違い |
ブルックリンクキー | 弦 | サーバーに接続する必要がある場合は、代わりに、in_brooklinks のキーで指定されたサーバーに接続します。 | カスタム名 |
鍵 | タイプ | 説明 | 例 |
---|---|---|---|
ネットワーク | 弦 | ネットワークの種類、値はtcp / udp | tcp |
IPアドレス | 弦 | IP タイプのアドレス。 IPアドレスとドメインアドレスのみです。この二つの間には何の関係もないことに注意してください | 1.2.3.4:443 |
ドメインアドレス | 弦 | ドメイン タイプ アドレス。FakeDNS があるため、ここでドメイン名アドレスを取得できます。 | グーグル.com:443 |
アプリケーション | 弦 | アプリIDまたはパス | com.google.Chrome.helper |
インタフェース | 弦 | ネットワークインターフェース。 Macのみ | en0 |
out
、 error
タイプの場合はログに記録されます。タイプmap
でない場合は無視されます
鍵 | タイプ | 説明 | 例 |
---|---|---|---|
ブロック | ブール | ブロックするかどうか、デフォルトはfalse | 間違い |
IPアドレス | 弦 | IPタイプアドレス、書き換え先 | 1.2.3.4:443 |
バイパスDNSからのipaddress | 弦 | Bypass DNS を使用してA またはAAAA IP を取得し、宛先を書き換えます。 domainaddress が存在する場合にのみ有効で、値はA / AAAA | あ |
バイパス | ブール | バイパス、デフォルトはfalse 。 true かつdomainaddress の場合、 ipaddress またはipaddressfrombypassdns を指定する必要があります | 間違い |
ミットム | ブール | MITM を実行するかどうか。デフォルトはfalse 。 network がtcp の場合にのみ有効です。 CA をインストールする必要があります。以下を参照してください。 | 間違い |
ミットプロトコル | 弦 | MITM プロトコルは明示的に指定する必要があります。値はhttp / https です。 | https |
mitmcertdomain | 弦 | MITM 証明書のドメイン名。デフォルトではdomainaddress から取得されます。 ipaddress とmitm がtrue で、 mitmprotocol がhttps 場合は、明示的に指定する必要があります。 | 例.com |
ミットウィズボディ | ブール | http 本文を操作するかどうか。デフォルトはfalse 。リクエストとレスポンスの本文をメモリに読み取り、スクリプトと対話します。 iOS の合計メモリ 50M 制限によりプロセスが強制終了される可能性がある | 間違い |
ミットマオートハンドル圧縮 | ブール | スクリプトを操作するときに http 本文を自動的に解凍するかどうか。デフォルトはfalse | 間違い |
mitmclienttimeout | 整数 | サーバーとの MITM 通信のタイムアウト、秒、デフォルト 0 | 0 |
mitmserverreadtimeout | 整数 | クライアントからの MITM 読み取りのタイムアウト、秒、デフォルトは 0 | 0 |
mitmserverwritetimeout | 整数 | クライアントへの MITM 書き込みのタイムアウト、秒、デフォルト 0 | 0 |
ブルックリンクキー | 弦 | サーバーに接続する必要がある場合は、代わりに、in_brooklinks のキーで指定されたサーバーに接続します。 | カスタム名 |
鍵 | タイプ | 説明 | 例 |
---|---|---|---|
URL | 弦 | URL | https://example.com/hello |
方法 | 弦 | HTTPメソッド | 得る |
体 | バイト | HTTPリクエストボディ | / |
... | 弦 | 他のフィールドは HTTP ヘッダーです | / |
out
、リクエストまたはレスポンスに設定する必要があります
鍵 | タイプ | 説明 | 例 |
---|---|---|---|
ステータスコード | 整数 | HTTPステータスコード | 200 |
体 | バイト | HTTPレスポンスボディ | / |
... | 弦 | 他のフィールドは HTTP ヘッダーです | / |
out
、応答に設定する必要があります
Brook GUI では、スクリプトはModulesに抽象化されます。すでにいくつかのモジュールがあり、魔法のようなものはなく、_header.tengo と _footer.tengo を自動的に結合するだけなので、モジュール自体を記述するだけで済みます。
modules = append(modules, {
// If you want to predefine multiple brook links, and then programmatically specify which one to connect to, then define `brooklinks` key a function
brooklinks: func(m) {
// Please refer to the example in `brooklinks.tengo`
},
// If you want to intercept and handle a DNS query, then define `dnsquery` key a function, `m` is the `in_dnsquery`
dnsquery: func(m) {
// Please refer to the example in `block_aaaa.tengo`
},
// If you want to intercept and handle an address, then define `address` key a function, `m` is the `in_address`
address: func(m) {
// Please refer to the example in `block_google_secure_dns.tengo`
},
// If you want to intercept and handle a http request, then define `httprequest` key a function, `request` is the `in_httprequest`
httprequest: func(request) {
// Please refer to the example in `ios_app_downgrade.tengo` or `redirect_google_cn.tengo`
},
// If you want to intercept and handle a http response, then define `httpresponse` key a function, `request` is the `in_httprequest`, `response` is the `in_httpresponse`
httpresponse: func(request, response) {
// Please refer to the example in `response_sample.tengo`
}
})
https://github.com/tx Thinking/tun2brook
tun2brook を使用している場合は、次の方法で複数のモジュールを手動で完全なスクリプトに結合できます。例えば:
cat _header.tengo > my.tengo
cat block_google_secure_dns.tengo >> my.tengo
cat block_aaaa.tengo >> my.tengo
cat _footer.tengo >> my.tengo
Tengo 言語の構文
図書館
テキスト: 正規表現、文字列変換、および操作
math: 数学的な定数と関数
時間: 時間関連の関数
rand: ランダム関数
fmt: 書式設定関数
json: JSON関数
enum: 列挙関数
hex: 16 進エンコードおよびデコード関数
Base64: Base64 エンコードおよびデコード関数
brook
: 小川モジュール
Constants
* os: string, linux/darwin/windows/ios/android
Functions
* splithostport(address string) => map/error: splits a network address of the form "host:port" to { "host": "xxx", "port": "xxx" }
* country(ip string) => string/error: get country code from ip
* cidrcontainsip(cidr string, ip string) => bool/error: reports whether the network includes ip
* parseurl(url string) => map/error: parses a raw url into a map, keys: scheme/host/path/rawpath/rawquery
* parsequery(query string) => map/error: parses a raw query into a kv map
* map2query(kv map) => string/error: convert map{string:string} into a query string
* bytes2ints(b bytes) => array/error: convert bytes into [int]
* ints2bytes(ints array) => bytes/error: convert [int] into bytes
* bytescompare(a bytes, b bytes) => int/error: returns an integer comparing two bytes lexicographically. The result will be 0 if a == b, -1 if a < b, and +1 if a > b
* bytescontains(b bytes, sub bytes) => bool/error: reports whether sub is within b
* byteshasprefix(s bytes, prefix bytes) => bool/error: tests whether the bytes s begins with prefix
* byteshassuffix(s bytes, suffix bytes) => bool/error: tests whether the bytes s ends with suffix
* bytesindex(s bytes, sep bytes) => int/error: returns the index of the first instance of sep in s, or -1 if sep is not present in s
* byteslastindex(s bytes, sep bytes) => int/error: returns the index of the last instance of sep in s, or -1 if sep is not present in s
* bytesreplace(s bytes, old bytes, new bytes, n int) => bytes/error: returns a copy of the s with the first n non-overlapping instances of old replaced by new. If n < 0, there is no limit on the number of replacements
* pathescape(s string) => string/error: escapes the string so it can be safely placed inside a URL path segment, replacing special characters (including /) with %XX sequences as needed
* pathunescape(s string) => string/error: does the inverse transformation of pathescape
* queryescape(s string) => string/error: escapes the string so it can be safely placed inside a URL query
* queryunescape(s string) => string/error: does the inverse transformation of queryescape
* hexdecode(s string) => bytes/error: returns the bytes represented by the hexadecimal string s
* hexencode(s string) => string/error: returns the hexadecimal encoding of src
複雑なスクリプトを作成している場合、GUI はデバッグに不便な場合があります。 fmt.println
でデバッグするには、デスクトップで tun2brook を使用することをお勧めします。
https://tx Thinking.github.io/ca/ca.pem
OS | どうやって |
---|---|
iOS | https://www.youtube.com/watch?v=HSGPC2vpDGk |
アンドロイド | Android にはユーザー CA とシステム CA があり、ROOT の後にシステム CA にインストールする必要があります |
macOS | nami install mad ca.txthinking 、 sudo mad install --ca ~/.nami/bin/ca.pem |
窓 | nami install mad ca.txthinking 、管理者: mad install --ca ~/.nami/bin/ca.pem |
一部のソフトウェアはシステム CA を読み取れない場合があります。デバッグするには、
curl --cacert ~/.nami/bin/ca.pem
使用できます。
Brook OpenWRT: IPv4/IPv6/TCP/UDP を完全にサポート
Brook の IPv6 に対するスタンスは肯定的です。サーバーまたはローカル環境に IPv6 スタックがない場合は、この記事をお読みください。
brook link --address
で IP アドレスを指定していない場合、Brook クライアントはローカル DNS を使用して AAAA レコードを優先してドメインの IP を解決しようとします。例えば:Connectivity Check
をクリックします。機能する場合と機能しない場合がある場合は、不安定性を示しています。Test IPv4 TCP
使用します。このテストでは IP アドレスがハードコーディングされているため、DNS 解決はトリガーされません。Test IPv4 UDP
を使用します。このテストでは IP アドレスがハードコーディングされているため、DNS 解決はトリガーされません。Test IPv6 TCP
使用します。このテストでは IP アドレスがハードコーディングされているため、DNS 解決はトリガーされません。Test IPv6 UDP
を使用します。このテストでは IP アドレスがハードコーディングされているため、DNS 解決はトリガーされません。Echo Client
を使用します。入力されたエコー サーバーがドメイン アドレスの場合、DNS 解決がトリガーされます。Block Google Secure DNS
モジュールを有効にするだけで十分です。その他のケースについては、こちらの記事を参照してください。Block Google Secure DNS
Bypass Geo
Bypass Apple
: Apple メッセージ通知の受信に関する問題を回避します。Bypass China domain
またはBypass China domain A
: 前者は、 Bypass DNS
て IP を取得し、 Bypass Geo
か、その他のモジュールがバイパスするかどうかを決定します。後者は、A レコードを使用してBypass DNS
で IP を取得した後、直接バイパスします。後者は、ローカル環境が IPv6 をサポートしていない場合に必要です。各サブコマンドには、最小限の使用例を出力できる--example
パラメータがあります。
Brook - クロスプラットフォームでプログラム可能なネットワーク ツール
小川
brook --help
使用法:
Brook [GLOBAL OPTIONS] command [COMMAND OPTIONS] [ARGUMENTS...]
--blockCIDR4List ="": 1 行に 1 つの CIDR、https://、http://、またはローカル ファイルの絶対パス (例: https://raw.githubusercontent.com/tx Thinking/brook/master/programmable/list/example_cidr4) 。TXT。サーバー/wsserver/wssserver/quicserver で動作します
--blockCIDR6List ="": 1 行に 1 つの CIDR、https://、http://、またはローカル ファイルの絶対パス (例: https://raw.githubusercontent.com/tx Thinking/brook/master/programmable/list/example_cidr6) 。TXT。サーバー/wsserver/wssserver/quicserver で動作します
--blockDomainList ="": 1 行に 1 つのドメイン、サフィックス一致モード。 https://、http://、またはローカル ファイルの絶対パス。例: https://raw.githubusercontent.com/tx Thinking/brook/master/programmable/list/example_domain.txt。サーバー/wsserver/wssserver/quicserver で動作します
--blockGeoIP ="": 米国などの地域の国コードによって IP をブロックします。サーバー/wsserver/wssserver/quicserver で動作します
--blockListUpdateInterval ="": リスト --blockDomainList、--blockCIDR4List、--blockCIDR6List の更新間隔、秒。デフォルトは 0、開始時に 1 回だけ読み取ります (デフォルト: 0)
--clientHKDFInfo ="": クライアント HKDF 情報。ほとんどの場合、これを変更する必要はありません。変更した場合、クライアント側のすべての brook リンクとそれぞれの brook リンクが同じである必要があります。つまり、それぞれ (デフォルト: "brook")
--dialWithDNS ="": ドメイン名を解決する必要がある場合は、指定された DNS を使用します。 8.8.8.8:53 や https://dns.google/dns-query?address=8.8.8.8%3A443 など、アドレスは必須です。クライアント側のコマンドの場合、これはクライアントがドメイン アドレスをサーバーに渡す際には影響しないことに注意してください。
--dialWithDNSPrefer ="": これは、dialWithDNS パラメーターとともに使用されます。 A レコードまたは AAAA レコードを優先します。値は A または AAAA
--dialWithIP4 ="": 現在のマシンが外部 IPv4 (TCP と UDP の両方) へのネットワーク接続を確立するときに、使用する IPv4 を指定するために使用されます。
--dialWithIP6 ="": 現在のマシンが外部 IPv6 (TCP と UDP の両方) へのネットワーク接続を確立するときに、使用される IPv6 を指定するために使用されます。
--dialWithNIC ="": 現在のマシンが TCP と UDP の両方で外部へのネットワーク接続を確立するときに、使用する NIC を指定するために使用されます。
--dialWithSocks5 ="": 現在のマシンが Socks5 プロキシを使用して、TCP と UDP の両方で外部へのネットワーク接続を確立するとき (127.0.0.1:1081 など)
--dialWithSocks5Password ="": ある場合
--dialWithSocks5TCPTimeout ="": 時間 (秒) (デフォルト: 0)
--dialWithSocks5UDPTimeout ="": 時間 (秒) (デフォルト: 60)
--dialWithSocks5Username ="": がある場合
--ipLimitInterval ="": ipLimitMax の間隔 (秒) (デフォルト: 0)
--ipLimitMax ="": クライアント IP アドレスの数を制限します。クライアントが動的 IP を持っている可能性があるため、このパラメータを使用する場合は注意してください。サーバー/wsserver/wssserver/quicserver で動作します (デフォルト: 0)
--ipLimitWait ="": ipLimitMax を超えた後に回復を待つ時間 (デフォルト: 0)
--log ="": ログを有効にします。有効な値は、ファイル パスまたは「コンソール」です。 UNIX システム上のログ ファイルをリセットするには、SIGUSR1 を私に送信してください。 SOCKS5 ライブラリをデバッグしたい場合は、env SOCKS5_DEBUG=true を設定します。
--pid ="": pid を保存するために使用されるファイル パス。 UNIX システム上の --serverLog ファイルをリセットするには、SIGUSR1 を私に送信してください
--pprof ="": go http pprof listen アドレス (例:6060)
--prometheus ="": prometheus http listen アドレス (:7070 など)。公衆ネットワーク上で送信する場合は、nicoと併用することをお勧めします。
--prometheusPath ="": prometheus http パス (/xxx など)。公衆ネットワーク上で送信する場合は推測しにくい値を推奨
--serverHKDFInfo ="": サーバーの HKDF 情報。ほとんどの場合、これを変更する必要はありません。変更した場合、クライアント側のすべての brook リンクとそれぞれの brook リンクが同じである必要があります。つまり、それぞれ (デフォルト: "brook")
--serverLog ="": サーバー ログ、トラフィックなどを有効にします。有効な値は、ファイル パスまたは「コンソール」です。 UNIX システム上のログ ファイルをリセットするには、SIGUSR1 を私に送信してください。 --log パラメータとは相互に排他的です。 brook プロトコルを使用して、server/wsserver/wssserver/quicserver で動作します
--speedLimit ="": 制限速度 (b)、500kb/s など: 500000、server/wsserver/wssserver/quicserver で動作します (デフォルト: 0)
--tag ="": タグはプロセスに使用でき、ログまたはサーバーログに追加されます (例: 'key1:value1')。すべてのタグもクエリ パラメータとして userAPI に 1 つずつ追加されます。
--userAPI ="": 独自のユーザー システムを構築すると、Brook Server はトークンが有効かどうかを確認するために userAPI に GET リクエストを送信します (例: https://your-api-server.com/a_unpredictable_path)。はい、https API に予測不可能なパスを追加することをお勧めします。もちろん、内部ネットワーク通信に http API を使用することもできます。リクエストの形式は https://your-api-server.com/a_unpredictable_path?token=xxx です。応答が 200 の場合、本文はユーザー ID などのユーザーの一意の識別子である必要があります。他のすべてのステータス コードは不正なユーザーを表すものとみなされ、このような場合、本文はエラーを説明する文字列である必要があります。これは --serverLog および brook プロトコルを備えたserver/wsserver/wssserver/quicserver とともに使用する必要があります。詳細については、https://github.com/tx Thinking/brook/blob/master/protocol/user.md を参照してください。
--userAPIInvalidCacheTime ="": トークンがチェックされて無効になると、userAPI は一定期間再検証を要求されません。適切な値を設定する必要があります。設定しないと、各受信接続のパフォーマンスに影響します。ユーザー システムでユーザー ステータスを無効から有効に変更すると、ユーザー エクスペリエンスに影響を及ぼす可能性があることに注意してください (デフォルト: 1800)。
--userAPIValidCacheTime ="": トークンがチェックされて有効になると、userAPI は一定期間再検証を要求されません。適切な値を設定する必要があります。設定しないと、各受信接続のパフォーマンスに影響します (デフォルト: 3600)。
--version、-v : バージョンを出力します。
tcp と udp をサポートする brook サーバーを起動します
--blockCIDR4List ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockCIDR6List ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockDomainList ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockGeoIP ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--example : 最小限の使用例を表示します。
--listen, -l ="": リッスン アドレス、例: ':9999'
--password、-p ="": サーバーのパスワード
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
--updateListInterval ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください (デフォルト: 0)
tcp と udp をサポートする brook クライアントを起動します。これは、socks5 プロキシ、[src <-> sock5 <-> $ brook client <-> $ brook server <-> dst] を開くことができます。
--example : 最小限の使用例を表示します。
--http ="": HTTP プロキシ接続をリッスンする場所
--link ="": brook リンク。$ brook link から取得できます。 wssserver パラメータとパスワード パラメータは無視されます
--password、-p ="": Brook サーバーのパスワード
--server, -s ="": Brook サーバーのアドレス、例: 1.2.3.4:9999
--socks5 ="": SOCKS5 接続をリッスンする場所 (デフォルト: 127.0.0.1:1080)
--socks5ServerIP ="": Socks5 サーバー IP がリッスン IP と異なる場合のみ
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
tcp と udp をサポートする brook wsserver を起動します。標準の http サーバーと WebSocket サーバーを開きます
--blockCIDR4List ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockCIDR6List ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockDomainList ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockGeoIP ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--example : 最小限の使用例を表示します。
--listen, -l ="": リッスン アドレス、例: ':80'
--password、-p ="": サーバーのパスワード
--path ="": URL パス (デフォルト: /ws)
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
--updateListInterval ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください (デフォルト: 0)
--withoutBrookProtocol : データは brook プロトコルで暗号化されません。
--xForwardedFor : --log の from フィールドを置き換えます。これは偽造される可能性があることに注意してください
tcp と udp をサポートする brook wsclient を開始します。 Socks5 プロキシを開くことができます ([src <-> Socks5 <-> $ brook wsclient <-> $ brook wsserver <-> dst])
--example : 最小限の使用例を表示します。
--http ="": HTTP プロキシ接続をリッスンする場所
--link ="": brook リンク。$ brook link から取得できます。 wssserver パラメータとパスワード パラメータは無視されます
--password、-p ="": Brook wsserver パスワード
--socks5 ="": SOCKS5 接続をリッスンする場所 (デフォルト: 127.0.0.1:1080)
--socks5ServerIP ="": Socks5 サーバー IP がリッスン IP と異なる場合のみ
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
--wsserver, -s ="": Brook wsserver アドレス (例: ws://1.2.3.4:80)、パスがない場合は /ws が使用されます。いかなる状況でもポートを省略しないでください
tcp と udp をサポートする brook wssserver を起動します。標準の https サーバーと WebSocket サーバーを開きます
--blockCIDR4List ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockCIDR6List ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockDomainList ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockGeoIP ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--cert ="": ドメインの証明書ファイルの絶対パス (/path/to/cert.pem など)。 cert または certkey が空の場合、証明書は自動的に発行されます
--certkey ="": ドメインの証明書キー ファイルの絶対パス (/path/to/certkey.pem など)。 cert または certkey が空の場合、証明書は自動的に発行されます
--domainaddress ="": 例:domain.com:443。証明書を自動的に発行することを選択した場合、ドメインはサーバー IP に解決されている必要があり、80 ポートも使用されます。
--example : 最小限の使用例を表示します。
--password、-p ="": サーバーのパスワード
--path ="": URL パス (デフォルト: /ws)
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
--updateListInterval ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください (デフォルト: 0)
--withoutBrookProtocol : データは brook プロトコルで暗号化されません。
tcp と udp をサポートする brook wssclient を開始します。 Socks5 プロキシを開くことができます ([src <-> Socks5 <-> $ brook wssclient <-> $ brook wssserver <-> dst])
--example : 最小限の使用例を表示します。
--http ="": HTTP プロキシ接続をリッスンする場所
--link ="": brook リンク。$ brook link から取得できます。 wssserver パラメータとパスワード パラメータは無視されます
--password、-p ="": Brook wssserver パスワード
--socks5 ="": SOCKS5 接続をリッスンする場所 (デフォルト: 127.0.0.1:1080)
--socks5ServerIP ="": Socks5 サーバー IP がリッスン IP と異なる場合のみ
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
--wssserver, -s ="": Brook wssserver アドレス (例: wss://google.com:443)、パスがない場合は /ws が使用されます。いかなる状況でもポートを省略しないでください
tcp と udp をサポートする brook quicserver を起動します。
--blockCIDR4List ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockCIDR6List ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockDomainList ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--blockGeoIP ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください。
--cert ="": ドメインの証明書ファイルの絶対パス (/path/to/cert.pem など)。 cert または certkey が空の場合、証明書は自動的に発行されます
--certkey ="": ドメインの証明書キー ファイルの絶対パス (/path/to/certkey.pem など)。 cert または certkey が空の場合、証明書は自動的に発行されます
--domainaddress ="": 例:domain.com:443。証明書を自動的に発行することを選択した場合、ドメインはサーバー IP に解決されている必要があり、80 ポートも使用されます。
--example : 最小限の使用例を表示します。
--password、-p ="": サーバーのパスワード
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
--updateListInterval ="": このオプションは将来のバージョンでは削除される予定です。代わりにグローバル オプションを使用してください (デフォルト: 0)
--withoutBrookProtocol : データは brook プロトコルで暗号化されません。
tcp と udp をサポートする brook quicclient を起動します。 Socks5 プロキシ [src <-> Socks5 <-> $ brook quicclient <-> $ brook quicserver <-> dst] を開くことができます。 (グローバルダイヤルパラメータは無視されます)
--example : 最小限の使用例を表示します。
--http ="": HTTP プロキシ接続をリッスンする場所
--link ="": brook リンク。$ brook link から取得できます。 wssserver パラメータとパスワード パラメータは無視されます
--socks5 ="": SOCKS5 接続をリッスンする場所 (デフォルト: 127.0.0.1:1080)
--socks5ServerIP ="": Socks5 サーバー IP がリッスン IP と異なる場合のみ
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
TCP と UDP をサポートするブルック経由でネットワーク トラフィックを中継します。 [アドレスから] へのアクセスは、[アドレスへ] へのアクセスと同じです。[src <-> アドレスから <-> $ brook server/wsserver/wssserver/quicserver <-> アドレスへ]
--example : 最小限の使用例を表示します。
--from、-f、-l ="": リッスン アドレス: ':9999' のような
--link ="": brook リンク。$ brook link から取得できます。サーバーとパスワードのパラメータは無視されます
--password、-p ="": パスワード
--server、-s ="": brook サーバー、brook wsserver、brook wssserver、または brook quicserver、例: 1.2.3.4:9999、ws://1.2.3.4:9999、wss://domain:443/ws、 quic://domain.com:443
--tcpTimeout ="": 時間 (秒) (デフォルト: 0)
--to、-t ="": 中継先のアドレス (例: 1.2.3.4:9999)
--udpTimeout ="": 時間 (秒) (デフォルト: 0)
TCP と UDP をサポートする brook 経由で DNS サーバーを実行します。[src <-> $ brook dnserversoverbrook <-> $ brook server/wsserver/wssserver/quicserver <-> dns] または [src <-> $ brook dnsserveroverbrook <-> dnsバイパス用]
--blockDomainList ="": 1 行に 1 つのドメイン、サフィックス一致モード。 https://、http://、またはローカルの絶対ファイル パス。例: https://raw.githubusercontent.com/tx Thinking/brook/master/programmable/list/example_domain.txt
--bypassDomainList ="": 1 行に 1 つのドメイン、サフィックス一致モード。 https://、http://、またはローカルの絶対ファイル パス。例: https://raw.githubusercontent.com/tx Thinking/brook/master/programmable/list/example_domain.txt
--disableA : クエリを無効にする
--disableAAAA : AAAA クエリを無効にする
--dns ="": リストにないドメインを解決するための DNS サーバー (デフォルト: 8.8.8.8:53)
--dnsForBypass ="": バイパス リスト内のドメインを解決するための DNS サーバー。 223.5.5.5:53やhttps://dns.alidns.com/dns-query?address=223.5.5:443など、アドレスが必要です(デフォルト:223.5.5.5:53)
- 例:使用状況の最小限の例を表示します
-link = "":ブルックリンク、$ brookリンクを介して入手できます。サーバーとパスワードのパラメーターは無視されます
-listen、-l = "":住所を聞く:127.0.0.1:53
-password、-p = "":パスワード
- サーバー、-s = "":ブルックサーバーまたはブルックWSServerまたはBrook WSSServerまたはBrook Quicserver、1.2.3.4:9999、ws://1.2.3.4:9999、wss://domain.com:443// WS、quic://domain.com:443
-tcptimeout = "":time(s)(default:0)
-udptimeout = "":time(s)(default:0)
ブルックリンクを生成します
-Address = "":サーバーがBrook WsserverまたはBrook WssserverまたはBrook Quicserverの場合、1.2.3.4:443などのホストからのアドレスを解決する代わりにアドレスを指定します
-CA = "":サーバーがBrook WSSServerまたはBrook Quicserverの場合、/Path/to/ca.pemなどの信頼されていない証明書にCAを指定します
-clienthkdfinfo = "":クライアントhkdf情報、ほとんどの場合、これを変更する必要はありません。これが何であるかわからない場合はブルックプロトコルを読む
- 例:使用状況の最小限の例を表示します
- fragment = "":サーバーがBrook wssserverの場合、clienthelloを複数のフラグメントに分割し、遅延(ミリ秒)で1つずつ送信します。形式はmin_length:max_length:min_delay:max_delay、50:100:10:50など、ゼロにすることはできません
-insecure :サーバーがBrook WSSServerまたはBrook Quicserverの場合、クライアントはサーバーの証明書チェーンとホスト名を確認しません
-name = "":このサーバーに名前を付けます
-password、-p = "":パスワード
-Server、-s = "":Brook Server、Brook Wsserver、Brook Wssserver、Socks5 Server、Brook Quicserverをサポートします。同様:1.2.3.4:9999、ws://1.2.3.4:9999、wss://google.com:443/ws、socks5://1.2.3.4:1080、quic://google.com:443
-serverhkdfinfo = "":サーバーhkdf情報、ほとんどの場合、これを変更する必要はありません。これが何であるかわからない場合はブルックプロトコルを読む
-TLSFINGERPRINT = "":サーバーがBrook WSSServerである場合、TLS指紋を選択してください。
-TOKEN = "":トークンはユーザーのIDを表します。 16進数でエンコードされた文字列。サーバーは、-userapiを有効にする必要があります。注意:Brook GUI(OpenWrtを除く)とTun2Brookのみがサポートしています
-UDPOVERSTREAM :サーバーがBrook Quicserverの場合、UDPオーバーストリーム。通常の状況では、QUICの最大データグラムのサイズが非常に小さいため、このパラメーターが必要です。注:今のところ、Brook CLIとTun2Brookサポポートのみ
-udpovertcp :サーバーがブルックサーバーの場合、udp over tcp
-username、-u = "":ユーザー名、サーバーがsocks5サーバーである場合
-withoutbrookprotocol :サーバーがBrook wsserverまたはBrook wssserverまたはBrook Quicserverである場合、データはBrook Protocolで暗号化されません
クライアントを実行し、TCPとUDPをサポートするBrookリンクに接続します。 Socks5 Proxy、[src <-> socks5 <-> $ brook connect <-> $ brook server/wsserver/wssserver/quicserver <-> dst]を開始できます。
- 例:使用状況の最小限の例を表示します
-HTTP = "":HTTPプロキシ接続を聞く場所
-link、-l = "":ブルックリンク、$ brookリンクを介して入手できます
-SOCKS5 = "":Socks5接続を聴く場所(デフォルト:127.0.0.1:1080)
-SOCKS5SERVERIP = "":socks5サーバーIPが聞くIPと異なる場合のみ
-tcptimeout = "":time(s)(default:0)