リレー運営者

Tor は動的IPアドレスを持つリレーをうまく扱うことができます。 torrc の"Address"行を空欄にしていただければ、Torが推測します。

Torリレーをアップグレードする場合、または別のコンピュータに移動する場合は、必ず同じIDキー(DataDirectoryのkeys/ed25519_master_id_secret_keyおよびkeys/secret_id_keyに格納されている)を保持してください。

ブリッジオペレータの場合は、pt_state/も必ず保持してください。ブリッジが同じブリッジラインで動作し続けるために必要なデータが含まれています。

分かりやすくするために、DataDirectory全体をコピーするだけでも機能します。

問題が発生した場合にリレーを復元できるように、これらのIDキーとブリッジのpt_stateのバックアップを保持することをお勧めします。

いいえ。 法執行機関があなたの出口リレーからのトラフィックに興味を持った場合、警官があなたのコンピュータを押収する可能性があります。 以上の理由から、自宅で出口リレーを走らせたり、自宅のインターネット回線を使用することは避けるべきです。

代わりに、Torをサポートする商業施設で出口リレーを実行することをご検討ください。 出口リレー用に別のIPアドレスを用意し、あなたのトラフィックをルーティングしないでください。 もちろん、出口リレーをホストするコンピューターに機密情報や個人情報を保存することは避けてください。

リレーの負荷が変化する理由

Torは、ネットワーク全体の帯域幅を管理します。これはほとんどのリレーで適切に機能します。 しかし、Torの目標はBitTorrentのようなプロトコルとは異なります。 Torは、ヘッドルームを備えた高速接続を必要とする、低遅延のウェブページを求めている。 BitTorrentは、すべての帯域幅を使用する必要がある一括ダウンロードが必要です。

私たちは新しい帯域幅スキャナを開発しています。 測定されていないリレーや、測定値が低いリレーの診断機能も備えています。

なぜTorに帯域幅スキャナが必要なのですか?

ほとんどのプロバイダは、ローカル接続の最大速度を表示します。 しかし、Torには世界中にユーザーがいて、ユーザーはランダムに1つか2つの入口リレーに接続します。 そのため、各リレーがどれだけうまく全世界に接続できるかを知る必要があります。

そのため、すべての中継事業者が宣伝している帯域幅をローカル接続速度に設定したとしても、インターネットの異なる部分間で負荷を分散させるために帯域幅権限が必要になります。

通常のリレー負荷とは何ですか?

ほとんどのリレーは通常、容量の30%から80%の負荷がかかります。 これはクライアントにとって良いことです。過負荷のリレーは遅延が大きくなります。 (各リレーに10%の負荷がかかるように十分なリレーが必要です。そうすれば、Torは一般的なインターネットとほぼ同じ速度になります)。

リレーの速度が遅いのは、プロセッサの速度が遅いか、接続が制限されているためです。 リレーが他のほとんどのtorリレーと正しくピアリングしていないか、距離が遠く離れていることでネットワークが遅い場合もあります。

リレーを制限している原因の特定

リレーを遅くする原因は多数あります。ここでは、それらを突き止める方法をご紹介します。

システムの制限

  • リレーのRAM、CPU、およびソケット/ファイル記述子の使用状況をご確認ください。

Torは起動時にこれらのログの一部を記録します。その他は、topまたは同様のツールを使用して表示できます。

プロバイダーの制限

  • リレーのプロバイダーから他のリレーへのインターネットピアリング(帯域幅、遅延)を確認します。 Comcast(米国のISP)経由の中継は、たまに時間がかかることがあります。 北米や西ヨーロッパ以外でのリレーは、通常さらに遅いです。

Torネットワークの制限

リレー帯域幅は、リレー自身の観測帯域幅、またはディレクトリ管理機関の測定帯域幅によって制限できます。 リレーを制限している測定値を調べる方法は以下の通りです。

  • コンセンサス状態 でリレーの各投票や中央値を確認します。 リレーが一部のディレクトリ管理機関で実行中とマークされていない場合:
    • IPv4またはIPv6アドレスがお間違いではありませんか?
    • そのIPv4またはIPv6アドレスは、いくつかのネットワークから到達不可能ですか?
    • IPv4アドレスに2つ以上のリレーがありますか?

それ以外の場合は、リレーの観測帯域幅と帯域幅レート(制限)を確認します。 Metrics でリレーを検索します。 次に、帯域幅の見出しにマウスを合わせると、観測された帯域幅とリレー帯域幅レートが表示されます。

以下はその詳細と例の コンセンサスウェイトの低下出口リレーの上昇速度です。

修正方法

これらの数値の最小値は、リレーに割り当てられる帯域幅を制限します。

  • 帯域幅レートが原因の場合は、torrcのBandwidthRate/BurstまたはRelayBandwidthRate/Burstを増やしてください。
  • 観測された帯域幅であれば、リレーは自分自身が速くなっていることを確認するまで、それ以上の帯域幅を要求しません。 遅い原因を突き止める必要があります。
  • 測定された帯域幅の中央値であれば、大半の帯域幅機関からはリレーが低速に見えます。 計測が遅い理由を突き止める必要があります。

独自のリレー測定を行う

リレーが遅いと判断した場合、または帯域幅局が遅いと判断した場合は、自分で帯域幅をテストできます。

  • Torを使用してテストを実行し、Torがネットワーク上でどの程度高速になるかを確認します。

    このためには、リレーをエントリとして使用するようにTorクライアントを設定する必要があります。 リレーにGuardフラグしかない場合は、torrcEntryNodesにリレーフィンガープリントを設定してください。 リレーにGuardフラグがないか、GuardフラグとExitフラグがある場合、リレーを入口ノードとして設定することはできません(参照: https://gitlab.torproject.org/tpo/core/tor/-/issues/22204)が、ブリッジでなくてもブリッジとして設定することはできます。 リレーをブリッジとして設定するには、torrcに以下を追加してください。

    Bridge <ip>:<port>
    UseBridge 1
    

    次にsocksプロキシとしてSocksPortを使用して、大きなファイルをダウンロードします。 これには、例えば curlをご利用いただけます。

    curl https://target/path --proxy socks5h://<user>:<password>@127.0.0.1:<socks-port>
    

    異なるuser/passwordを使用すると、異なる回路が保証されます。また$RANDOMをご利用いただけます。

    そうすれば、あなたのリレーがどれだけのトラフィックを維持できるか、ある程度の見当がつきます。

    あるいは、sbws と同じように、relay_bw を実行して、2ホップの回線を使ってリレーをテストすることもできます。

  • Torとchutneyを使ってテストを行い、TorがあなたのCPUでどれくらいの速度が出るかを調べます。 帯域幅の増加が止まるまで、データ量を増やし続けます。

確かに、一部の攻撃に対しては匿名性が向上します。

最も単純な例は、少数の Tor リレーを所有する攻撃者です。 ユーザーからの接続は表示されますが、その接続がユーザーのコンピュータから発信されたものか、他のユーザーから中継されたものかは分かりません。

これが役に立たないと思われる場合もあります。攻撃者がすべての送受信トラフィックを監視できる場合、どの接続が中継され、どの接続が開始されたかを容易に知ることができます。 (この場合でも、相手が見ていない限り、相手はあなたの目的地を知りませんが、あなたが普通のクライアントである場合と変わりません。)

Tor リレーの実行にはいくつかの欠点もあります。 第一に、リレーは数百しかありませんが、リレーを実行しているという事実は匿名性を高く評価していることを攻撃者に示す可能性があります。 第二に、リレーを実行しているという知識を利用した、十分に理解されていない、または十分にテストされていない、より難解な攻撃があります。例えば攻撃者は、実際にネットワークを監視できなくても、Tor リレーを介してトラフィックをリレーし、トラフィックのタイミングの変化に気付くことで、トラフィックが送信されているかどうかを 「監視」 できる可能性があります。

メリットがリスクを上回るかどうかは、未解決の研究課題です。 その多くは、あなたが最も心配している攻撃に依存しています。 ほとんどのユーザーにとって、これは賢い選択だと思われます。

出口接続を許可すると、リレーから接続した一部のサービスが接続を戻して、ユーザーに関する詳細情報を収集します。例えば、IRCサーバの中には、どのユーザが接続したかを記録するためにidentdポートに接続するものがあります。(Torはこの情報を知らないので実際には機能しませんが、彼らはとにかく試します。)また、あなたから出て行くユーザは、中継しているホストについてもっと知りたいIRCサーバやウェブサイトなどの他のユーザの注意を引くかもしれません。

もう1つの理由は、インターネット上のオープンプロキシをスキャンするグループが、Torリレーがsocksポートを世界に公開することがあることを知ったことです。socksportはローカルネットワークにのみバインドすることを推奨します。

いずれにしても、セキュリティを最新の状態に保つ必要があります。詳細については、Torリレーのセキュリティの記事をご覧ください。

特にDebianまたはUbuntuをご利用の場合は、Tor Projectのリポジトリをお使いください。これにより、簡単にアップデートを受け取ることができます。 さらにこのパッケージを使用すると、他にも便利な点があります。

  • ulimit -nは高い値に設定されるので、Torは必要なすべての接続を開いたままにしておくことができます。
  • パッケージは別のユーザーを作成して使用するため、独自のユーザーとしてTorを実行する必要はありません。
  • パッケージにはinitスクリプトが含まれているため、起動時にTorが実行されます。
  • Torは低い番号のポートにバインドし、その後特権を落とすことができます。

私たちはそれなりに安定したインターネット接続が可能で、少なくとも片道10 Mbit/s (Mbps) の帯域幅がある方を求めています。もしそうであれば、Torリレーの実行をご検討ください。

少なくとも10 Mbit/s の利用可能な帯域幅がない場合でも、Torブリッジとobfs4サポート を実行することで、Torネットワークを支援することができます。その場合、少なくとも1 MBit/s の帯域幅が必要です。

簡単に言うと、以下のように機能します。

  • 「ed25519_master_id_secret_key」という名前のプライマリ ed25519 ID 秘密鍵ファイルがあります。 これは最も重要なので、バックアップを安全な場所に保管してください。ファイルは機密性が高く、保護する必要があります。 Torはあなたがそれを手動で生成し、求められた際にパスワードを入力すれば、それを暗号化することができます。
  • Torで使用するために、「ed25519_signing_secret_key」という名前の中期署名鍵が生成されます。 また、「ed25519_signing_cert」という名前の証明書が生成されます。これは、プライマリID秘密鍵によって署名され、中期署名鍵が一定期間有効であることを確認します。 デフォルトの有効期限は30日ですが、torrcで 「SigningKeyLifetime N days|weeks|months 」を設定することでカスタマイズできます。
  • 「ed25519_master_id_public_key」という名前のプライマリ公開鍵もあります。これは、ネットワークで示されるリレーの実際のIDです。 これは機密情報ではなく、「ed5519_master_id_secret_key」から簡単に計算できます。

Torは、中期署名鍵と証明書が有効である間だけアクセスすればよいので、プライマリID秘密鍵は DataDirectory/keys の外、ストレージメディアや別のコンピュータに保管することができます。 中期の署名鍵と証明書は、有効期限が切れる前に手動で更新する必要があります。そうしないと、リレー上のTorプロセスは有効期限が切れると終了します。

この機能はオプションであり、必要でない限り使用する必要はありません。 中期的な署名鍵の更新を定期的に手動で行わずに、リレーを長期間無人で実行する場合は、プライマリIDの秘密鍵を DataDirectory/keys に残しておき、再インストールする必要がある場合に備えてバックアップを作成することをお勧めします。 この機能をご利用の際は、このトピックに関する詳細ガイド をご覧ください。

リレーが比較的新しいのであれば、時間をかけてみてください。 Torは、Bandwidth Authoritiesからのレポートに基づいて、帯域幅機関に使用するリレーを決定します。これらの機関はリレーの容量を測定し、時間の経過とともに、最適な負荷に達するまで、より多くのトラフィックをそこに転送します。 新しいリレーのライフサイクルにつきましては、このブログ投稿をご覧ください。 しばらくの間リレーを実行していてまだ問題がある場合は、Torリレーリストでご質問ください。

次のチュートリアルに沿って、Windowsでリレーを実行できます。

24時間365日実行できる場合にのみ、Windowsリレーを実行してください。 もしそれを保証するのが困難な場合、SnowflakeがTorネットワークにあなたのリソースを提供するより良い方法です。

  • 出口リレーは最も必要とされるリレーの種類ですが、法的リスクが最も高くなります(決して自宅から出口リレーを実行しないでください)。
  • 最小限の労力でリレーを実行したい場合は、高速な入口リレーも非常に有効です。
  • 続いてブリッジも重要です。

各リレーが他のすべてのリレーと通信できるように、全ての発信接続を許可する必要があります。

多くの司法管轄区において、Torリレー運営者はインターネットサービスプロバイダーがネットワークを通過する第三者のコンテンツに対して責任を問われることを防ぐのと同じ電気通信事業法によって法的に保護されています。 一部のトラフィックをフィルタリングする出口リレーは、これらの保護を失う可能性があります。

Torは干渉のない自由なネットワークアクセスを促進します。 出口リレーは、通過するインターネットへのトラフィックを決してフィルタリングしないでください。 トラフィックをフィルタリングしている出口リレーは、検出されると BadExit フラグを立てられます。

入口になったことでクライアントが他のポジションで使うことは少なくなりましたが、既存の入口をローテーションさせて入口として使っているクライアントはまだ多くありません。 詳細につきましては、こちらのブログ記事または入口の変更: Torにおける入口リレー選択の理解と改善のための枠組みをご覧ください。

AccountingMax および BandwidthRate で割り当てられたパラメータは、Tor プロセスのクライアント機能とリレー機能の両方に適用されます。 したがって、Tor が休止状態になるとすぐに閲覧いただけなくなる可能性があります。これは、ログの以下のエントリによって示されます。

Bandwidth soft limit reached; commencing hibernation.
No new connections will be accepted

解決策は、2つの Tor プロセスを実行することです。1つはリレー、もう1つはクライアントで、それぞれ独自の設定を行います。 これを行う1つの方法(動作中のリレー設定から開始する場合)は、以下の通りです。

  • リレー Tor torrcファイルでSocksPortを0に設定するだけです。
  • torrc.sample から新しいクライアントtorrcファイルを作成し、リレーとは異なるログファイルを使用するようにします。 torrc.client と torrc.relay という命名規則もあります。
  • Tor クライアントとリレーの起動スクリプトを変更して、-f/path/to/correct/torrcを含むよう修正します。
  • Linux/BSD/Mac OS Xでは、起動スクリプトをTor.clientTor.relayに変更すると、設定の分離が容易になる場合があります。

ありがとうございます。もしネットワークにより多くの寄付をするために複数のリレーを走らせたいのであれば、私たちはそれで満足です。 ただし、Tor ネットワークの目標は分散性と多様性なので、同一ネットワーク上で数十台以上を運用することはご遠慮ください。

複数のリレーを運用する場合は、各リレーのtorrcに 「MyFamily」構成オプションを設定し、管理下にあるすべてのリレーを(カンマ区切りで)リストアップしてください。

MyFamily $fingerprint1,$fingerprint2,$fingerprint3

ここで各フィンガープリントは、40文字のIDフィンガープリント(スペースなし)です。

そうすれば、Torクライアントは1つの回線で2つ以上のリレーを使用しないようにすることができます。 コンピューターまたはそのネットワークを管理している場合は、仮に全てが同じ所在地にない場合でも、MyFamily を設定する必要があります。

出口が誤って設定されていたり、悪意がある場合、BadExitフラグが割り当てられます。これにより、Torはそのリレーを経由しないようになります。事実上、このフラグを持つリレーは出口ではなくなります。 このフラグが表示された場合は、あなたの出口を経由してトラフィックをルーティングする際に問題または不審なアクティビティを発見し、あなたに連絡できなかった可能性があります。問題を解決するため、bad-relay チームまでご連絡ください。

Torリレーが必要以上にメモリを使用している場合は、以下の方法でメモリ使用量を減らすことができます。

  • Linuxをお使いの場合、glibcのmalloc実装でメモリの断片化バグに遭遇しているのかもしれません。 つまり、Torがメモリをシステムに解放するとき、メモリの断片は再利用しにくいように断片化されます。 Tor tarballにはOpenBSDのmalloc実装が含まれており、フラグメンテーションのバグはそれほど多くありません(ただし、その代償としてCPU負荷が高くなります)。 代わりにこのmalloc実装を使うようにTorに指示できます。./configure --enable-openbsd-malloc
  • 高速リレーを実行している場合、つまり多くのTLS接続を開いている場合は、OpenSSLの内部バッファ(ソケットあたり38KB以上)に大量のメモリが失われている可能性があります。 未使用のバッファメモリをより積極的に解放するようにOpenSSLにパッチを当てました。 OpenSSL 1.0.0以降に更新すると、Torのビルドプロセスが自動的にこの機能を認識して使用します。
  • それでもメモリ負荷を処理できない場合は、リレーが宣伝する帯域幅の量を減らすことをご検討ください。 宣伝する帯域幅が少ないということは、引き付けるユーザーを減らせることを意味するので、リレーはそれほど大きくならないはずです。 マニュアルページのMaxAdvertisedBandwidthオプションをご覧ください。

とはいえ、高速なTorリレーは多くのRAMを使用します。高速な出口リレーが500~1000 MBのメモリを使用することは珍しくありません。

torrc ファイルのアカウンティングオプションを使用すると、リレーが一定期間に使用する最大バイト数を指定いただけます。

    AccountingStart day week month [day] HH:MM

アカウンティングをリセットするタイミングを指定します。例えば、1週間のバイト数の合計 (毎週水曜日の午前10時にリセットされる)を設定するには、以下のようにします。

    AccountingStart week 3 10:00
    AccountingMax 500 GBytes

これは、アカウンティング期間中にリレーが送信するデータの最大量と、アカウンティング期間中にリレーが受信するデータの最大量を指定します。 アカウンティング期間が(AccountingStartから)リセットされると、AccountingMax のカウンタは0にリセットされます。

例: 毎日各方向に50 GBのトラフィックを許可し、アカウンティングを毎日正午にリセットするとします。

    AccountingStart day 12:00
    AccountingMax 50 GBytes

リレーは各アカウンティング期間の開始時に正確に起動するわけではないことにご注意ください。 最後の期間にどれだけ早く割り当てを消費したか記録し、新しい間隔でランダムなポイントを選択して起動します。 こうすることで、月の初めには何百ものリレーが動作しているのに、月末には一つも動作していないという事態を避けています。

接続速度に比べて提供する帯域幅が少ない場合は、毎日のアカウンティングを使用することをお勧めします。これにより、最初の日に月間の割り当て全体を使用してしまうことを防げます。 毎月の金額を30で割るだけです。また、より多くの時間にわたって有用性を広げるために、レート制限を検討することもできます。各方向にX GBを提供する場合は、RelayBandwidthRate を20*X KBytesに設定できます。 例えば、片道50 GBを提供する場合は、RelayBandwidthRate を1000 KBytesに設定します。このようにすると、リレーは少なくとも1日の半分は常に有効です。

    AccountingStart day 0:00
    AccountingMax 50 GBytes
    RelayBandwidthRate 1000 KBytes
    RelayBandwidthBurst 5000 KBytes # allow higher bursts but maintain average

デフォルトのオープンポートを次に示しますが、torrcで設定するかソースコードを変更することで、リレーオペレータが任意のポートをオープンできることにご注意ください。 ソースコードリリースrelease-0.4.6のsrc/or/policies.c(85行目1901行目)に従ったデフォルト:

reject 0.0.0.0/8
reject 169.254.0.0/16
reject 127.0.0.0/8
reject 192.168.0.0/16
reject 10.0.0.0/8
reject 172.16.0.0/12

reject *:25
reject *:119
reject *:135-139
reject *:445
reject *:563
reject *:1214
reject *:4661-4666
reject *:6346-6429
reject *:6699
reject *:6881-6999
accept *:*

ほとんどの場合、Torリレーに1バイト入ることは1バイト出ることを意味し、その逆も同様です。ただし、いくつかの例外があります。

DirPortを開くと、Torクライアントはディレクトリのコピーを要求します。 リクエスト(HTTP GET)は非常に小さく、レスポンスは非常に大きくなることがあります。 おそらく、これが「書き込み」バイト数と「読み出し」バイト数の差の大部分を占めているのでしょう。

もう一つの小さな例外は、あなたが出口ノードとして操作し、出口接続(例えば、インスタントメッセージングやSSH接続)から数バイトを読み取り、Torネットワークを通して転送するためにそれを512バイトのセル全体にまとめるときに現れます。

NAT/ルータデバイスでポートフォワードする方法につきましては、 portforward.com をご覧ください。

リレーが内部ネット上で動作している場合は、ポート転送を設定する必要があります。 TCP接続の転送はシステムに依存しますが、 firewalled-clients FAQ のエントリに転送方法の例があります。

また、iptablesをご利用の場合、GNU/Linuxでこれを行う方法の例を以下に示します。

/sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 9001 -j ACCEPT

別の外部インターフェース(インターネットに接続されているもの)を使用している場合は、「eth0」を変更する必要があるかもしれません。 おそらく(ループバックを除いて)1つしかないので、理解するのはそれほど難しくないはずです。

リレー検索では、過負荷の場合リレーのニックネームの横にオレンジ色の点を表示します。 これは、次のロードメトリックの1つ以上がトリガーされたことを意味します。

リレーが過負荷状態になった場合は、リレーが回復してから72時間表示されます。

リレーが過負荷になっていることに気づいたら、以下の手順をご確認ください。

  1. https://status.torproject.org/ の「Tor network」カテゴリに既知の問題がないかどうかを確認します。

  2. ネットワーク、メモリ、CPUの負荷について、システム用にsysctlをチューニングすることをご検討ください。

  3. 何が起こっているかを理解するために、MetricsPortを有効にすることをご検討ください。

ネットワーク、メモリ、CPUの負荷に対するsysctlのチューニング

TCPポートの枯渇

TCPポートが不足している場合は、ローカルポート範囲を拡張することをご検討ください。 これを行うには

# sysctl -w net.ipv4.ip_local_port_range="15000 64000"

または

# echo 15000 64000 > /proc/sys/net/ipv4/ip_local_port_range

説明されているようにsysctlを調整することは永続的ではなく、再起動時に失われることにご注意ください。 設定を永続的にするには、/etc/sysctl.confまたは/etc/sysctl.d/のファイルに設定を追加する必要があります。

MetricsPort

TorリレーとTorネットワークの健全性を理解するためには、リレーメトリクスを提供し、アクセスすることが不可欠です。 リレーのオーバーロード情報は、0.4.6+からリレー記述子に追加されましたが、基礎となるリレーメトリックへのインターフェイスであるメトリックポートが利用可能になったのは、Tor>=0.4.7.1-alphaまでではありませんでした。

MetricsPortの有効化

TorはMetricsPortというtorrcの設定オプションを使って、メトリクスポートにアクセスすることができます。

Tor MetricsPortを公開することは、Torネットワークユーザーにとって危険であることを理解することが重要です。そのためこのポートは既定で有効になっておらず、アクセスポリシーによってアクセスを管理する必要があります。 このポートを開くときには特に注意を払ってください。また、デバッグが完了したら閉じてください。

あなたがサーバー上でTorリレーを実行する唯一のユーザーであると仮定します。 metricsポートを有効にするには、torrcファイルに以下を追加します。

MetricsPort 127.0.0.1:9035
MetricsPortPolicy accept 127.0.0.1

そして、以下のようにしてメトリックを簡単に取得できます。

# curl http://127.0.0.1:9035/metrics

デフォルトではPrometheusフォーマットです。

注:そのサーバー上のすべてのユーザーが、上記の例のリレーメトリクスにアクセスできるようになります。 一般的には、MetricsPortPolicyを使って非常に厳格なアクセスポリシーを設定し、OSのファイアウォール機能を使った多層防御をご検討ください。

MetricsPortMetricsPortPolicyの詳しい説明につきましては、Torのmanページをご覧ください。

MetricsPortの出力

以下はMetricsPortを有効にすると、どのような出力が得られるかの例です(このインターフェースを安定させる必要があるため、混雑制御関連のメトリックは省略しています)。

# HELP tor_relay_connections Total number of opened connections
# TYPE tor_relay_connections gauge
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Exit",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Socks",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Directory",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Control",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent pf/netfilter listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Transparent natd listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="DNS listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Extended OR listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="HTTP tunnel listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics listener",direction="received",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="initiated",state="opened",family="ipv6"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv4"} 0
tor_relay_connections{type="Metrics",direction="received",state="opened",family="ipv6"} 0
# HELP tor_relay_connections_total Total number of created/rejected connections
# TYPE tor_relay_connections_total counter
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Exit",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Socks",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Directory",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Control",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent pf/netfilter listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Transparent natd listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="DNS listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Extended OR listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="HTTP tunnel listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics listener",direction="received",state="rejected",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="initiated",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="created",family="ipv6"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv4"} 0
tor_relay_connections_total{type="Metrics",direction="received",state="rejected",family="ipv6"} 0
# HELP tor_relay_flag Relay flags from consensus
# TYPE tor_relay_flag gauge
tor_relay_flag{type="Fast"} 0
tor_relay_flag{type="Exit"} 0
tor_relay_flag{type="Authority"} 0
tor_relay_flag{type="Stable"} 0
tor_relay_flag{type="HSDir"} 0
tor_relay_flag{type="Running"} 0
tor_relay_flag{type="V2Dir"} 0
tor_relay_flag{type="Sybil"} 0
tor_relay_flag{type="Guard"} 0
# HELP tor_relay_circuits_total Total number of circuits
# TYPE tor_relay_circuits_total gauge
tor_relay_circuits_total{state="opened"} 0
# HELP tor_relay_streams_total Total number of streams
# TYPE tor_relay_streams_total counter
tor_relay_streams_total{type="BEGIN"} 0
tor_relay_streams_total{type="BEGIN_DIR"} 0
tor_relay_streams_total{type="RESOLVE"} 0
# HELP tor_relay_traffic_bytes Traffic related counters
# TYPE tor_relay_traffic_bytes counter
tor_relay_traffic_bytes{direction="read"} 0
tor_relay_traffic_bytes{direction="written"} 0
# HELP tor_relay_dos_total Denial of Service defenses related counters
# TYPE tor_relay_dos_total counter
tor_relay_dos_total{type="circuit_rejected"} 0
tor_relay_dos_total{type="circuit_killed_max_cell"} 0
tor_relay_dos_total{type="circuit_killed_max_cell_outq"} 0
tor_relay_dos_total{type="marked_address"} 0
tor_relay_dos_total{type="marked_address_maxq"} 0
tor_relay_dos_total{type="conn_rejected"} 0
tor_relay_dos_total{type="concurrent_conn_rejected"} 0
tor_relay_dos_total{type="single_hop_refused"} 0
tor_relay_dos_total{type="introduce2_rejected"} 0
# HELP tor_relay_load_onionskins_total Total number of onionskins handled
# TYPE tor_relay_load_onionskins_total counter
tor_relay_load_onionskins_total{type="tap",action="processed"} 0
tor_relay_load_onionskins_total{type="tap",action="dropped"} 0
tor_relay_load_onionskins_total{type="fast",action="processed"} 0
tor_relay_load_onionskins_total{type="fast",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="processed"} 0
tor_relay_load_onionskins_total{type="ntor_v3",action="dropped"} 0
# HELP tor_relay_exit_dns_query_total Total number of DNS queries done by this relay
# TYPE tor_relay_exit_dns_query_total counter
tor_relay_exit_dns_query_total 0
# HELP tor_relay_exit_dns_error_total Total number of DNS errors encountered by this relay
# TYPE tor_relay_exit_dns_error_total counter
tor_relay_exit_dns_error_total{reason="success"} 0
tor_relay_exit_dns_error_total{reason="format"} 0
tor_relay_exit_dns_error_total{reason="serverfailed"} 0
tor_relay_exit_dns_error_total{reason="notexist"} 0
tor_relay_exit_dns_error_total{reason="notimpl"} 0
tor_relay_exit_dns_error_total{reason="refused"} 0
tor_relay_exit_dns_error_total{reason="truncated"} 0
tor_relay_exit_dns_error_total{reason="unknown"} 0
tor_relay_exit_dns_error_total{reason="tor_timeout"} 0
tor_relay_exit_dns_error_total{reason="shutdown"} 0
tor_relay_exit_dns_error_total{reason="cancel"} 0
tor_relay_exit_dns_error_total{reason="nodata"} 0
# HELP tor_relay_load_oom_bytes_total Total number of bytes the OOM has freed by subsystem
# TYPE tor_relay_load_oom_bytes_total counter
tor_relay_load_oom_bytes_total{subsys="cell"} 0
tor_relay_load_oom_bytes_total{subsys="dns"} 0
tor_relay_load_oom_bytes_total{subsys="geoip"} 0
tor_relay_load_oom_bytes_total{subsys="hsdir"} 0
# HELP tor_relay_load_socket_total Total number of sockets
# TYPE tor_relay_load_socket_total gauge
tor_relay_load_socket_total{state="opened"} 0
tor_relay_load_socket_total 0
# HELP tor_relay_load_tcp_exhaustion_total Total number of times we ran out of TCP ports
# TYPE tor_relay_load_tcp_exhaustion_total counter
tor_relay_load_tcp_exhaustion_total 0
# HELP tor_relay_load_global_rate_limit_reached_total Total number of global connection bucket limit reached
# TYPE tor_relay_load_global_rate_limit_reached_total counter
tor_relay_load_global_rate_limit_reached_total{side="read"} 0
tor_relay_load_global_rate_limit_reached_total{side="write"} 0

これらの行の実際の意味を探りましょう。

tor_relay_load_onionskins_total{type="ntor",action="dropped"} 0

リレーが「dropped」と表示され始める場合、通常はCPU/RAMの問題です。

Torは残念ながら、「オニオンスキン」を処理するときを_除いて_シングルスレッドです。 「オニオンスキン」は、すべての回路で有名な「オニオンレイヤ」で実行する必要がある暗号化作業です。

Torがレイヤを処理するときには、スレッドプールを使用してすべての作業をそのプールに委託します。 このプールでは、メモリまたはCPUの負荷が原因で作業が中断し始め、過負荷状態が発生する可能性があります。

サーバーがフル稼働している場合、この現象が発生する可能性が高いです。

tor_relay_exit_dns_error_total{...}

「*_dns_error_total」レルム内のカウンタ(正常なクエリーのカウンタを除く)は、DNSに関連する潜在的な問題を示しています。 しかし0.4.7のリリースサイクルの間に、DNSエラーはあまりにもノイズが多く、過負荷レポートの目的にはあまりにも誤検知が多すぎることに気付きました。 そのため、0.4.6.9と0.4.7.4-alphaからはこの目的にはもう使用していません。しかしDNSメトリックスは、リレー運営者がリレーで何が起こっているかを把握できるようにまだ保持しています。

DNSタイムアウトの問題とエラーは出口ノードにのみ適用されます。

tor_relay_load_oom_bytes_total{...}

メモリ不足の呼び出しは、RAMに問題があることを示しています。 リレーに追加のRAMが必要か、またはメモリリークが発生しています。 もしTorプロセスでメモリリークが発生していることに気づかれましたら、お手数ですがTor gitLabか、tor-relays mailing listにメールを送って問題をご報告ください。

Torには独自のOOMハンドラがあり、Torが使用可能と考える合計メモリの75%に達したときに呼び出されます。 Thus, let's say tor thinks it can use 2GB in total then at 1.5GB of memory usage, it will start freeing memory. これは過負荷状態と考えられます。

To estimate the amount of memory it has available, when tor starts, it will use MaxMemInQueues or, if not set, will look at the total RAM available on the system and apply this algorithm:

    if RAM >= 8GB {
      memory = RAM * 40%
    } else {
      memory = RAM * 75%
    }
    /* Capped. */
    memory = min(memory, 8GB) -> [8GB on 64bit and 2GB on 32bit)
    /* Minimum value. */
    memory = max(250MB, memory)

過負荷状態を避けるために、64ビットで2GB以上のRAMでリレーを実行することをお勧めします。 4GBをお勧めしますが、もちろん可能であればRAMを追加しても問題ありません。 Note: If you are running a powerful server with lots of RAM then you might end up in an overloaded state due to the default queue size limit of 8GB even though you still have plenty of RAM unused. Add an appropriate MaxMemInQueues entry to your torrc configuration in that case.

TorがOSのOOMハンドラ自身から呼び出される可能性があることに気づくかもしれません。 Torは起動時にシステム上の全メモリを使用するため、システム全体でRAMを使用して他の多くのアプリケーションを実行している場合、メモリを消費しすぎてしまいます。 この場合、OSはTorがメモリ不足に気づかないうちにOOMする可能性があります。

tor_relay_load_socket_total

開いているソケットの数が使用可能なソケットの合計数に近いか同じ場合は、リレーがソケットを使い果たしていることを示しています。 解決策はtorプロセスのulimit-nを増やすことです。

tor_relay_load_tcp_exhaustion_total

これらの行は、リレーがTCPポートを使い果たしていることを示しています。

上記のようにsysctlを調整してみてください。

tor_relay_load_global_rate_limit_reached_total

このカウンタが短期間に顕著な値だけ増加した場合、リレーは混雑しています。 大規模なOnion Serviceや、ネットワーク上で進行中のDDoSのガードとして使用されている可能性があります。

リレーがまだ過負荷で理由が不明な場合は、network-report@torproject.org までご連絡ください。 ネットワークレポートOpenPGP鍵 をご利用いただくことでメールを暗号化できます。

素晴らしい。それこそが、私たちが出口ポリシーを実施した理由です。

各Torリレーは、そのリレーからどのようなアウトバウンド接続を許可するか拒否するかを指定する出口ポリシーを持っています。 出口ポリシーはディレクトリ経由で Tor クライアントに伝えられるので、クライアントは意図した目的の宛先への接続を拒否するような出口リレーを選ぶことを自動的に避けることができます。 これにより、各リレーは、不正使用の可能性と自身の状況に基づいて、接続を許可するサービス、ホスト、およびネットワークを決定できます。 デフォルトの出口ポリシーをご利用の場合は、発生する可能性のある問題についてのサポートエントリ、および Mike Perry の悪用を最小限に抑えて出口ノードを実行するためのヒントをお読みください。

デフォルトの出口ポリシーでは、多くの一般的なサービス(ウェブブラウジングなど)へのアクセスが許可されますが、悪用の可能性(メールなど)や、Tor ネットワークが負荷を処理できない(デフォルトのファイル共有ポートなど)ために制限されるものがあります。 torrc ファイルを編集することで、終了ポリシーをご変更いただけます。 悪用される可能性を完全にとは言わないまでも、ほとんど避けたい場合、「reject *:* 」に設定してください。 この設定は、リレーが Tor ネットワーク内のトラフィックの中継に使用され、外部のウェブサイトやその他のサービスへの接続には使用されないことを意味します。

出口接続を許可する場合は、名前解決が機能している(つまり、コンピュータがインターネットアドレスを正しく解決できる)ことをご確認ください。 コンピューターが到達できないリソース(たとえば、制限の厳しいファイアウォールまたはコンテンツフィルタの背後にいる場合)がある場合は、出口ポリシーで明示的に拒否してください。そうでないと、Tor ユーザーにも影響が及びます。

Torは IPv6を部分的にサポートしています。そのため、IPv6接続が可能な場合は、すべてのリレーオペレータが torrc 設定ファイルで IPv6機能を有効にする ことをお勧めします。 当面の間、Tor はリレーにIPv4アドレスを必要とするため、IPv6アドレスのみを持つホストでは Tor リレーを実行できません。

Torリレーのセットアップを簡単かつ便利にすることを目指しています。

  • リレーが時々オフラインになっても大丈夫です。 ディレクトリはこれに素早く気づき、リレーの宣伝を停止します。 ただし切断時にリレーを使用している接続に問題が発生するため、あまり頻繁に切断することがないようご注意ください。
  • 各Torリレーには、そのリレーから許可または拒否される発信接続の種類を指定する 出口ポリシーがあります。 自分のリレーからの退出を許可することに抵抗がある場合は、他のTorリレーへの接続のみを許可するように設定することができます。
  • リレーは最近の帯域幅容量を受動的に推定して通知するので、高帯域幅リレーは低帯域幅リレーよりも多くのユーザを引き付けます。したがって、低帯域幅のリレーを使用することも有用です。

BridgeDBは、HTTPS、Moat、メール、Telegram、Settings、Reservedの6つのメカニズム を実装してブリッジを配布します。 ブリッジオペレータは、 リレー検索 でブリッジが使用しているメカニズムをご確認いただけます。 フォームにブリッジの<HASHED FINGERPRINT>を入力し、「検索」をクリックします。

オペレータは、ブリッジが使用する配信方法を選択することもできます。 To change the method, modify the BridgeDistribution setting in the torrc file to one of these: https, moat, email, telegram, settings, lox, none, any. You can find a description of each distributor in the rdsys distributors documentation.

詳細につきましては、ブリッジインストール後 のガイドをご覧ください。

Torはコンピューターにホスト名を尋ね、そのホスト名を解決することでIPアドレスを推測します。多くの場合、/etc/hostsファイルに古いIPアドレスを指す古いエントリがあります。

それでも解決しない場合は、"Address"設定オプションを使用して選択したいIPアドレスを指定する必要があります。コンピュータがNATの背後にあり内部IPアドレスしかない場合は、動的IPアドレスに関する以下のサポートエントリをご覧ください。

また、多数のアドレスがある場合は、"OutboundBindAddress"を設定して外部接続が、あなたが世界に提示するIPから来るようにすることもできます。

  • Ubuntuのリポジトリ内のパッケージは使用しないでください。確実には更新されません。それらを使用すると、重要な安定性とセキュリティの修正を見逃すことになります。
  • 以下のコマンドを実行して、Ubuntuのバージョンを確認します。
     ‪$ lsb_release -c
    
  • rootで、/etc/apt/sources.list に以下の行を追加します。「version」は、前の手順で見つけたバージョンに置き換えてください。
     deb https://deb.torproject.org/torproject.org version main
     deb-src https://deb.torproject.org/torproject.org version main
    
  • 以下のコマンドを実行して、パッケージの署名に使用するgpg鍵を追加します。
     ‪$ curl https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | sudo apt-key add -
    
  • 以下のコマンドを実行してtorをインストールし、その書名を確認します。
     ‪$ sudo apt-get update
     ‪$ sudo apt-get install tor deb.torproject.org-keyring
    

torrcファイルに追加できるオプションは2つあります。

BandwidthRateは、許容される最大長期帯域幅(バイト/秒)です。 たとえば、10 MB/秒(高速接続)の場合は 「BandwidthRate 10 MBytes」 、500 KB/秒(適切なケーブル接続)の場合は 「BandwidthRate 500 KBytes」 をお選びいただけます。 最小のBandwidthRate設定は75 KB/秒です。

BandwidthBurstは、BandwidthRateを超える短い期間のトラフィック中に要求を満たすために使用されるバイトプールですが、長い期間の平均はBandwidthRateに維持されます。 レートが低く、バーストが高い場合は、長期的な平均値が適用されますが、最近平均値に達していない場合はピーク時により多くのトラフィックが許可されます。 たとえば、 「BandwidthBurst 500 KBytes」 を選択し、それをBandwidthRateにも使用する場合、毎秒500キロバイトを超える使用はありません。ただし、より高いBandwidthBurst(5 MBytesなど)を選択すると、プールが空になるまでより多くのバイトが許可されます。

ケーブルモデムなどの非対称接続(アップロードがダウンロードより小さい)をご利用の場合は、BandwidthRateを小さい帯域幅(通常はアップロード帯域幅)より小さい値に設定する必要があります。 そうしないと、最大帯域幅の使用中に多くのパケットがドロップされる可能性があります。どの値が接続を快適にするかを試す必要がある場合があります。 次に、BandwidthBurstをBandwidthRateと同じに設定します。

LinuxベースのTorノードには、もう1つのオプションがあります。それは、自分のマシン上の他のトラフィックよりもTorトラフィックを優先させることで、自分の個人トラフィックがTor負荷の影響を受けないようにすることです。 これを実行するスクリプトは上の Tor ソースディストリビューションのcontribディレクトリにあります。

さらに休止状態オプションがあり、期間ごとに一定量の帯域幅のみを提供するように Tor に指示できます(例えば、100 GB/月) 。これらについては、 休止状態エントリ でご説明します。

BandwidthRateとBandwidthBurstはビットではなく、バイト単位であることに注意してください。