Héberger un serveur sur Starlink sans adresse IPv4 publique ?

Pas directement en IPv4 : sans adresse IPv4 publique, les connexions venues d’Internet arrivent sur le NAT de votre opérateur, et ouvrir un port sur votre propre routeur ne permet pas de l’atteindre. Un tracé lancé depuis la maison en octobre 2026 est passé par une adresse privée dans le réseau de Starlink avant toute adresse publique, ce qui correspond à un NAT au niveau de l’opérateur (CGNAT) sans le prouver : le deuxième saut, celui qui le montrerait directement, n’a pas répondu.

Par Rowan Hale · Publié en

Une adresse privée dans le réseau de Starlink précède la première adresse publique

Ce tracé a été lancé en octobre 2026 depuis un ordinateur du réseau domestique. C’était le second de deux passages faits le même jour, et le deuxième saut est resté muet dans les deux.

tracepath -n -m 8 1.1.1.1

La sortie, retapée avec une étiquette en anglais à la place de chaque adresse :

défile horizontalement
 1?: [LOCALHOST]                                    pmtu 1500
 1:  home router                                    1.998ms
 1:  home router                                    1.792ms
 2:  no reply
 3:  private address (RFC 1918), Starlink's side   34.218ms
 4:  public address, SpaceX (AS14593)              35.767ms (router returned corrupted payload) asymm 7
 5:  public address, SpaceX (AS14593)              36.125ms
 6:  public address, owner not checked             35.623ms asymm 7
 7:  public address, Cloudflare                    44.837ms
 8:  public address, Cloudflare                    36.379ms asymm 9
     Too many hops: pmtu 1500

Dans cette sortie, « home router » désigne le routeur de la maison, « no reply » une absence de réponse, « private address » et « public address » une adresse privée et une adresse publique, et « owner not checked » un propriétaire qui n’a pas été vérifié.

Le saut 1 est le routeur de la maison. Le saut 2 n’a rien renvoyé. Le saut 3 est une adresse privée dans le réseau de Starlink, et la première adresse publique est le saut 4, dans le réseau de SpaceX.

Le tracé vers l’extérieur et le test vers l’intérieur, octobre 2026 Vers l’extérieur, le tracé est parti d’un ordinateur du réseau domestique vers le saut 1, le routeur de la maison, où une redirection de port serait configurée ; le saut 2 n’a envoyé aucune réponse, dans les deux passages ; le saut 3 était une adresse privée (RFC 1918) dans le réseau de Starlink ; les sauts 4 et 5 étaient des adresses publiques dans le réseau de SpaceX (AS14593), le saut 4 étant la première adresse publique ; le saut 6 était une adresse publique dont le propriétaire n’a pas été vérifié ; les sauts 7 et 8 étaient ceux de Cloudflare. Vers l’intérieur, un VPS a tenté une connexion TCP vers chacun des 8 ports de l’adresse IPv4 publique de la maison, et aucun n’a répondu en 6 s ; l’exécution ne montre pas où les connexions se sont arrêtées. le réseau domestique départ un ordinateur du réseau domestique saut 1 le routeur de la maison où une redirection de port serait configurée saut 2 pas de réponse, dans les deux passages le réseau de Starlink saut 3 une adresse privée (RFC 1918) sauts 4-5 adresses publiques, SpaceX (AS14593) ; le saut 4 est la première adresse publique saut 6 une adresse publique, propriétaire non vérifié Internet sauts 7-8 adresses publiques, celles de Cloudflare VPS une connexion TCP vers chacun des 8 ports de l’adresse IPv4 publique de la maison pas de réponse en 6 s ; l’endroit où elles se sont arrêtées n’apparaît pas le test, vers l’intérieur le tracé, vers l’extérieur Le tracé vers l’extérieur et le test vers l’intérieur, octobre 2026 Vers l’extérieur, le tracé est parti d’un ordinateur du réseau domestique vers le saut 1, le routeur de la maison, où une redirection de port serait configurée ; le saut 2 n’a envoyé aucune réponse, dans les deux passages ; le saut 3 était une adresse privée (RFC 1918) dans le réseau de Starlink ; les sauts 4 et 5 étaient des adresses publiques dans le réseau de SpaceX (AS14593), le saut 4 étant la première adresse publique ; le saut 6 était une adresse publique dont le propriétaire n’a pas été vérifié ; les sauts 7 et 8 étaient ceux de Cloudflare. Vers l’intérieur, un VPS a tenté une connexion TCP vers chacun des 8 ports de l’adresse IPv4 publique de la maison, et aucun n’a répondu en 6 s ; l’exécution ne montre pas où les connexions se sont arrêtées. le réseau domestique départ un ordinateur du réseau domestique saut 1 le routeur de la maison où une redirection de port serait configurée saut 2 pas de réponse, dans les deux passages le réseau de Starlink saut 3 une adresse privée (RFC 1918) sauts 4-5 adresses publiques, SpaceX (AS14593) ; le saut 4 est la première adresse publique saut 6 une adresse publique, propriétaire non vérifié Internet sauts 7-8 adresses publiques, celles de Cloudflare VPS une connexion TCP vers chacun des 8 ports de l’adresse IPv4 publique de la maison pas de réponse en 6 s ; l’endroit où elles se sont arrêtées n’apparaît pas le test, vers l’intérieur le tracé, vers l’extérieur
Le tracé d’octobre 2026, d’un ordinateur du réseau domestique vers l’extérieur, et le test depuis un VPS vers l’intérieur. Le saut 2 n’a jamais répondu, et le test ne peut pas montrer où ses connexions se sont arrêtées ; aucun des deux ne montre donc si le routeur de la maison détient l’adresse IPv4 publique. Le tracé et le test tels que cette page les donne, les sauts numérotés comme dans la sortie ci-dessus.

La RFC 1918 réserve des blocs d’adresses privées à l’usage interne d’un réseau. Ces adresses « have no global meaning » (n’ont pas de signification globale), et les routes qui y mènent ne doivent pas passer d’un réseau à un autre (section 3, consultée en octobre 2026). Le saut 3 n’a de sens qu’à l’intérieur du réseau de Starlink. Un saut privé avant le premier saut public, c’est ainsi qu’un NAT au niveau de l’opérateur (CGNAT) apparaît depuis l’intérieur de la maison.

La RFC 6598 réserve 100.64.0.0/10 comme « Shared Address Space » (espace d’adresses partagé) pour le NAT au niveau de l’opérateur, et prévoit que les opérateurs numérotent à partir de ce bloc les liens entre leurs équipements de CGNAT et les équipements installés chez leurs clients (résumé et sections 1 et 7, consultée en octobre 2026). Si le routeur de la maison est l’équipement placé sur ce lien, une adresse de ce bloc apparaîtrait au saut qui le suit immédiatement. C’est le saut 2, celui qui n’a pas répondu.

Avec le CGNAT, ouvrir un port sur votre routeur, par une redirection de port (port forwarding), ne suffit pas pour recevoir les connexions envoyées à l’adresse IPv4 publique. La RFC 6888 décrit un NAT au niveau de l’opérateur comme une fonction du réseau de l’opérateur qui partage une adresse IPv4 entre plusieurs abonnés. D’après sa section 2 (consultée en octobre 2026), les abonnés ont sur lui « limited or no control » (peu ou pas de contrôle), alors que sur un NAT installé chez eux, ils « typically have full control » (en ont en général le contrôle total). Une redirection de port est un réglage de ce second type de NAT.

Limite

Le tracé laisse deux questions ouvertes.

  • Comme le saut 2 est resté muet, le tracé ne peut pas montrer si l’adresse du saut 2 vient de 100.64.0.0/10.
  • Il ne peut pas non plus montrer si le routeur de la maison détient lui-même l’adresse publique : la RFC 1918 cite les interfaces de routeurs à l’intérieur d’un réseau parmi les usages des adresses privées, et décrit une architecture qui les utilise « for all internal links », c’est-à-dire pour tous les liens internes (sections 2 et 5). Un opérateur peut numéroter ses propres liens internes avec des adresses privées sans faire de NAT ; un saut 3 privé ne prouve donc pas le CGNAT à lui seul.

Depuis un VPS, aucun des 8 ports n’a répondu sur l’adresse IPv4 publique

J’ai suivi ce test en octobre 2026 ; il a été lancé depuis un VPS, un serveur dans le cloud plutôt que mon propre matériel. Un script y a tenté une connexion TCP vers chacun des 8 ports de l’adresse IPv4 publique de la connexion de la maison, dont 22, 80 et 443, en laissant 6 secondes à chacun pour répondre. Aucune redirection de port n’était configurée pour ce test. Avant les ports de la maison, le script s’est vérifié sur des cibles dont la réponse était connue.

Cible Ce qu’elle vérifie Résultat
L’adresse du VPS lui-même, port 443 la sonde voit un port ouvert comme ouvert connecté
L’adresse du VPS lui-même, port 80 la même chose, sur un second port connecté
Un résolveur public bien connu, port 443 le VPS peut joindre un autre réseau connecté
L’adresse du VPS lui-même, port 9, où rien n’écoute un port vide n’apparaît pas comme ouvert pas de réponse en 6 s
L’adresse IPv4 publique de la connexion de la maison, chacun des 8 ports le test lui-même pas de réponse en 6 s

L’exécution a duré 56 secondes. Le port vide et les 8 ports de la maison, neuf sondes en tout, ont chacun attendu les 6 secondes entières : 54 des 56. Chaque « pas de réponse » correspond à une vraie attente, pas à un échec rapide de l’outil.

Limite

L’exécution ne montre pas où les connexions se sont arrêtées ; elle ne permet donc pas de distinguer le CGNAT d’un routeur de la maison qui détiendrait l’adresse publique et rejetterait les connexions que personne à l’intérieur n’a demandées. Avec le CGNAT, l’adresse est partagée : la RFC 6888 décrit un NAT au niveau de l’opérateur comme le partage d’une adresse IPv4 entre plusieurs abonnés (section 2, consultée en octobre 2026). L’absence de réponse est alors le résultat attendu, et l’exécution ne dit rien du routeur de la maison. Elle n’a jamais vu de refus non plus. Le port vide du VPS a expiré au lieu de refuser la connexion ; ce que montre l’exécution, c’est donc que rien n’a répondu en 6 s.

Le port 25 a expiré, le 587 s’est connecté

En octobre 2026, un ordinateur du réseau domestique a tenté des connexions TCP en IPv4 vers portquiz.net, un serveur public conçu pour tester des ports. Sa page d’accueil, consultée en octobre 2026, indique qu’il « listens on all TCP ports, allowing you to test any outbound TCP port » (écoute sur tous les ports TCP, ce qui permet de tester n’importe quel port TCP sortant). Chaque connexion avait un délai d’attente de 10 secondes. Le balayage a utilisé /dev/tcp de bash, et 25 et 445 ont été retentés avec socket.create_connection de Python et timeout=10.

Port Résultat
25 (SMTP) a expiré au bout de 10,3 s
445 (SMB) a expiré au bout de 10,3 s
465 (SMTPS) connecté
587 (soumission de courrier) connecté
80 connecté
8080 connecté

Les deux ports de soumission de courrier, 465 et 587, se sont connectés. Les ports 25 et 445, non.

Limite

Le test ne montre pas où 25 et 445 ont été bloqués : au routeur de la maison, dans le réseau de Starlink ou dans le réseau de portquiz.net. Le port 25 n’est pas non plus le même test que les autres : la même page d’accueil indique que portquiz.net utilise certains ports pour de vrais services, et cite 22 et 25. Le test a été fait en IPv4 seulement ; portquiz.net n’a pas d’adresse IPv6.

Pas encore testé

  • Pourquoi le saut 2 ne répond pas. Un tracé dans lequel il répondrait montrerait ce qui se trouve juste après le routeur de la maison, et une adresse de 100.64.0.0/10 à cet endroit correspond à l’usage pour lequel la RFC 6598 réserve ce bloc.
  • Où 25 et 445 sont bloqués. Il faudrait refaire le même test depuis un autre réseau.
  • L’IPv6 entrant. Rien sur cette page ne montre si une connexion en IPv6 peut atteindre un serveur à la maison.

La page d’aide de Starlink What IP address does Starlink provide? décrit en termes généraux sa politique IPv4 par défaut : la configuration IPv4 par défaut « uses Carrier-Grade Network Address Translation (CGNAT) using private address space from the 100.64.0.0/10 prefix » (utilise le CGNAT avec un espace d’adresses privées du préfixe 100.64.0.0/10), et cette politique « does not allow inbound traffic » (n’autorise pas le trafic entrant). La même page indique que les clients qui ont besoin de trafic entrant « should consider using a third-party router, and if IPv4 inbound traffic is needed, a Starlink service plan with the public IPv4 option » (devraient envisager un routeur tiers et, s’ils ont besoin de trafic IPv4 entrant, un forfait Starlink avec l’option d’adresse IPv4 publique), et c’est une option des forfaits Priority (page consultée en octobre 2026). C’est ce que Starlink dit de son service, pas un résultat du tracé de cette page, et cette page ne teste aucune de ces deux voies. Ce qu’implique chacune de ces voies figure sur la page sur ce que l’on perd en quittant un fournisseur d’accès filaire.

Pour contourner l’absence d’adresse IPv4 publique, une solution consiste à établir une connexion qui part de l’intérieur de votre réseau. La documentation de Cloudflare sur Cloudflare Tunnel indique que son connecteur, cloudflared, n’ouvre que des connexions sortantes vers le réseau de Cloudflare, ce qui permet à un serveur de servir du trafic via Cloudflare sans adresse IP routable publiquement (page mise à jour pour la dernière fois en août 2026, consultée en octobre 2026). Cette page ne le teste pas.

Voir ce que ces résultats signifient si vous choisissez une connexion pour un homelab.

Sources

  1. RFC 1918: Address Allocation for Private Internets, IETF, consulté en
  2. RFC 6598: IANA-Reserved IPv4 Prefix for Shared Address Space, IETF, consulté en
  3. RFC 6888: Common Requirements for Carrier-Grade NATs (CGNs), IETF, consulté en
  4. Cloudflare Tunnel, Cloudflare, consulté en
  5. portquiz.net home page, portquiz.net, consulté en
  6. What IP address does Starlink provide?, Starlink, consulté en
  7. Starlink a-t-il un programme de parrainage ?, Starlink, consulté en

Journal des tests

  1. Test Depuis un VPS, une connexion TCP vers chacun des 8 ports de l’adresse IPv4 publique de la maison, avec des contrôles. Aucun n’a répondu en 6 s.
  2. Test Deux tracés de la route vers l’extérieur depuis un ordinateur du réseau domestique, et des connexions TCP sortantes vers portquiz.net sur six ports.
  • Starlink convient-il à un homelab ? Le verdict de cinq tests

    Sur la seule connexion Starlink domestique testée, des paquets de 1500 octets ont traversé la connexion en IPv4 et en IPv6 en octobre 2026, et les allers-retours en IPv4 ont connu des pics à quatre secondes fixes de chaque minute dans l’un de deux tests d’une heure, avec 901 pings perdus sur 143 462 sur l’ensemble des deux ; les moyens de contourner le NAT au niveau de l’opérateur (CGNAT), comme un tunnel qui part de l’intérieur de votre réseau, ne sont pas testés ici.

  • Starlink plans and prices in the US, and why yours can differ (en anglais)

    You can compare the monthly prices in Starlink's US broadband label files, read in October 2026: they price plans named Residential, at $120 a month, and Residential Lite, at $80, Roam at two prices, and Local and Global Priority as an access fee plus data blocks.

Tous les guides de cette section

  • Héberger un serveur de jeu sur Starlink avec un relais sur un VPS gratuit

    Oui, pour un jeu qui utilise TCP, comme Minecraft Java Edition : la page d’aide de Starlink indique que sa configuration IPv4 par défaut utilise un NAT au niveau de l’opérateur (CGNAT) et « does not allow inbound traffic » (n’autorise pas le trafic entrant ; octobre 2026) ; les joueurs se connectent donc plutôt à une VM dans le cloud qui a une adresse IPv4 publique, et un relais sur cette VM fait passer chaque connexion par un tailnet jusqu’au serveur de jeu à la maison.

  • Ping instable sur Starlink : la latence seconde par seconde

    Dans l’une de deux séances d’une heure, les allers-retours en IPv4 ont le plus changé, avec des pics, aux secondes 12, 27, 42 et 57 de chaque minute ; dans l’autre séance, et en IPv6, la règle du test n’a trouvé aucun motif de ce type.

  • MTU Starlink : la MTU du chemin mesurée à 1500 octets

    La MTU du chemin depuis une connexion Starlink à la maison était de 1500 octets en IPv4 comme en IPv6, sur chaque chemin testé.