トレントについて話すとき、アクティブモードとパッシブモードがあります。パッシブとは、ピアにアクティブに接続できない場合です。アクティブとは、ポートがフォワーダーであり、他の人があなたに接続できる場合です。
これまでに行ったことは、サーバーにDebianがインストールされていることです。次に、GatewayPorts yes
をsshd_configファイルに追加しました。その後、PuTTYで、次の構成をセットアップしました。
-リモートポートも同じことをします
-ローカルポートは他のホストからの接続を受け入れます
次に、次のような新しいフォワードを追加しました。4D8080
(IPv4、動的、PCのポート8080)。
この後、localhost
、ポート8080
ですべて可能な接続にSOCKS5プロキシを使用するようにuTorrentを設定しました。しかし、私のクライアントは右下の部分に赤いサインを表示します。
これに対する解決策はありますか? (何かが確かに正しくありません。私も0個のDHTノードを取得します。)
2つの問題(接続できないこととDHTノードが見つからないこと)は関連していますが、原因と解決策が異なります。
着信接続を受け入れるには、次の3つのことを実行する必要があります。
UTorrentがリッスンするリモートポートをクライアントマシンに転送します。
設定→接続→リスニングポート→着信接続に使用されるポートで、uTorrentを使用すると着信接続用に単一のポートを指定できます。 40000
に設定します(たとえば)。
このポートを転送するには、PuTTYに接続→SSH→トンネルと入力し、次の転送ポートを追加します。
R40000 127.0.0.1:40000
チェックローカルポートが他のホストからの接続を受け入れるこれには必須でも望ましくもありません。これは、他のマシンがコンピューターに接続し、転送されたローカルポートと動的ポートを利用できるようにするために使用されます。
サーバーでGatewayPorts
をclientspecified
に設定した場合にのみ、リモートポートが同じことを行うチェックが必要です。 yes
またはno
に設定されている場合、このオプションは効果がありません。
UTorrentが正しいIPをトラッカーに報告するようにします。
デフォルトでは、トラッカーはIPをピアリストに追加するときに最良の推測になります。動的ポート転送might(これはトラッカーによって異なります)により、ローカルIPアドレス(10.xxx.yyy.zzz
)がピアリストに追加されます。代わりに追加する必要があるIPは、サーバーの1つです。
Preferences→BitTorrent→IP/Hostnameで指定して、トラッカーに報告できます。すべてのトラッカーがこの設定を尊重するわけではありませんが、役立つはずです。
UTorrentが着信接続を受け入れることを許可します。
設定→詳細では、ビットフィールド bt.transp_disposition を変更できます。
TCPおよびUDP接続(以下を参照)にリモートポート転送でSSHトンネルを使用する場合は、13
に設定します。これにより、発信TCPと着信TCPおよびUDPピアツーピア接続が可能になります。
PuTTYとSSHはUDPポートをリッスンしないため、転送したダイナミックポートもリモートポートもそのままでは機能しません。 DHTはUDPを使用しているため、どちらも機能しません。
サーバー(apt-get install socat
)とクライアントマシン( Socat for Windows を使用)に socat をインストールすると、着信UDP接続をTCP接続、トンネルを介して転送し、クライアントマシンでUDP接続に変換し直します。
これを行うには、実行します
socat udp4-listen:40000,reuseaddr,fork tcp:localhost:50000
サーバー上で
socat tcp4-listen:50000,reuseaddr,fork UDP:localhost:40000
クライアントマシン上。
ポート番号50000
の選択は任意ですが、40000
とは異なる必要があります(接続タイプを区別できるようにするため)。
実際の転送では、PuTTYに接続→SSH→トンネルと入力し、次の転送ポートを追加します。
R50000 127.0.0.1:50000
SSHトンネルを介した発信UDP接続のルーティングはそれほど簡単ではなく、不可能な場合もあります。 socat
は特定のポートのみをリッスンするため、上記の方法は機能しませんが、発信接続の宛先ポートは何でもかまいません。また、TCPパケットが動的に転送されたポートに到達すると、そのポートに何が起こるかを制御することはできません。
ピアごとにUDP接続を設定することは可能ですが、それはおそらく努力する価値がありません。最初のピアに接続すると、DHTは着信接続で正常に機能するはずです。
逆に行う必要があります...他のホストからの接続を受け入れるリモートポートが必要です。また、サーバーのファイアウォールルールにより、uTorrentプリファレンスで設定されたリスニングポートへの着信トラフィックが許可されます。 (これが靴下を介して伝播するかどうかはわかりませんが、試してnetstat
を確認する必要があります)
動的SOCKSプロキシモード(「D」オプション)は、プロトコルにそのようなプロビジョニングがないため、着信接続を処理できません。結局のところ、プロキシプロトコルは発信接続のみを処理することになっています。
SSHサーバーがポートをリッスンしてパケットをリダイレクトするように、リモートリダイレクト(「R」オプション)を追加する必要があります。次のマニュアルページの抜粋を参照してください。
-R [bind_address:]port:Host:hostport
Specifies that the given port on the remote (server) Host is to
be forwarded to the given Host and port on the local side. This
works by allocating a socket to listen to port on the remote
side, and whenever a connection is made to this port, the connec-
tion is forwarded over the secure channel, and a connection is
made to Host port hostport from the local machine.
Port forwardings can also be specified in the configuration file.
Privileged ports can be forwarded only when logging in as root on
the remote machine. IPv6 addresses can be specified by enclosing
the address in square braces or using an alternative syntax:
[bind_address/]Host/port/hostport.
By default, the listening socket on the server will be bound to
the loopback interface only. This may be overriden by specifying
a bind_address. An empty bind_address, or the address '*', indi-
cates that the remote socket should listen on all interfaces.
Specifying a remote bind_address will only succeed if the
server's GatewayPorts option is enabled (see sshd_config(5)).
ただし、このポート転送機能は、リモートピアのオリジンIPを変更する可能性があり、ビットトレントプロトコルを台無しにする可能性があることに注意してください。この場合、SSHの代わりにVPNを使用する必要があります。