Meilleure plage de numéros de port TCP pour les applications internes

Je travaille dans un endroit où chacune de nos applications internes s’exécute sur une instance Tomcat individuelle et utilise un port TCP spécifique. Quelle serait la meilleure plage de ports IANA à utiliser pour ces applications afin d’éviter les collisions de numéros de port avec tout autre processus sur le serveur?

Basé sur http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml , voici les options que je vois actuellement:

  1. Ports système (0-1023): Je ne souhaite utiliser aucun de ces ports car le serveur peut exécuter des services sur les ports standard de cette plage.
  2. Ports utilisateur (1024-49151): Étant donné que les applications sont internes, je n’ai pas l’intention de demander à l’IANA de réserver un numéro pour l’une de nos applications. Cependant, je voudrais réduire la probabilité que le même port soit utilisé par un autre processus, par exemple, Oracle Net Listener 1521.
  3. Ports dynamics et / ou privés (49152-65535): cette plage est idéale pour les numéros de port personnalisés. Mon seul souci est que cela se produise:

une. Je configure l’une de mes applications pour utiliser le port X
b. L’application est en panne pendant quelques minutes ou heures (selon la nature de l’application), laissant le port inutilisé pendant un petit moment,
c. Le système d’exploitation alloue le numéro de port X à un autre processus, par exemple lorsque ce processus agit en tant que client nécessitant une connexion TCP à un autre serveur. Cela réussit étant donné qu’il se situe dans la plage dynamic et que X est actuellement inutilisé en ce qui concerne le système d’exploitation, et
ré. L’application ne démarre pas car le port X est déjà utilisé

Je ne vois pas pourquoi tu t’en soucierais. En dehors de la règle de privilège “ne pas utiliser les ports inférieurs à 1024”, vous devriez pouvoir utiliser n’importe quel port car vos clients doivent être configurables pour communiquer avec n’importe quelle adresse IP et tous les ports!

S’ils ne le sont pas, ils ne se sont pas très bien débrouillés. Retournez et faites-les correctement 🙂

En d’autres termes, exécutez le serveur à l’adresse IP X et le port Y configurez les clients avec ces informations. Ensuite, si vous devez exécuter un serveur différent sur X qui entre en conflit avec votre Y , reconfigurez simplement votre serveur et vos clients pour utiliser un nouveau port. Cela est vrai que vos clients utilisent du code ou que les utilisateurs saisissent des URL dans un navigateur.

Comme vous, je n’essaierais pas d’obtenir des numéros atsortingbués par l’IANA, car cela est censé être pour des services si courants que de nombreux environnements les utiliseront (pensez à SSH, FTP ou TELNET).

Votre réseau est votre réseau et, si vous voulez vos serveurs sur le port 1234 (ou même les ports TELNET ou FTP), c’est votre affaire. Par exemple, dans notre domaine de développement mainframe, le port 23 est utilisé pour le serveur de terminaux 3270, qui est un bête très différent de telnet. Si vous voulez vous connecter au réseau UNIX du mainframe, vous devez utiliser le port 1023. C’est parfois ennuyeux si vous utilisez les clients telnet sans spécifier le port 1023, car il vous connecte à un serveur qui ne connaît pas le protocole telnet. sur le client telnet et le faire correctement:

 telnet big_honking_mainframe_box.com 1023 

Si vous ne pouvez vraiment pas configurer le côté client, choisissez-en un dans la deuxième plage, par exemple 48042, et utilisez-le simplement, en déclarant que tout autre logiciel sur ces boîtes (y compris ceux ajoutés ultérieurement) doit restr hors de scope. .

J’ai décidé de télécharger les numéros de port atsortingbués à partir de l’IANA, de filtrer les ports utilisés et de sortinger chaque plage «non atsortingbuée» dans l’ordre de la plupart des ports disponibles, en ordre décroissant. Cela n’a pas fonctionné, car le fichier csv comporte des plages marquées “non atsortingbuées” qui chevauchent d’autres réservations de numéro de port. J’ai étendu manuellement les plages de numéros de ports atsortingbués , ce qui me laisse une liste de tous les numéros de ports atsortingbués. J’ai ensuite sortingé cette liste et généré ma propre liste de plages non atsortingbuées.

Étant donné que cette page stackoverflow.com a été très recherchée dans mes recherches sur le sujet, je me suis dit que je publierais ici les plus grandes plages pour toute personne intéressée. Celles-ci concernent à la fois TCP et UDP où le nombre de ports dans la plage est d’au moins 500.

 Total Start End 829 29170 29998 815 38866 39680 710 41798 42507 681 43442 44122 661 46337 46997 643 35358 36000 609 36866 37474 596 38204 38799 592 33657 34248 571 30261 30831 563 41231 41793 542 21011 21552 528 28590 29117 521 14415 14935 510 26490 26999 

Source (via le bouton de téléchargement CSV):

http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml

Réponse courte: utilisez un port utilisateur non atsortingbué

Une réponse plus aboutie – Sélectionnez et déployez une solution de découverte de ressources. Demandez au serveur de sélectionner un port privé de manière dynamic. Demander aux clients d’utiliser la découverte de ressources.

Le risque d’échec d’un serveur parce que le port qu’il veut écouter n’est pas disponible est réel. au moins ça m’est arrivé. Un autre service ou un client peut arriver en premier.

Vous pouvez presque totalement réduire les risques d’un client en évitant les ports privés, dissortingbués dynamicment aux clients.

Le risque d’un autre service est minime si vous utilisez un port utilisateur. Le risque d’un port non atsortingbué est que seul un autre service est configuré (ou de manière dynamic) pour utiliser ce port. Mais au moins c’est probablement sous votre contrôle.

L’énorme doc avec toutes les affectations de port, y compris les ports utilisateur, est ici: http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt chercher le jeton .