poeml / mirrorbrain

MirrorBrain
http://mirrorbrain.org/
Other
75 stars 37 forks source link

IPv6 single stack clients are redirected to mirrors with IPv4 only #161

Open rkarlsba opened 8 years ago

rkarlsba commented 8 years ago

Hi

Seems clients with IPv6 only are redirected to servers with IPv4 only. Guess the problem goes both ways. Yes, I know there are workarounds like proxies and NAT64, but this is still an issue and shouldn't be very hard to fix.

roy

plugwash commented 8 years ago

To be more specific mirrorbrain currently has a field that can be used to mark ipv6 only mirrors but no corresponding field for marking ipv4 only mirrors.

DimStar77 commented 7 years ago

I think the biggest issue here for mirrorbrain is that it would not know if the client is running dual stack ip4/ip6; everything is at the moment assumed to be ipv4 capable, for servers unless ipv6only is set. For clients, there is ipv4-only assumed or dualstack (if ip4only, any non ipv6only server is capable to handle it)

plugwash commented 7 years ago

Indeed, there is no perfect solution. Dual stack clients will generally try ipv6 first. So either you restrict dual stack clients to v6-capable mirrors or you leave v6-only clients broken.

I still think an "ipv4only" parameter should be added. It would then be up to the admin of the mirrorbrain instance whether to use it (and make things work for IPv6-only clients at the expense limiting the mirrors used by dual stack clients) or not (and leave things broken for IPv6-only clients).

DimStar77 commented 7 years ago

I started some sample work in a branch: https://github.com/DimStar77/mirrorbrain/commits/ipv6-prefixes

This is based on a small db format change, prefix no longer being part of the server table, but actually a joined table containing serverid and prefix (a server is likely to have to prefixes, one v4 and one 6)

mod_mirrorbrain then uses the clientaddress to only query servers with a prefix in the same family

This is all proof of concept code and not ready to merge or anything... comments are welcome though

imcdona commented 6 years ago

I'm unable to download packages on an IPv6 only host from https://download.opensuse.org/ which just so happens to be running mirrorbrain. Downloads are being redirected to provo-mirror.opensuse.org which doesn't have an AAAA record.

Any chance https://github.com/poeml/mirrorbrain/pull/168 that @DimStar77 submitted can be merged?