GNU/Linux >> Tutoriels Linux >  >> Linux

Épuisement des ports réseau Linux

Vous avez deux questions principales :

1.

Strictement IPv4 parlant, l'épuisement des ports est-il réellement possible ?

Oui. Prenons, par exemple, un routeur d'équilibrage de charge envoyant toutes les connexions à une adresse IP NAT. Cela est susceptible de se produire lorsque vous avez de nombreux SRC IP s se connectant au goulot d'étranglement d'un seul DST IP .

Cela signifie que votre serveur Web pourrait avoir un tas de connexions comme :

[email protected]:~# netstat -pnt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 173.200.1.18:80      10.100.1.100:49923        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.200.1.200:10155        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.10.1.10:14400        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.10.1.10:50652        ESTABLISHED 13939/nginx: worker
tcp        0      0 173.200.1.18:80      10.20.1.20:57554        ESTABLISHED 13939/nginx: worker 

et c'est parfaitement bien. Cependant, si toutes les "adresses étrangères" étaient identiques, cela peut entraîner un problème (par exemple, "un gros routeur qui exécute un serveur NAT <---> avec une adresse IP").

Si je devais expliquer pourquoi l'épuisement des ports éphémères n'est pas un problème courant, je dirais que c'est parce que chaque port nécessite un service d'écoute et suffisamment de ressources pour répondre - une autre ressource (mémoire, processeur) est normalement un goulot d'étranglement en premier.

Cependant, j'ai personnellement rencontré quelques problèmes d'épuisement des ports lorsque je travaillais dans une société d'équilibrage de charge.

2. Pourquoi un port utilisé peut-il présenter un problème pour un service d'écoute ?

"Ce qui permet l'utilisation de ports éphémères de 1024 à 65535, que si j'ai des services qui se lient sur le port 3306 (mySQL, par exemple), ils échoueront parfois à démarrer car le port est en cours d'utilisation."

Le serveur mySQL ne peut pas se lier à ce port s'il est utilisé - par exemple par localhost:3306 ou sur toutes les interfaces. Par exemple, voir la ligne 0.0.0.0:80 dans le netstat suivant sortie ?

[email protected]:~# netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      PID/Program name
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      964/php-fpm.conf)
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1660/mysqld     
tcp        0      0 0.0.0.0:842             0.0.0.0:*               LISTEN      1317/inetd      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13938/nginx     

Cela signifie que le port 80 écoute tous interfaces locales au serveur. Si un autre processus détient le port 80 avant mon nginx le serveur démarre, nginx ne pourra pas prendre le contrôle de ce port et échouera probablement sa procédure de démarrage.

Normalement, le port 3306 convient car les services d'écoute ont des ports (ou plages) prédéfinis qui sont demandés à la machine hôte - par ex. ports 80 et 443 pour les serveurs Web.


Linux
  1. Comment changer le port SSH sous Linux

  2. Linux – Port série Raspberrypi ?

  3. Meilleurs scanners de ports sur Ubuntu Linux

  4. Vérifier l'utilisation du port sous Linux

  5. comment utiliser netstat sur un port spécifique sous Linux

Comment configurer la mise en réseau dans Vagrant

Comment trouver le numéro de port d'un service sous Linux

Comment changer le port SSH sous Linux

Comment envoyer un ping à un numéro de port sous Linux

Ouvrir un port sous Linux

Exemples de commandes ip pour gérer la mise en réseau sous Linux