Testing NetworkManager CLAT support

NetworkManager CLAT support has been merged! What is a CLAT? In IPv6-only or IPv6-mostly networks, access to IPv4 resources is often required. The most promising way IPv4 access can be provided is through a 464xlat deployment in the network, which provides IPv4 over the top of an IPv6-only infrastructure infrastructure. A key piece in this deployment is a CLAT (or Client-side Translator), which translates IPv4 traffic to IPv6 so it can be sent to the PLAT (or Provider-side Translator). Operating Systems that include CLATs today iOS macOS Android ChromeOS Windows (on LTE/5G interfaces only) In fact, a major LTE/5G provider in the US has been using 464xlat to provide IPv4-over-IPv6 for well over a decade, allowing them to operate a majority of their mobile network infrastructure as IPv6-only. There has been a concerted effort to bring CLAT functionality to more devices, and NetworkManager has recently merged in initial CLAT support, bringing Linux systems closer to an IPv6-only world. Can I Test It? This feature has not been released yet, but if you're keen to try it out, the NetworkManager nightly RPM builds makes this easy. Note that nightly builds are experimental and can break unexpectedly -- be sure to test on a system you're ok breaking. First you'll need a network with NAT64, PREF64, and DHCPv4 Option 108 enabled. If you don't have these deployed in your network the IPv6 Test Pod Project is here for you! After you have a 464xlat-ready network, you'll need to install the nightly build of NetworkManager, below are some command snippets that will work on Fedora and RHEL-based Linux distributions. nmcli --version # 1.54.3-2.fc43 sudo dnf install -y copr sudo dnf copr enable networkmanager/NetworkManger-main sudo dnf upgrade # Upgrade to nightly build reboot nmcli --version # 1.57.2~dev-34410.fc43 # Enable CLAT and DHCP Option 108 sudo nmcli connection show sudo nmcli connection show "Wired connection 1" | grep -E 'clat|ipv6-only' sudo nmcli connection modify "Wired connection 1" \ ipv4.clat auto \ ipv4.dhcp-ipv6-only-preferred auto sudo nmcli connection up "Wired connection 1" # View CLAT configuration ip -4 addr ip -4 route # Check CLAT functionality curl -6v canhazip.com curl -4v canhazip.com traceroute -4 canhazip.com Note that to enable the CLAT 1) The PREF64 attribute must be present in an IPv6 Router Advertisement and 2) DHCPv4 option 108 must be enabled in the network -or- there DHCPv4 services must be disabled in the network. After enabling and activating the CLAT, you should see something like the following: What happens next? CLAT functionality is slated to be in NetworkManager release 1.58. Until it's more thoroughly tested, the CLAT will be disabled by default. This is a big step forward in readying Linux for an IPv6-only future. Until then, it's worth testing this feature if you have a spare desktop/laptop/vm and 464XLAT available on your network. If you'd like to follow further CLAT improvements in NetworkManager, keep an eye out CLAT related for issues and merge requests And don't wait for this feature to be available everywhere. With the advent of [RFC8925 - IPv6-Only Preferred Option for DHCPv4][5], aka DHCP option 108, aka "IPv6 Mostly", you can gradually deploy IPv6-only networks on your network to devices that support it.

IPv6 Test Pod

Extending the Vector Packet Processing Engine

I've been building core networking components to leverage VPP more fully as a branch router. Here is an overview of that work.

https://enigmatick.social/objects?uuid=b5cfe32e-e1ba-40da-80a1-e6f5bcfb6149

Enigmatick

Mission: Connect to a device on the LAN (Local Area Network)
Scenario: #IPv6mostly network - supported clients get only #IPv6 addresses due to DHCP option 108 -> #464XLAT
Roku app:

Update:
Während ich kurz telefonieren war, hat @jana ein CLAT-Container gebaut, der in meinem v6only Kubernetes tut. https://codeberg.org/itz_jana/tundra-nat64-container

Einziges Problem: Wir haben noch ein hässliches NAT66. #ipv6 #uplink26 #464xlat

Windows CLAT Enters Private Preview: A Milestone for IPv6 Adoption | Microsoft Community Hub

IPv6 Adoption: A Global Shift Since its standardization in the late 1990s, IPv6 has steadily gained traction. The last 15 years, especially since World IPv6...

TECHCOMMUNITY.MICROSOFT.COM

#NetworkManager just got #464XLAT CLAT support merged in.
IMHO this is a major step for #IPv6-only/mostly support on Linux, with NetworkManager likely being the most used network tool on Linux desktops out there.
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2107

Huge thanks to @mary who started the implementation and bgalvani who brought it over the finish line, and of course everyone else who contributed to it someway.

Add support for CLAT using a BPF program (!2107) · Merge requests · NetworkManager / NetworkManager · GitLab

Summary Implements a CLAT (part of a larger 464XLAT ipv6 transition mechanism) in NetworkManager

GitLab

#NetworkManager will now include #CLAT capabilities: https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2107 is now merged, functionality will be available on a future release.

Thanks to everyone involved 🙂

#IPv6 #464XLAT #IPv6mostly #Linux

Add support for CLAT using a BPF program (!2107) · Merge requests · NetworkManager / NetworkManager · GitLab

Summary Implements a CLAT (part of a larger 464XLAT ipv6 transition mechanism) in NetworkManager

GitLab

Does anyone know how to run an #IPv6 #464XLAT #CLAT client inside a #Proxmox LXC container? clatd ( https://github.com/toreanderson/clatd ) doesn't work because tayga is unable to create a tun interface inside the LXC and I have some software to run that, you guessed it, is still stuck on the obsolete protocol + I don't want to create a full VM just for it.

- cc @apalrd

GitHub - toreanderson/clatd: A 464XLAT CLAT implementation for Linux

A 464XLAT CLAT implementation for Linux. Contribute to toreanderson/clatd development by creating an account on GitHub.

GitHub

WAIT A MINUTE: #Steam working with #464XLAT in #Linux ??? Am I delusional??? 🤯

#IPv6 #IPv6Mostly

Finally I convinced my Linux laptop to adhere the DHCPv4 Option 108 and use #clat to connect to IPv4 addresses - I'm not even sure whether I have any applications that insist on using IPv4... #ipv6 #464xlat