deluge in IPv6 only environments usually stops working, as many trackers
are IPv4 only. Deluge "correctly" fails to connect to the trackers and
thus does not find any peers.
This could (and in my opinion) should be easily solved: many, if not most,
IPv6 only networks have a NAT64 service deployed that allows access to the
IPv4 world via IPv6.
For instance in the network I am right now, 2a0a:e5c0:2:10::/96 maps the
whole IPv4 Internet.
This NAT64 prefix could easily be dectected using the ipv4only.arpa domain
[0] as follows:
* Detect if deluge is currently running IPv6 only (get addresses, if no
IPv4 -> IPv6 only)
* Resolve ipv4only.arpa AAAA record -> if there is an answer, DNS64 is
present
* Extract the prefix from it (some custom code, probably just subnetting a
/96)
* Reach out to trackers via IPv4 and IPv6 in parallel (happy eyeballs) -
remember which answered first and re-use next time until a timeout
At the last step, one might need to construct the IPv6 address using the
detected NAT64 prefix + IPv4 address of the tracker, if the tracker is not
a DNS name.
In a later stage the returned addresses from the tracker(s) should be
modified similarly.
I think the patches/changes required to deluge would not be very big
change, something on the line of 1 method to get the prefix, 1 method to
do happy eyeballs, a state somewhere and 1 method to do the ip address
modifications.
Would you be open for such a patch and/or what are the guidelines /
thoughts for IPv6 only support in deluge?
[0] https://tools.ietf.org/html/draft-ietf-behave-nat64-discovery-
heuristic-05
--
Ticket URL: <https://dev.deluge-torrent.org/ticket/3426>
Deluge <https://deluge-torrent.org/>
Deluge Project