FranceHostun service RootLab
Guide pratique

Utiliser GitHub depuis un VPS IPv6 uniquement.

Sur un serveur sans IPv4, git clone https://github.com/… échoue : github.com n'a toujours pas d'adresse IPv6. Voici pourquoi, et trois façons de s'en sortir, de la plus simple à la plus propre.

Pourquoi git clone échoue en IPv6

Un VPS en IPv6 uniquement ne peut joindre que les serveurs qui publient une adresse IPv6 (un enregistrement DNS AAAA). Or github.com, l'API de GitHub et son registre de conteneurs ghcr.io n'en publient pas. Le message d'erreur ressemble à ceci :

fatal: unable to access 'https://github.com/…': Could not resolve host: github.com

ou, selon la configuration, Network is unreachable. Vous pouvez le vérifier vous-même :

getent ahostsv6 github.com    # aucune réponse : pas d'IPv6
getent ahostsv6 debian.org    # des adresses en 2001:… : IPv6 OK

Tout GitHub n'est pas concerné : raw.githubusercontent.com, qui sert les fichiers bruts, est joignable en IPv6. Mais le clonage, les git pull et la plupart des téléchargements passent par github.com.

Solution 1 : un service NAT64/DNS64 (la plus simple)

Un service NAT64/DNS64 fait le pont entre votre VPS et les sites encore en IPv4. Son serveur DNS (le DNS64) répond aux noms qui n'ont pas d'IPv6 avec une adresse IPv6 spéciale ; sa passerelle (le NAT64) reçoit le trafic sur cette adresse et le relaie en IPv4. Pour votre VPS, tout se passe comme si GitHub avait l'IPv6 : il n'y a rien d'autre à configurer.

Le service public et gratuit nat64.net fournit trois serveurs DNS64 :

2a00:1098:2b::1
2a00:1098:2c::1
2a01:4f9:c010:3f02::1

Vérifiez ces adresses sur nat64.net avant de les utiliser : elles peuvent changer. Il faut ensuite les déclarer comme serveurs DNS de votre VPS. Regardez d'abord comment votre système gère le DNS :

ls -l /etc/resolv.conf

Si le fichier pointe vers systemd-resolved

C'est le cas si la commande affiche /run/systemd/resolve/stub-resolv.conf. Créez un fichier de réglage :

mkdir -p /etc/systemd/resolved.conf.d
cat > /etc/systemd/resolved.conf.d/nat64.conf <<'EOF'
[Resolve]
DNS=2a00:1098:2b::1 2a00:1098:2c::1 2a01:4f9:c010:3f02::1
Domains=~.
EOF
systemctl restart systemd-resolved

La ligne Domains=~. fait passer toutes les requêtes par ces serveurs, même si votre interface réseau en annonce d'autres.

Si c'est un fichier ordinaire

Remplacez son contenu par :

nameserver 2a00:1098:2b::1
nameserver 2a00:1098:2c::1
nameserver 2a01:4f9:c010:3f02::1

Vérifier

getent ahostsv6 github.com
git clone https://github.com/git/git.git --depth 1

Une adresse en 2a00:1098:… ou 2a01:4f9:… s'affiche pour github.com, et le clonage fonctionne. Les connexions SSH à GitHub (git@github.com) passent en principe par le même chemin.

À savoir : un service NAT64 public est géré par un tiers, gratuitement et sans garantie. Il voit passer les connexions vers les sites IPv4 que vous joignez : GitHub étant en HTTPS ou en SSH, le contenu reste chiffré. Pour un service critique, ne dépendez pas uniquement de lui, et lisez ses conditions d'utilisation.

Solution 2 : envoyer le code depuis votre ordinateur

Si vous déployez votre propre projet, le VPS n'a pas forcément besoin de parler à GitHub. Votre ordinateur, lui, joint GitHub normalement ; il peut ensuite pousser le code vers le VPS en IPv6. Créez un dépôt vide sur le serveur :

git init --bare /srv/monprojet.git

puis, sur votre ordinateur, ajoutez le VPS comme second dépôt distant :

git remote add vps root@[2001:db8::10]:/srv/monprojet.git
git push vps main

Remplacez 2001:db8::10 par l'adresse de votre VPS. Avec un raccourci dans ~/.ssh/config (voir le guide du VPS IPv6), vps:/srv/monprojet.git suffit. Pour copier des fichiers ponctuellement, rsync ou scp font aussi l'affaire.

Solution 3 : passer par un miroir joignable en IPv6

Pour des fichiers isolés (un script d'installation, un fichier de configuration), raw.githubusercontent.com est joignable en IPv6. Pour des dépôts entiers, vous pouvez héberger un miroir sur une forge qui a l'IPv6, par exemple une instance Forgejo ou Gitea : ces logiciels savent synchroniser automatiquement un dépôt GitHub.

Et Docker, npm, pip ?

La bonne nouvelle : la plupart des dépôts de paquets ont l'IPv6. Les dépôts Debian et Ubuntu, npm (registry.npmjs.org), PyPI (pypi.org) et nodejs.org fonctionnent directement. Pour Docker Hub, utilisez son point d'accès IPv6 registry.ipv6.docker.com. Les images hébergées sur ghcr.io, elles, demandent la solution NAT64.

Questions fréquentes

Pourquoi GitHub ne marche-t-il pas sur mon VPS IPv6 ?

Parce que github.com n'a pas d'adresse IPv6 : un serveur qui n'a que l'IPv6 ne peut pas le joindre directement. Un service NAT64/DNS64 fait le pont vers l'IPv4.

Le NAT64 ralentit-il ma connexion ?

Un peu, puisque le trafic vers les sites IPv4 fait un détour par la passerelle du service. Pour cloner un dépôt ou installer des paquets, la différence est rarement gênante. Les sites qui ont l'IPv6 ne passent pas par la passerelle.

Le NAT64 change-t-il quelque chose pour les sites qui ont déjà l'IPv6 ?

Non. Le DNS64 ne fabrique une adresse spéciale que pour les noms qui n'ont pas d'IPv6. Les autres, comme les dépôts Debian, sont joints directement.

Puis-je utiliser Docker avec ghcr.io ?

ghcr.io n'a pas d'IPv6 non plus : il faut passer par un service NAT64. Pour Docker Hub, le point d'accès registry.ipv6.docker.com fonctionne directement en IPv6.

Un VPS IPv6 pour vos projets

Accès root, SSD, RAM DDR3 ECC, hébergé en France, dès 1,49 € par mois.