|
|
See the [[org/roadmaps/Tor/IPv6Features|IPv6 Feature Matrix]] for the latest progress on Tor and IPv6.
|
|
|
(It's more up-to-date.)
|
|
|
|
|
|
"Turns out, 4 billion addresses wasn't enough." -- nickm
|
|
|
|
|
|
The work with adding IPv6 support to Tor follows these phases, roughly
|
|
|
the same as outlined in
|
|
|
[https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/ideas/xxx-ipv6-roadmap.txt xxx-ipv6-roadmap.txt]. This page is meant to function as a status page
|
|
|
for each of the phases and of the project as a whole.
|
|
|
|
|
|
There's also information about how to [#Helptesting help out with testing].
|
|
|
|
|
|
At the bottom of the page can be found a section with
|
|
|
[#Relatedresources pointers to related resources].
|
|
|
|
|
|
== The phases and their status ==
|
|
|
=== Clients to private bridges (0.2.3.9-alpha) ===
|
|
|
|
|
|
Private bridges are bridge relays that don't register with the bridge
|
|
|
authority (PublishServerDescriptor 0). Support for running a private
|
|
|
bridge with an IPv6 OR port and clients connecting to it was added to
|
|
|
tor in 0.2.3.9-alpha (2011-12-08).
|
|
|
|
|
|
This work was tracked in #3563.
|
|
|
|
|
|
Note that clients on 0.2.4.{1,2,3} need both ClientUseIPv6 and
|
|
|
ClientPreferIPv6ORPort to be set in order to use IPv6 for its first
|
|
|
hop due to #6757.
|
|
|
|
|
|
=== Clients to ordinary bridges (0.2.3.21-rc, 0.2.4.1-alpha) ===
|
|
|
|
|
|
Ordinary bridges publish their descriptor to the bridge
|
|
|
authority. Support for bridge authorities to handle announced IPv6 OR
|
|
|
is included in tor 0.2.4.x.
|
|
|
|
|
|
This work was tracked in #4563.
|
|
|
|
|
|
Note that clients on 0.2.4.{1,2,3} need both ClientUseIPv6 and
|
|
|
ClientPreferIPv6ORPort to be set in order to use IPv6 for its first
|
|
|
hop due to #6757.
|
|
|
|
|
|
=== Clients to relays (0.2.4.1-alpha) ===
|
|
|
|
|
|
Relays that are not bridges publish their descriptor to the directory
|
|
|
authoritites. Directory authorities vote on relays and publish a
|
|
|
consensus document. Support for relays with an IPv6 OR port and for
|
|
|
directory authorities to handle their descriptors, voting on them and
|
|
|
publishing a consensus containing IPv6 OR ports is included in tor
|
|
|
0.2.4.x.
|
|
|
|
|
|
This work was tracked in #4564.
|
|
|
|
|
|
=== Exit relays to IPv6 destinations (0.2.4.8-alpha) ===
|
|
|
|
|
|
Exit relays connect to hosts on internet. Support for exits connecting to
|
|
|
IPv6 addresses on internet was included in the 0.2.4.8-alpha release.
|
|
|
|
|
|
This work was tracked in #5547.
|
|
|
|
|
|
=== Directory authorities on IPv6 (0.2.8.0-alpha-dev) ===
|
|
|
|
|
|
Clients and relays talk to directory authorities. The work with making
|
|
|
directory authorities reachable over IPv6 was merged into 0.2.8-alpha-dev.
|
|
|
|
|
|
This work was tracked in #6027 and #17327.
|
|
|
|
|
|
=== Fallback directory mirrors on IPv6 (0.2.8.0-alpha-dev) ===
|
|
|
|
|
|
Clients and relays can also talk to [/wiki/doc/FallbackDirectoryMirrors fallback directory mirrors] over IPv6.
|
|
|
We're currently running an opt-in trial for fallback directory mirrors (#17158).
|
|
|
|
|
|
This work was tracked in #8374 and #17327.
|
|
|
|
|
|
=== Client bootstrap via IPv6 (0.2.8.0-alpha-dev) ===
|
|
|
|
|
|
Clients can bootstrap using directory authorities or fallback directory mirrors over IPv6.
|
|
|
These fixes also ensure that clients choose IPv6 ORPorts more consistently.
|
|
|
We also maintain bridge clients' preference for IPv6, while fixing some of their address selection code.
|
|
|
|
|
|
This work was tracked in #17840 and #17281.
|
|
|
|
|
|
=== Automatic Client OR connection via IPv6 (0.3.?) ===
|
|
|
|
|
|
Configuring Tor clients for IPv6 requires Tor users to know whether IPv4 or IPv6 works better for them.
|
|
|
Tor could use a "happy eyeballs"-like algorithm to try both IPv4 and IPv6, and switch between them depending on which one works better.
|
|
|
|
|
|
This work is being tracked in #17217 and #17835.
|
|
|
|
|
|
=== Relays to relays ===
|
|
|
|
|
|
Relays talk to other relays. The work with relays talking to other
|
|
|
relays over IPv6 has not been started.
|
|
|
|
|
|
This work will be tracked in #4565.
|
|
|
|
|
|
== Help testing ==
|
|
|
|
|
|
If you have the opportunity, please help out testing this.
|
|
|
|
|
|
Please [/projects/tor/newticket file a bug report] in Trac if you find
|
|
|
something that doesn't work or seem to be doing the wrong thing.
|
|
|
|
|
|
=== Testing clients running via IPv6 ===
|
|
|
|
|
|
In order to test a client over IPv6 (without bridges), run tor 0.2.8.0-alpha-dev or later.
|
|
|
|
|
|
Configure it to use IPv6 using the one following sets of options:
|
|
|
|
|
|
For IPv6-only clients:
|
|
|
{{{
|
|
|
ClientUseIPv4 0
|
|
|
}}}
|
|
|
|
|
|
Or for IPv4/IPv6 (dual-stack) clients that prefer IPv6:
|
|
|
{{{
|
|
|
ClientUseIPv6 1
|
|
|
ClientPreferIPv6ORPort 1
|
|
|
ClientPreferIPv6DirPort 1
|
|
|
}}}
|
|
|
|
|
|
=== Testing clients running with bridges ===
|
|
|
|
|
|
In order to test a client to connect to a bridge over IPv6, run tor
|
|
|
0.2.3.9-alpha or later. Configure it to use the IPv6 bridge using the
|
|
|
Bridge configuration option, like this:
|
|
|
|
|
|
{{{
|
|
|
Bridge [2001:DB8::1]:9050
|
|
|
}}}
|
|
|
|
|
|
=== Testing private bridges ===
|
|
|
|
|
|
In order to test a private bridge running an OR port on IPv6, run tor
|
|
|
0.2.3.9-alpha or later. Configure it to bind to and announce an IPv6
|
|
|
OR port by using the ORPort configuration option, like this:
|
|
|
|
|
|
{{{
|
|
|
ORPort [2001:DB8::1]:9050
|
|
|
}}}
|
|
|
|
|
|
Note that you'll have to have an IPv4 OR port configured as well, or
|
|
|
your bridge will bootstrap but leave its clients hanging at 50% (see
|
|
|
#4847).
|
|
|
|
|
|
Note also that even with that bug fixed, a bridge will need IPv4
|
|
|
connectivity for talking to other relays. That won't change any time
|
|
|
soon.
|
|
|
|
|
|
Since mid September 2012 the bridge authority handles IPv6 OR ports.
|
|
|
|
|
|
=== Testing public bridges ===
|
|
|
|
|
|
In order to test public bridges, run tor 0.2.3.21-rc / 0.2.4.3-alpha
|
|
|
or later. Configure it with an IPv6 ORPort just like a private bridge.
|
|
|
|
|
|
Your bridge will show in [https://bridges.torproject.org/?ipv6=True],
|
|
|
eventually.
|
|
|
|
|
|
== Related resources ==
|
|
|
|
|
|
* [https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/ideas/xxx-ipv6-roadmap.txt torspec/proposals/ideas/xxx-ipv6-roadmap.txt]
|
|
|
* [https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/proposals/186-multiple-orports.txt torspec/proposals/proposals/186-multiple-orports.txt]
|
|
|
* [https://gitweb.torproject.org/torspec.git/blob/HEAD:/proposals/proposals/200-new-create-and-extend-cells.txt torspec/proposals/proposals/200-new-create-and-extend-cells.txt]
|
|
|
* [https://trac.torproject.org/projects/tor/wiki/doc/IPv6RelayHowto A Tor relay operators IPv6 HOWTO]
|
|
|
* [https://trac.torproject.org/projects/tor/wiki/doc/FallbackDirectoryMirrors Fallback Directory Mirrors]
|
|
|
* [https://lists.torproject.org/pipermail/tor-relays/2016-November/011060.html a tor-relays post describing the next steps for IPv6 in tor in November 2016] |