I made a Terrible decision of a project at Netflix. The idea was that you could swap out an IPv4 (AF_INET/SOCK_STREAM) socket with an AF_INET6 one. Turns out actually doing this with the Linux kernel is exceptionally difficult. You can swap out the underlying sk, but doing it safely is damn near impossible because the two data structures aren’t really built like that. One day, I’d love if someone added the ability to…
Enabling IPv6 support for IPv4-only apps on Linux
71–80 of 199 posts
Re: Enabling IPv6 support for IPv4-only apps on Linux
#72Re: Enabling IPv6 support for IPv4-only apps on Linux
#73I think retrofitting IPv4-only apps for IPv6 compatibility might be a short-term fix. It could be more forward-thinking to focus on developing new apps with inherent IPv6 support to prevent accruing technical debt and facing complications tied to maintaining outdated IPv4-only applications.
Please name and shame software/hardware that doesn't support IPv6 released after 2017 (when the IPv6 standard was finally finalized).
Re: Enabling IPv6 support for IPv4-only apps on Linux
#74Earlier quoted context omitted.
An average user is not expected to do that. But I understand there are mobile operators out there who have been doing this (instead of NAT) for a while because they don't have IPv4 addresses for every consumer subscription? Wasn't T-Mobile US one of them? (Not living in the US.)
An average user shouldn't be able to find hardware not supporting IPv6, because it shouldn't be allowed to be sold. (And soon, hardware supporting IPv4.) Just like it happened with digital TV standards.
Re: Enabling IPv6 support for IPv4-only apps on Linux
#75Earlier quoted context omitted.
The only reason for that "rule" is SLAAC.
Actually it's primarily due to NDP and EUI-64. Eliminating ARP is a very good thing for reasons of scalability, reliability and security.
EUI-64 is a part of SLAAC, not NDP.
Finally, NDP is not really any more secure at least than ARP (at least not if you don't implement SEND as well, which I'm not sure if anyone does, at least in consumer networks). Not sure about reliability or scalability either.
Re: Enabling IPv6 support for IPv4-only apps on Linux
#76Earlier quoted context omitted.
Can't you provide DNS servers as part of router advertisement packets ? RFC8106
This requires client support though, which isn't a given.
Re: Enabling IPv6 support for IPv4-only apps on Linux
#77Would be interesting to know which applications actually have problems with v6 - the example with directly using a v4 IP is more a user error, not an application issue. I pretty much stopped submitting patches enabling v6 functionality to various projects back in 2005 as everything I cared about was working at that point. (Side note, I was just trying to search a few of those - but seems that period pretty much doesn…
Re: Enabling IPv6 support for IPv4-only apps on Linux
#78The main advantage of Linux over other systems is that its available from source and thus can be patched and recompiled easily. Here we see someone using LD_PRELOAD to patch the behavior of a binary, because they rely on distributions pre-compiled packages without means to change the source code themselves. This sort of negates that advantage, right?
Re: Enabling IPv6 support for IPv4-only apps on Linux
#79Would be interesting to know which applications actually have problems with v6 - the example with directly using a v4 IP is more a user error, not an application issue. I pretty much stopped submitting patches enabling v6 functionality to various projects back in 2005 as everything I cared about was working at that point. (Side note, I was just trying to search a few of those - but seems that period pretty much doesn…
WSL2 famously doesn’t support ipv6 (because of NAT) which is mightily annoying.
Re: Enabling IPv6 support for IPv4-only apps on Linux
#80Does anyone have a good write up of taking ones home network and going 100% ipv6 including dealing with iot devices that can't? I am thinking of doing it but I have a huge mix of devices from linux to windows and servers.
It works by having several IPv6-only subnets and a dual stack router (running openwrt) that performs stateful NAT64 [1] using Jool. This allows to access both the IPv4 internet and local IPv4 islands[2] (basically old devices like printers).
There's no DHCP or NAPT involved: the router gets a /56 prefix from the ISP and performs prefix delegation, so every device does SLAAC and assigns itself a fully routable IPv6 address.
For DNS I use dnscrypt-proxy2: it's very easy to set up and it can do DNS64 and static hostnames mapping. Since prefix is stable, I just assign names to the stable EUI-64 addresses of the hosts I care about. Alternatively you can use bind for DNS64 and mDNS if you don't like manually assigning names. There's also a script to automatically assigns names based on ICMPv6 neighbours discovery [3].
I also host some services on the IPv4 internet from IPv6-only hosts: for this you need the NAT64 equivalent of port forwarding, which is setting up static BIB entries [4].
[1]: https://nicmx.github.io/Jool/en/intro-xlat.html#stateful-nat...
[2]: https://ungleich.ch/u/blog/managing-ipv4-islands-with-jool-a...