Opened 3 weeks ago

Last modified 6 hours ago

#32864 assigned enhancement

Reproduce Arthur's exit failures and then contact or badexit the relays

Reported by: arma Owned by: gk
Priority: Medium Milestone:
Component: Community/Relays Version:
Severity: Normal Keywords: network-health, GeorgKoppen202001
Cc: nusenu, ggus, arthuredelstein Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

lists a pile of exit relays, including some very fast exit relays, that are failing all of their dns queries. That is, they claim to be exits but Tor clients probably rarely use them, yet clients still *try* to use them, contributing to the long tail of low-probability high-impact misery of being a Tor client.

We should verify that we agree with his scripts, and also make sure we are comfortable running the checks on our own.

Then we should contact the affected relays, and either get them to fix their dns, or figure out what the bug is, or failing all of that, set the badexit flag for them to save clients the trouble of trying them and failing.

Then once we've done a round of that, we should come up with a process by which we repeat it regularly.

Child Tickets

Change History (3)

comment:1 Changed 3 weeks ago by gk

Keywords: GeorgKoppen202001 added

comment:2 Changed 6 days ago by gk

I just stumbled over #24014 and #26691 for more context and a potentially bigger plan.

comment:3 Changed 6 hours ago by gk

Cc: arthuredelstein added

So, I started looking into this but I don't even get a single successful run so far (I tried twice). After a while, during the third round in the exit relay loop the script, is throwing exceptions and breaks:

main function encountered error
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/twisted/internet/", line 501, in errback
  File "/usr/lib/python3/dist-packages/twisted/internet/", line 568, in _startRunCallbacks
  File "/usr/lib/python3/dist-packages/twisted/internet/", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/usr/lib/python3/dist-packages/twisted/internet/", line 1475, in gotResult
    _inlineCallbacks(r, g, status)
--- <exception caught here> ---
  File "/usr/lib/python3/dist-packages/twisted/internet/", line 1416, in _inlineCallbacks
    result = result.throwExceptionIntoGenerator(g)
  File "/usr/lib/python3/dist-packages/twisted/python/", line 491, in throwExceptionIntoGenerator
    return g.throw(self.type, self.value, self.tb)
  File "/home/gk/exit-dns/tor_dns_survey/", line 125, in _main
    exit_results = await test_relays(reactor, state, socks, [guard1], exits, 10, bareIP)
  File "/home/gk/exit-dns/tor_dns_survey/", line 105, in test_relays
    result = await time_two_hop(reactor, state, socks, relay, exit_node, bareIP)
  File "/home/gk/exit-dns/tor_dns_survey/", line 76, in time_two_hop
    circuit_results = await build_two_hop_circuit(state, guard, exit_node)
  File "/home/gk/exit-dns/tor_dns_survey/", line 54, in build_two_hop_circuit
    return { "circuit" : circuit,
builtins.UnboundLocalError: local variable 'circuit' referenced before assignment

I wonder how Arthur is running that and whether he encountered similar bugs. This is with Tor, Python 3.7.3, python3-txtorcon 18.3.0-1 on a Debian 10 system.

Last edited 6 hours ago by gk (previous) (diff)
Note: See TracTickets for help on using tickets.