2012-03-19 5 views
12

Tor 인스턴스 실행 상태를 모니터링하고 싶습니다.제어 포트를 통해 Tor 종료 노드 IP 주소를 얻으려면 어떻게해야합니까?

제어 포트에 대한 TCP 연결을 통해 정보를 얻을 수 있습니다. 예. "GETINFO stream-status"는 데이터를 반환하지만 현재 선택된 종료 노드의 IP 주소를 확인할 수 없습니다.

whatismyip.org와 같은 것을 요청할 수도 있지만, 너무 느리고 잘 확장되지 않습니다.

그래서 Tor 연결의 종료 노드 IP 주소를 얻는 가장 좋은 방법은 무엇입니까?

+0

해결책을 찾았습니까? – Fluffy

답변

-1

Tor 제어 프로토콜 spec에 따르면 올바른 구문은 "GETINFO address"이며 the best guess at our external IP address을 렌더링해야합니다. 추측이없는 경우 551 오류를 반환합니다. "(0.1.2.2 알파에 추가).

+4

'GETINFO address '는 자신의 IP 주소를 제공합니다 (즉, 릴레이를 선택하면 다른 사람들이 볼 수있는 주소). 포스터가 물어 보는 것은 현재 회로의 출구 릴레이 주소입니다. – Damian

+0

''getinfo circuit-status''는 현재 회로를 만들고 준비 상태입니다. 여기에는 OR 이름 (라우터/홉 이름)과 ID가 포함됩니다. 이것으로 당신은''getinfo ns/id/''또는''getinfo ns/name/''으로 IP 주소를 결정할 수 있습니다 – gesell

8

을이 좋은 질문입니다! 여기 stem 사용하여 작업을 수행하는 간단한 스크립트입니다 ... 질문에 대한

from stem import CircStatus 
from stem.control import Controller 

with Controller.from_port(port = 9051) as controller: 
    controller.authenticate() 

    for circ in controller.get_circuits(): 
    if circ.status != CircStatus.BUILT: 
     continue 

    exit_fp, exit_nickname = circ.path[-1] 

    exit_desc = controller.get_network_status(exit_fp, None) 
    exit_address = exit_desc.address if exit_desc else 'unknown' 

    print "Exit relay" 
    print " fingerprint: %s" % exit_fp 
    print " nickname: %s" % exit_nickname 
    print " address: %s" % exit_address 
    print 

감사합니다. 나는이 추가되었습니다 our FAQ에.

+1

이 토르 중 어떤 것이 사용되는지 어떻게 알 수 있습니까? – Tyilo

+0

예, Tor에서 이들 중 어느 것이 사용되는지 어떻게 알 수 있습니까? – rdsoze

+0

이 python/stem 사용법은 Tor 제어 프로토콜로 어떻게 변환됩니까? GETINFO 회로 상태라고 생각합니다. –

0

당신은 tor control api를 사용할 수 있습니다.하지만이 지점을 표시하지 않습니다. 당신은 출구 노드 id~name을 알고

을, 당신은 수신 대기하는 IP 주소를 알고있다. 당신이 모르는 어떤 네트워크 인터페이스 e 및 귀하의 쿼리를 처리하는 데 사용할 IP 주소

저는 Tor 출구 노드의 약 5 %가 게시되지 않은 ipv4 주소를 사용했는지 확인했습니다.

전 세계가 ipv6으로 이동 중입니다. 이러한 IP 주소는 저렴합니다. 각 종료 노드는 ipv6 unpiblished 주소의 백을 가질 수 있습니다.