SOCKSプロキシ(Danted)がUDPポートを開くように強制する方法

SOCKSプロキシ(Danted)がUDPポートを開くように強制する方法

私はこの問題でほぼ一日を無駄にしました。

2台のコンピュータがあります。 1. Windowsをクライアントに、10.20.30.20 2. Debian(最新)をサーバーに、10.20.30.10

Dante(SOCKSプロキシ)をインストールして設定/再起動しました。 「1」では、このSOCKSプロキシ(10.20.30.10/1080TCP)を使用できます。 (Firefox、認証なし)

そのため、このプロキシをuTorrentの接続設定に追加しました。プロキシサーバー:タイプ=SOCKS5、プロキシ=10.20.30.10、ポート=1080、認証なし

uTorrentはSOCKSプロキシを使用して起動しますが、DHT / UDPに接続できません。 uTorrentはこれらの接続を確立します(はい)。

*65432 = uTorrent's Listening Port

TCP 10.20.30.20:(random)->10.20.30.10:1080 {Yeah, this is what I'm expected!}
UDP 10.20.30.20:65432->10.20.30.10:(random) {Huh?}

uTorrentはUDPパケットを生成し、DanteはUDPポートを開かないため、UDPパケットはサーバー上で無視(削除)されます。 Danteは1ポート(TCP 1080)のみを開きます。そして、uTorrentがUDPを中継するときになぜTCPプロトコルを使用しないのかわかりません。

私の質問は次のとおりです。 1. 要求時に Dante が UDP ポートを動的に開くようにするにはどうすればよいですか。 2. 「SOCKS5がUDPをサポートしています」がtrueの場合、uTorrentがUDPをTCPポートに送信できないのはなぜですか?


ダンテ設定

logoutput: syslog
internal: 10.20.30.10 port = 1080
external: tun0
method: username none
clientmethod: none
user.privileged: root
user.notprivileged: nobody
user.libwrap: nobody
connecttimeout: 50

client pass {
from: 10.20.30.20/32 port 1024-65535 to: 0.0.0.0/0
}
client block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

block {
from: 0.0.0.0/0 to: 127.0.0.0/8
log: connect error
}
pass {
from: 10.20.30.20/32 to: 0.0.0.0/0
protocol: tcp udp
#command: bind connect udpassociate
##^ I already tried Enable/Disable command, change from to 0.0.0.0/0, and so on, but no success!
}
block {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect error
}

答え1

UDPを使用しましたがUDPが機能しないという同じ問題に直面しましたprotocol: tcp udp。使用後に以下をソックス転送コマンドに変更すると、私には効果的でした。

client pass...
client block...

socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bind connect udpassociate
}
socks pass {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    command: bindreply udpreply
}

答え2

場合を除き、アノンネクロゲスト答え:

Dante SOCKSサーバーは、ルールステートメントで使用できる5つのコマンド(、、、、、、)bindをサポートします。概念的には、これは2つのカテゴリに分けられます。最初の3つは内部顧客の要求に対応します。開始アドレスは内部クライアントのアドレスになり、終了アドレスはクライアントが通信しようとしている外部コンピュータのアドレスになります。connectudpassociatebindrepyudpreply

残りの2つ(bindreplyおよびudpreply)は外部ホストとの通信結果に対応し、バインドを使用して作成されたポートバインディングに設定されたTCP接続、またはudpasssociateを使用してバインドされたポートに送信されたUDPパケットです。どちらのコマンドでも、from アドレスは外部ホストに対応し、 to アドレスは内部クライアントに対応します。したがって、2つの命令セットに対して別々のルールが生成される。

源泉:https://www.inet.no/dante/doc/1.3.x/config/server.html

UDP の場合、バインディング操作はサポートされません。 SOCKSクライアントは最初のUDPパケットを送信する必要があります。 SOCKSクライアントは
、SOCKSサーバーが送信するUDPパケットを転送するためにどのアドレスを使用しているかを知るための直接的な方法もありません。顧客が以前に作成した接続。BINDUDPASSOCIATE

源泉:https://www.inet.no/dante/doc/1.4.x/config/socks.html

#generic pass statement - bind/outgoing traffic
socks pass {  
        from: 0.0.0.0/0 to: 0.0.0.0/0
        command: bind connect udpassociate
#        log: error # connect disconnect iooperation
        socksmethod: authmethod2
}

# ...

# generic pass statement for incoming connections/packets
socks pass {
        from: 0.0.0.0/0 to: 0.0.0.0/0
        command: bindreply udpreply
#        log: error # connect disconnect iooperation
} ```

源泉:https://www.inet.no/dante/doc/1.4.x/config/auth.html


関連:
https://stackoverflow.com/a/49975561/5113030Danteを使用したUDPリレーの設定...)
https://www.inet.no/dante/doc/1.4.x/config/session.htmlこのページでは、セッション機能を構成する方法について説明します。...)

関連情報