Opened 2 years ago

Closed 19 months ago

#19608 closed defect (fixed)

IPv6-only clients can't fetch microdescriptors on 0.2.8.5-rc

Reported by: teor Owned by:
Priority: High Milestone: Tor: 0.2.8.x-final
Component: Core Tor/Tor Version: Tor: 0.2.8.2-alpha
Severity: Major Keywords: ipv6, microdesc, fallbacks, regression
Cc: Actual Points: 0.5
Parent ID: #20996 Points: 0.5
Reviewer: Sponsor:

Description

There's a lovely catch-22 when IPv6-only clients try to fetch microdescriptors:

  • some fallback directories are on IPv6, and deliver the microdescriptor consensus
  • but the microdescriptor consensus doesn't contain any IPv6 addresses
  • but it's a consensus, so IPv6-only clients try to use it to find an IPv6 relay, and fail

A solution is to teach IPv6-only clients to get (at least some of) their descriptors from the fallback directories, at least until they have some IPv6 microdescriptors. Perhaps this should happen automatically when the entire consensus fails, but for some reason it doesn't.

I have no idea how we didn't catch this during testing - perhaps there were always cached descriptors? Perhaps we broke falling back to the fallbacks for descriptors?

Child Tickets

Change History (9)

comment:1 Changed 2 years ago by teor

Actual Points: 0.5
Keywords: microdesc fallbacks added
Status: newneeds_review
Version: Tor: 0.2.8.2-alpha

Please see my branch bug19608 on https://github.com/teor2345/tor.git

It fixes this issue by checking routerstatus reachability based only on the addresses in the routerstatus. (We were checking the node, but this causes issues when there is no node, and it's inaccurate anyway, as the connection address is taken from the routerstatus, not the node.)

I've tested this on an IPv6-only BSD box, and it works with and without bridges, with and without microdescriptors.

This could end up overloading the IPv6 fallbacks if we have lots of IPv6-only clients. I split that issue off into #19610, and stuck it into 0.3.0.

comment:2 Changed 2 years ago by nickm

Resolution: fixed
Status: needs_reviewclosed

I've merged it onto 0.2.8.

comment:3 Changed 2 years ago by teor

Keywords: regression added
Resolution: fixed
Status: closedreopened

I just tested 0.2.8.7 and master, and ClientUseIPv4 0 only bootstraps with UseMicrodescriptors 0.

I wonder what went wrong?

comment:4 Changed 2 years ago by nickm

Priority: MediumHigh

I can confirm.

comment:5 Changed 2 years ago by teor

At the very least, we should fix this by updating the man page and listing the UseMicrodescriptors 0 workaround. But it would be nice to fix the bug itself.

comment:6 Changed 20 months ago by teor

Closing this in favour of #20996.

comment:7 Changed 20 months ago by teor

Resolution: duplicate
Status: reopenedclosed

comment:8 Changed 20 months ago by teor

Parent ID: #20996
Resolution: duplicate
Status: closedreopened

This will be fixed when #20996 is fixed.

comment:9 Changed 19 months ago by teor

Resolution: fixed
Status: reopenedclosed
Note: See TracTickets for help on using tickets.