(or: living in the present, trapped in the past)
IPv6 has been around for roughly forever™, yet in the year 2026 GitHub still behaves like the internet ends at 0.0.0.0/0.
If you are running an IPv6-only host (because you enjoy modern networking) you may have noticed that GitHub is unreachable.
git clone fails and HTTPS goes nowhere.
Option 1: The /etc/hosts + proxy hack
One straightforward workaround is to route GitHub traffic through an IPv6-accessible proxy that speaks IPv4 on your behalf.
A public proxy is provided by Daniel Winzen, which exposes the GitHub services over IPv6.
Because DNS is a suggestion and /etc/hosts is the law, we simply override GitHub’s hostnames there:
2a01:4f8:c010:d56::2 github.com
2a01:4f8:c010:d56::3 api.github.com
2a01:4f8:c010:d56::4 codeload.github.com
2a01:4f8:c010:d56::6 ghcr.io
2a01:4f8:c010:d56::7 pkg.github.com npm.pkg.github.com maven.pkg.github.com nuget.pkg.github.com rubygems.pkg.github.com
2a01:4f8:c010:d56::8 uploads.github.com
2606:50c0:8000::133 objects.githubusercontent.com www.objects.githubusercontent.com release-assets.githubusercontent.com gist.githubusercontent.com repository-images.githubusercontent.com camo.githubusercontent.com private-user-images.githubusercontent.com avatars0.githubusercontent.com avatars1.githubusercontent.com avatars2.githubusercontent.com avatars3.githubusercontent.com cloud.githubusercontent.com desktop.githubusercontent.com support.github.com
2606:50c0:8000::154 support-assets.githubassets.com github.githubassets.com opengraph.githubassets.com github-registry-files.githubusercontent.com github-cloud.githubusercontent.com
After that, you can use GitHub as usual.
Without modifying /etc/hosts, you can use the proxy as following.
Via HTTPS
git clone https://danwin1210.de:1443/DanWin/le-chat-php.git
or via SSH
git clone git@github-ipv6-proxy.danwin1210.de:DanWin/le-chat-php.git
But using this approach with HTTPS you are man-in-the-middle’ing yourself on purpose (SSL is broken in the middle. So do not transfer any sensitive information! You’ve been warned!).
Option 2: NAT64 / DNS64
In short: your IPv6-only machine asks for a AAAA record, the DNS64 server makes one up from the IPv4 address,
and NAT64 magically translates your IPv6 packets into IPv4 on the fly. It’s like sending a letter in Elvish
and having a goblin deliver it in Klingon. Somehow, the message still arrives, but only if the magical translator
(the NAT64) is awake and caffeinated. Not every network has this wizardry, but when it works, you can access
IPv4-only services without touching /etc/hosts.
If your network does not support NAT64/DNS64 (and you don’t feel like doing it yourself), you can use a public NAT64 service instead.
Let’s take nat64.net as an example.
The easy way is to enter the DNS servers listed under Configure your system to use these nameservers: into your /etc/resolv.conf.
However, this means that all DNS queries will then go through the DNS servers of nat64.net.
If that is not an option, find the first DNS server from the website (at the time of this blog post its 2a01:4f8:c2c:123f::1)
and we’ll use the magic of /etc/hosts again.
To do this, we find the AAAA DNS entry of github.com via nat64.net’s DNS server and add to it:
dig +short github.com AAAA @2a01:4f8:c2c:123f::1 | sed -e 's/$/ github.com/g' >> /etc/hosts
After that, github.com should be usable as normal for cloning repositories.