Aller au contenu
selfhostr

guide · 8 min de lecture

Ouvrir un port sur son routeur

Guide générique, quelle que soit la box. Y compris le test CGNAT à faire AVANT, et ce que le port ouvert vous coûte vraiment.

Vos services tournent chez vous. Depuis le canapé, tout marche. Depuis le train, plus rien — et c'est normal : votre routeur ne laisse entrer personne.

Ouvrir un port, c'est lui dire « quand quelqu'un frappe ici, envoie-le à cette machine ». Ce guide explique comment le faire sur n'importe quelle box, ce qu'il faut savoir avant, et pourquoi ce site vous recommande une autre méthode.

Avant tout : vérifiez que c'est seulement possible

Une grande partie des accès fibre français, et la totalité des accès 4G/5G, vous donnent une adresse publique partagée entre plusieurs abonnés. C'est le CGNAT. Dans ce cas, aucune redirection de port ne fonctionnera, jamais, quoi que vous cochiez : l'adresse sur laquelle on frappe n'est pas la vôtre.

Le test tient en deux minutes. Relevez d'abord l'adresse publique que vous voyez depuis chez vous :

curl -4 ifconfig.me

Puis ouvrez l'interface de votre box et cherchez l'adresse WAN de son interface Internet. Si les deux sont identiques, la suite de ce guide peut fonctionner. Si elles diffèrent — la box affiche une adresse en 100.64.x.x à 100.127.x.x, ou en 10.x.x.x — vous êtes derrière un CGNAT.

Deux issues alors : demander une adresse IPv4 publique à votre opérateur (gratuit chez certains, payant ou impossible chez d'autres), ou passer par un tunnel, qui n'a besoin d'aucune adresse publique. Mettre en place Cloudflare Tunnel couvre le second cas, et c'est de toute façon la méthode qu'on recommande.

Ce dont vous avez besoin

  • L'adresse IP locale de votre serveur, celle en 192.168.x.x ou 10.x.x.x. ip -br a sur le serveur, ou la liste des appareils connectés dans votre box.
  • Le numéro de port que votre service écoute. C'est le premier nombre de la ligne ports de votre docker-compose.yml : dans "8096:8096", c'est
  • L'accès administrateur à votre box.

Étape 1 — Fixer l'adresse du serveur, d'abord

C'est l'étape que tout le monde saute, et c'est celle qui fait que la redirection cesse de fonctionner trois semaines plus tard sans explication.

Votre box distribue les adresses en DHCP, avec des baux qui expirent. Le jour où votre serveur redémarre après une coupure, il peut recevoir 192.168.1.57 au lieu de 192.168.1.42. Votre règle, elle, pointe toujours vers .42 — où se trouve maintenant une télévision.

Dans l'interface de votre box, cherchez bail statique, réservation DHCP, DHCP statique ou address reservation selon la traduction. Associez l'adresse voulue à l'adresse MAC du serveur, que la même page vous montre en général.

Étape 2 — Trouver l'écran, quel que soit son nom

Toutes les box ont cette fonction ; presque aucune ne l'appelle pareil. Cherchez, dans cet ordre :

  • NAT/PAT — Livebox (Orange), et une partie des routeurs professionnels
  • Redirection de ports ou Port forwarding — Freebox, Bbox, la plupart des routeurs du commerce
  • Gestion des ports ou Règles de NAT — SFR Box
  • Virtual Server — TP-Link, D-Link, beaucoup de matériel asiatique
  • Applications & GamingSingle Port Forwarding — Linksys
  • Firewall → Port forwards — OPNsense, pfSense, OpenWrt

L'adresse de l'interface est presque toujours 192.168.1.1 ou 192.168.0.1. Sur une Freebox, c'est mafreebox.freebox.fr. En cas de doute, ip route | grep default sur n'importe quelle machine du réseau donne l'adresse de la box.

Étape 3 — Créer la règle

Les champs changent de nom, jamais de sens :

Ce qu'on vous demande Ce que ça veut dire Exemple
Nom / Description Pour vous, uniquement jellyfin
Protocole TCP dans 95 % des cas TCP
Port externe / WAN / de début Ce sur quoi on frappe depuis dehors 8096
IP interne / LAN / Destination Votre serveur 192.168.1.42
Port interne / de destination Ce que le service écoute 8096

Port externe et port interne peuvent différer, et c'est souvent une bonne idée. Exposer Jellyfin sur le port externe 41096 plutôt que 8096 ne le rend pas sûr, mais le retire des scans les plus paresseux, qui ne testent que les ports connus.

Ce qu'il ne faut pas faire, quoi qu'en dise un forum : activer la DMZ. Elle redirige tous les ports vers une machine — vous n'ouvrez plus une porte, vous retirez le mur. Une règle par service, toujours.

Étape 4 — Ouvrir le pare-feu du serveur aussi

Une redirection amène le trafic jusqu'à la machine ; le pare-feu de la machine peut encore le refuser. Si vous avez suivi le guide Ubuntu, ufw est actif :

sudo ufw allow 8096/tcp
sudo ufw status

C'est la deuxième cause de « j'ai bien créé la règle et ça ne marche pas ».

Étape 5 — Tester depuis l'extérieur

Depuis le réseau local, le test ne vaut rien. Beaucoup de box ne savent pas renvoyer vers l'intérieur une requête partie de l'intérieur — c'est le NAT hairpinning, ou son absence. Vous obtiendrez soit une erreur alors que tout fonctionne, soit une réussite qui ne prouve rien.

Testez depuis un réseau qui n'est pas le vôtre :

  • Coupez le Wi-Fi de votre téléphone et ouvrez http://VOTRE-IP-PUBLIQUE:8096 en 4G.
  • Ou utilisez un testeur de port en ligne, en lui donnant votre adresse publique et le numéro.

Si ça ne répond pas, reprenez dans cet ordre : le CGNAT (étape 0), l'adresse IP du serveur qui a peut-être changé (étape 1), le pare-feu du serveur (étape 4), le service qui n'écoute peut-être que sur 127.0.0.1. Depuis le serveur, sudo ss -tulpn | grep 8096 doit montrer 0.0.0.0:8096 et non 127.0.0.1:8096.

Étape 6 — L'adresse publique change

Chez la plupart des opérateurs grand public, elle bouge — au redémarrage de la box, ou de temps en temps sans prévenir. Retenir un nombre qui change ne mène nulle part.

La réponse s'appelle le DNS dynamique : un nom de domaine qui suit votre adresse. Un petit client tourne chez vous et prévient le service à chaque changement. Beaucoup de box en intègrent un (cherchez DynDNS ou DNS dynamique), et DuckDNS ou No-IP proposent des offres gratuites.

Si vous avez déjà un domaine chez Cloudflare, ce même mécanisme y existe — et à ce stade, autant lire la section suivante.

Ce que vous venez vraiment de faire

Il faut le dire clairement, parce que la plupart des guides ne le disent pas.

Vous avez rendu un service joignable par la terre entière. Dans l'heure qui suit, des robots frapperont dessus : ils balaient en permanence l'intégralité des adresses IPv4, et ils n'ont pas besoin de savoir que vous existez pour vous trouver.

Ce qui devient alors vrai :

  • Chaque faille de ce service est votre problème. Un Jellyfin non mis à jour exposé sur Internet est une machine qui finit par appartenir à quelqu'un d'autre — et de là, tout le réseau local est à portée.
  • En HTTP, tout circule en clair. Mot de passe compris. Un port ouvert sans certificat, c'est un mot de passe lisible à chaque hôtel, chaque gare, chaque réseau traversé.
  • Votre adresse IP publique désigne votre domicile, à quelques rues près. Elle apparaît désormais dans les journaux de tous ceux qui la scannent.

Le minimum, si vous ouvrez quand même : jamais le port 22 en SSH vers l'extérieur, jamais un service sans authentification, et un reverse proxy avec HTTPS devant tout ce qui demande un mot de passe.

L'alternative, et pourquoi ce site la préfère

Un tunnel sortant renverse le sens de la connexion : un petit programme tourne chez vous et sort vers un service externe, qui devient le point d'entrée public. Plus rien n'entre. Aucun port ouvert, votre adresse publique n'apparaît nulle part, et le certificat HTTPS est fourni.

Deux façons, gratuites toutes les deux pour un usage personnel :

  • Cloudflare Tunnel, si vous voulez que vos services soient publics — un domaine suffit.
  • Tailscale ou WireGuard, si vous voulez y accéder vous seul depuis vos propres appareils. Rien n'est public, et c'est de loin la solution la plus sûre.

Ouvrir un port reste la bonne réponse dans quelques cas : un serveur de jeu, un protocole qu'un tunnel HTTP ne transporte pas, ou simplement l'envie de ne dépendre de personne. Dans tous les autres, la case que vous venez de cocher vous coûte plus qu'elle ne vous apporte.

Vidéo

Une redirection de port créée pas à pas sur une Livebox. L'exemple vise une console de jeu et une box précise, mais c'est exactement la manipulation décrite ici : l'écran change de nom d'un fournisseur à l'autre, jamais le principe.

Rien n'est envoyé à YouTube tant que vous n'avez pas lancé la lecture. Ce site ne dépose aucun cookie qui lui soit propre.Regarder sur YouTube