Générateur de port aléatoire

Générez des numéros de port TCP ou UDP aléatoires dans n'importe quelle plage, en ignorant automatiquement les ports de services bien connus et couramment utilisés afin que vos services locaux n'entrent pas en conflit.

Un numéro de port que personne d'autre sur votre machine n'est susceptible de vouloir. Choisissez le nombre de ports nécessaires et la plage à utiliser. Les ports appartenant à des services bien connus sont ignorés par défaut, donc les numéros obtenus ont peu de chances d'entrer en conflit avec un service déjà actif.

Choisir un numéro de port sans conflit

Comment l'espace des ports est divisé

Un port TCP ou UDP est un nombre de 16 bits, donc la plage utilisable va de 0 à 65535. L'IANA divise cet espace en trois parties. Les ports 0 à 1023 sont les ports système ou bien connus, réservés aux services standard tels que HTTP sur 80 et SSH sur 22 ; sur les systèmes de type Unix, lier l'un d'eux exige normalement le compte root ou une capacité explicite. Les ports 1024 à 49151 sont les ports enregistrés, attribués sur demande à des applications précises - PostgreSQL sur 5432 et MySQL sur 3306 s'y trouvent. Les ports 49152 à 65535 sont la plage dynamique ou éphémère, réservée aux allocations temporaires côté client.

Pour un service de développement local, la plage idéale est la plage enregistrée au-dessus de 1024, en évitant à la fois le bloc privilégié et le bloc éphémère. C'est pourquoi ce générateur utilise 1024 comme borne inférieure par défaut. Rester sous 49152 compte plus qu'il n'y paraît : votre système d'exploitation puise dans la plage éphémère à chaque fois qu'un programme ouvre une connexion sortante, si bien qu'un service situé là peut voir son port déjà pris après un redémarrage.

Pourquoi ignorer les ports bien connus aide

Le hasard seul ne prévient pas les conflits. Un tirage aléatoire peut facilement tomber sur 3306, 5432, 6379 ou 8080, et sur une machine de développement active ce sont précisément les numéros les plus susceptibles d'être déjà occupés. La liste d'ignorance utilisée ici couvre les services Unix classiques, les bases de données et courtiers de messages courants, ainsi que les ports choisis par défaut par les frameworks populaires, comme 3000 pour l'outillage Node et 8000 ou 8080 pour les serveurs HTTP locaux.

Les ignorer ne coûte presque rien - le pool contient encore des dizaines de milliers de candidats - et supprime la source la plus fréquente de l'erreur « port déjà utilisé ». Si vous voulez délibérément l'un de ces numéros, désactivez l'option et la plage complète redevient disponible.

Gardez à l'esprit qu'il s'agit d'une aide probabiliste, pas d'une réservation. L'outil n'a aucun moyen d'inspecter votre machine, il ne peut donc pas savoir si quelque chose écoute. Pour confirmer qu'un port est réellement libre, vérifiez-le localement avec lsof -i :PORT sur macOS ou Linux, ss -ltnp sur Linux moderne, ou netstat -ano | findstr :PORT sur Windows.

Ports dans les conteneurs et la CI

Les environnements conteneurs et de CI changent le calcul. À l'intérieur d'un conteneur, l'espace des ports est généralement privé, si bien que deux conteneurs peuvent tous deux écouter sur 8080 sans conflit ; le risque de collision se déplace côté hôte, où les ports publiés partagent un même espace de noms. Choisir un port hôte aléatoire et le mapper vers un port conteneur fixe est une façon courante d'exécuter plusieurs copies du même service côte à côte.

Beaucoup de systèmes de CI et d'outils d'orchestration résolvent cela différemment en demandant au noyau un port libre : liez-vous au port 0, et le système d'exploitation attribue un port inutilisé et vous indique lequel il a choisi. C'est sans concurrence et toujours correct, à préférer donc lorsque votre programme peut recevoir son port à l'exécution. Un numéro généré comme ceux-ci est l'outil adéquat quand vous avez besoin d'une valeur stable à écrire dans un fichier de configuration, un mapping docker-compose ou un document d'équipe avant que quoi que ce soit ne tourne.

Note open-source : implémenté en JavaScript vanilla sans bibliothèque tierce.

FAQ

Pourquoi la plage commence-t-elle par défaut à 1024 ?
Les ports sous 1024 sont privilégiés sur les systèmes de type Unix et exigent normalement le compte root pour être liés. Démarrer à 1024 garde les résultats utilisables par un compte utilisateur ordinaire.
Dois-je éviter les ports au-dessus de 49152 ?
Généralement oui pour un service de longue durée. C'est la plage où le système d'exploitation puise les ports clients éphémères, si bien qu'un service situé là peut voir son numéro déjà réclamé après un redémarrage.
Cela vérifie-t-il si le port est réellement libre ?
Non. La page s'exécute entièrement dans votre navigateur et ne peut pas inspecter votre système. Vérifiez avec `lsof -i :PORT`, `ss -ltnp` ou `netstat -ano | findstr :PORT` avant de vous engager sur un numéro.
Quels ports l'option d'ignorance exclut-elle ?
Les services Unix classiques, les bases de données et courtiers courants comme MySQL, PostgreSQL, Redis, RabbitMQ, MongoDB et Elasticsearch, ainsi que les valeurs par défaut populaires des frameworks comme 3000, 8000, 8080 et 8443.
La génération est-elle cryptographiquement sûre ?
Elle utilise l'API Web Crypto lorsque le navigateur la fournit, avec un échantillonnage par rejet pour garder le tirage uniforme, et retombe sur Math.random uniquement lorsque Crypto est indisponible.
Quelle est la différence entre un port TCP et un port UDP ?
Ce sont deux espaces distincts de 65536 entrées, si bien que TCP 8080 et UDP 8080 sont indépendants et peuvent être utilisés par des programmes différents en même temps. Les numéros générés par cet outil conviennent aux deux.