標準のNAT接続ファイアウォールをバイパスして、ローカルポートをリモートサーバーに公開する錆の最新のシンプルなTCPトンネル。それはそれだけです:それ以上、それ以下ではありません。
#インストール(錆が必要です、以下の代替を参照)貨物インストールボア-cli#local machinebore local8000 - to bore.pub
これにより、 localhost:8000
のローカルポートがbore.pub:<PORT>
のパブリックインターネットに公開されます。ポート番号はランダムに割り当てられます。
LocalTunnelとNgrokと同様に、 bore
を除き、ボアは、フリルが添付されていない、簡単にインストールできるTCPトラフィックを転送するための非常に効率的でオピニオン化されていないツールであることを目的としています。
( bore
で約400ラインの安全で非同期さびコードがあり、セットアップするのは些細なことです。クライアントとサーバーに単一のバイナリを実行するだけです。)
MacOSにいる場合、 bore
はHomebrew Coreフォーミュラとしてパッケージ化されています。
Brew Install Bore-Cli
それ以外の場合、BOREをインストールする最も簡単な方法は、事前に作成されたバイナリからです。これらは、MacOS、Windows、Linuxのリリースページで利用できます。プラットフォームに適したファイルを解凍し、 bore
実行可能ファイルをパス上のフォルダーに移動します。
また、Rust Package Managerである貨物を使用して、ソースからbore
を構築することもできます。このコマンドは、ユーザーアクセス可能なパスにbore
バイナリをインストールします。
貨物インストールボアCLI
また、リリースごとにバージョン付きDocker画像も公開しています。この画像は、AMD 64ビットアーキテクチャ用に構築されています。特定のバージョンでタグ付けされており、最小限の「スクラッチ」コンテナから静的にリンクされたbore
バイナリを実行できます。
docker run -it - init - rm - ネットワークホストekzhang/bore <args>
このセクションでは、 bore
CLIコマンドの詳細な使用法について説明します。
bore local
コマンドを使用して、ローカルマシンにポートを転送できます。これには、位置的な引数、ローカルポートが転送されるだけでなく、リモートサーバーのアドレスを指定する--to
のオプションが必要です。
ボアローカル5000-ボア
オプションで、このポートが利用できない場合はコマンドが失敗しますが、リモート上の特定のポートを選択するために--port
オプションを渡すことができます。また、パッシング--local-host
使用すると、Loopbackアドレスlocalhost
以外に、ローカルエリアネットワークに別のホストを公開できます。
完全なオプションを以下に示します。
リモートサーバーへのローカルプロキシを開始します 使用法:local [options] - to <to> <local_port>引数:<local_port>露出するローカルポート オプション: -l、 - local-host <host>露出するローカルホスト[デフォルト:localhost] -t、 - to <to>リモートサーバーのアドレスは、ローカルポートを[env:bore_server =]に公開する -p、-port <port>リモートサーバー上のオプションポート[デフォルト:0]を選択する -s、 - secret <secret>認証のためのオプションの秘密[env:bore_secret] -H、 - ヘルププリントヘルプ情報
スタートアップの指示で述べたように、 bore.pub
で実行されているbore
サーバーのパブリックインスタンスがあります。ただし、自分のネットワークで自己ホストのbore
たい場合は、次のコマンドでこれを行うことができます。
ボアサーバー
それがすべてかかることです!サーバーが特定のアドレスで実行を開始した後、 --to <ADDRESS>
使用してbore local
コマンドを更新して、このリモートサーバーにローカルポートを転送することができます。
bore server
コマンドの完全なオプションを以下に示します。
リモートプロキシサーバーを実行します 使用法:ボアサーバー[オプション] オプション: - min-port <min_port>最小受け入れTCPポート番号[デフォルト:1024、env:bore_min_port] -max-port <max_port>最大受け入れられたtcpポート番号[デフォルト:65535、env:bore_max_port] -s、 - secret <secret>認証のためのオプションの秘密[env:bore_secret] -H、 - ヘルププリントヘルプ情報
オンデマンドで新しい接続を作成するために使用される7835
には、暗黙の制御ポートがあります。初期化時に、クライアントはTCPコントロールポートのサーバーに「Hello」メッセージを送信し、選択したリモートポートのプロキシを要求します。次に、サーバーは確認で応答し、外部TCP接続のリスニングを開始します。
サーバーがリモートポートの接続を取得するたびに、その接続の安全なUUIDを生成し、クライアントに送り返します。次に、クライアントはサーバーに個別のTCPストリームを開き、そのストリームにUUIDを含む「受け入れ」メッセージを送信します。サーバーは、相互に2つの接続をプロキシします。
正確な理由で、メモリリークを回避するために、着信接続は、クライアントが受け入れない場合に破棄されるまでに最大10秒間サーバーによって保存されます。
bore server
のカスタム展開では、サーバーが他の人が使用するのを防ぐために、オプションで秘密を必要とすることができます。プロトコルでは、HMACコードの形でランダムな課題に答えることにより、クライアントが各TCP接続の秘密の所有を検証する必要があります。 (この秘密は最初の握手にのみ使用され、デフォルトではそれ以上のトラフィックは暗号化されません。)
#serverbore serverで - セクレットmy_secret_string#clientbore local <local_port> - to <to> - secret my_secret_string
議論に秘密が存在しない場合、 bore
BORE_SECRET
環境変数からも読み込もうとします。
Eric Zhang(@ekzhang1)によって作成されました。 MITライセンスに基づいてライセンスされています。
著者は、Tokioプロジェクトの貢献者とメンテナーに、Rustで人間工学的で効率的なネットワークサービスを作成できるようにしてくれたことに感謝します。