Enabling IPv6 support for IPv4-only apps on Linux

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • trickle

    Trickle is a userland bandwidth shaper for Unix-like systems.

  • This method could apply to other tools with the same IPv4/IPv6 behaviour, without further modification. Changing the behaviour in the utility directly would only fix it for that one utility meaning that to fix another you need to do the same work again. It is perhaps also safer than modifying such a core component as SSH: if you introduce a bug the trick can be easily disabled until fixed, if you accidentally break SSH you might cause yourself significantly more hassle.

    > This sort of negates that advantage

    LD_PRELOAD trickery doesn't negate the advantage of having full source access, patching SSH would also have been a perfectly valid option, but is perhaps a better tool for this particular job.

    For another use of the trick see https://github.com/mariusae/trickle (the project looks stale, though that may be because it is properly done and there have been no security/other bugs to fix in recent history) which slips its own functions in the call chain to apply user controlled (rather than firewall/routing level) throughput shaping to utilities that don't offer it out of the box.

  • ip6neigh

    Giving local DNS names to IPv6 SLAAC addresses [OpenWrt/LEDE shell script]

  • 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...

    [3]: https://github.com/AndreBL/ip6neigh/

    [4]: https://nicmx.github.io/Jool/en/bib.html

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • elpriser

  • No, that is the problem. They worked with less and less websites until there were none left. I needed to install some packages, which I could just put on my own server.

    And I have an old Blackberry Bold that now show current electricity prices, so I know when to starte my washing machine. That can also run on own webserver.

    https://gitlab.com/nelgaard/elpriser

  • WSL

    Issues found on WSL

  • The prerelease finally supports ipv6: https://github.com/microsoft/WSL/releases

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts