#25979: Stem, Tor LTS, broken exit policies, and maybe microdescriptor issues too -------------------------------+-------------------- Reporter: pastly | Owner: atagar Type: defect | Status: new Priority: Medium | Milestone: Component: Core Tor/Stem | Version: Severity: Normal | Keywords: Actual Points: | Parent ID: Points: | Reviewer: Sponsor: | -------------------------------+-------------------- [https://github.com/pastly/simple-bw- scanner/blob/656619f51ecfb88ff8909b79c5bd7c6830ec7872/sbws/lib/relaylist.py#L71 Here in sbws ] I'm wanting to see what exits in the Tor network allow exiting to an ip:port.
However, there seems to be an issue revolving around microdescriptors and the "exit policy summaries" contained in them. Perhaps related to #24110, I can't tell because I don't understand these details enough. stem version: 1.6.0 Tor version: 0.2.9.14 torrc: {{{ ORPort 3537 SocksPort 3538 ControlPort 3536 CookieAuthentication 1 DataDirectory /home/pastly/run/livenet1 PidFile /home/pastly/run/livenet1/tor.pid Log notice file /home/pastly/run/livenet1/notice.log ControlSocket /home/pastly/run/livenet1/control_socket ContactInfo XXXXXXXXXXXX RunAsDaemon 1 Nickname XXXXXXXXXXXXX SafeLogging 0 DisableDebuggerAttachment 0 MaxAdvertisedBandwidth 8 Mbits ExitRelay 1 ExitPolicyRejectPrivate 0 # The public IP address of this machine, and a port on it ExitPolicy accept xx.xx.xx.xx:yyyy ExitPolicy reject *:* }}} Traceback: Mostly unhelpful, since it's mostly code in my "http" branch of sbws. But you can see the exception. `e` is a RouterStatusEntryV3 for a relay with the Exit flag {{{ Traceback (most recent call last): File "/home/pastly/src/simple-bw-scanner/sbws/core/scanner.py", line 247, in dispatch_worker_thread return measure_relay(*a, **kw) File "/home/pastly/src/simple-bw-scanner/sbws/core/scanner.py", line 193, in measure_relay exits = rl.exits_can_exit_to(dest.hostname, dest.port) File "/home/pastly/src/simple-bw-scanner/sbws/lib/relaylist.py", line 100, in exits_can_exit_to if e.exit_policy.can_exit_to(host, port): KeyError: (<stem.exit_policy.MicroExitPolicy object at 0x7f9c8c5f5ac8>, '144.217.254.208', 80) }}} If I try only giving a port, same basic traceback (only last few lines included) ... {{{ File "/home/pastly/src/simple-bw-scanner/sbws/lib/relaylist.py", line 101, in exits_can_exit_to if e.exit_policy.can_exit_to(port=port): KeyError: (<stem.exit_policy.MicroExitPolicy object at 0x7fb97545fd30>, <object object at 0x7fb992dba080>, ('port', 80)) }}} Additional information: - If I use an 02914 client without setting `UseMicrodescriptors 0`, the exit_policy members are None. (hence some disconnect between line numbers in the tracebook in order to find and log Nones) - If I use an 02914 client with `UseMicrodescriptors 0`, I get the above tracebacks - If I use an 02914 relay as the client, I get the above traceback - This wasn't an issue when I was using an 03210 authority as the client My theories: - In 02914, one must tell Tor to NOT use microdescs in order to get SOMETHING stored as a RouterStatusEntryV3's exit policy - Even when you get SOMETHING stored in a RouterStatusEntryV3's exit policy when using 02914, it is buggy/missing information/something bad. - Something changed between 02914 and 03210 regarding the way Tor tells its controllers about (micro)descriptors and the exit policies within. This is most likely a stem bug, possibly exacerbated by a Tor bug. -- Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25979> Tor Bug Tracker & Wiki <https://trac.torproject.org/> The Tor Project: anonymity online
_______________________________________________ tor-bugs mailing list tor-bugs@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs