나는 이 문제로 거의 하루를 낭비했다.
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를 지원합니다"가 사실이라면 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
만일의 경우를 제외하고는@anonnecroguest답변:
Dante SOCKS 서버는 규칙 문에 사용할 수 있는 5개의 명령(,,,,, )
bind
을 지원 합니다 . 개념적으로 이는 두 가지 범주로 구분됩니다. 처음 세 개는 내부 고객의 요청에 해당합니다. 시작 주소는 내부 클라이언트의 주소가 되고 끝 주소는 클라이언트가 통신하려는 외부 컴퓨터의 주소가 됩니다.connect
udpassociate
bindrepy
udpreply
나머지 두 개(
bindreply
및udpreply
)는 외부 호스트와의 통신 결과에 해당하며, 바인드를 사용하여 생성된 포트 바인딩으로 설정된 TCP 연결 또는 udpasssociate를 사용하여 바인딩된 포트로 전송된 UDP 패킷입니다. 두 명령 모두에서 from 주소는 외부 호스트에 해당하고 to 주소는 내부 클라이언트에 해당합니다. 따라서 두 명령 세트에 대해 별도의 규칙이 생성됩니다.
원천:https://www.inet.no/dante/doc/1.3.x/config/server.html
UDP의 경우 바인딩 작업이 지원되지 않습니다. SOCKS 클라이언트는 첫 번째 UDP 패킷을 보내야 합니다. SOCKS 클라이언트는 또한 SOCKS 서버가 보내는 UDP 패킷을 전달하기 위해 어떤 주소를 사용하고 있는지 알 수 있는 직접적인 방법이 없습니다... 셋째
, 원격 호스트가 SOCKS 클라이언트에 연결을 시도하거나 UDP 패킷을 보내려고 할 때 : 고객이 이전에 생성한 연결입니다.BIND
UDPASSOCIATE
원천: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/5113030(Dante를 사용한 UDP 릴레이 구성...)
https://www.inet.no/dante/doc/1.4.x/config/session.html(이 페이지에서는 세션 기능을 구성하는 방법을 설명합니다....)