2 votes

Comment déterminer ce qui utilise tous les ports éphémères TCP ?

Ma boîte Windows a récemment commencé à se comporter étrangement.

Après avoir été allumé pendant environ 3 à 4 jours, je ne peux plus établir de connexions TCP sortantes. La plupart des applications sans gestion d'erreur spécifique indiqueront simplement "échec de la connexion". Après quelques investigations, j'ai découvert que l'erreur était "Pas d'espace tampon disponible".

Une entrée du journal des événements en dit plus :

Le protocole TCP/IP n'a pas pu établir une connexion sortante car le point de terminaison local sélectionné a récemment été utilisé pour se connecter au même point de terminaison distant. Cette erreur se produit généralement lorsque des connexions sortantes sont ouvertes et fermées à un rythme élevé, ce qui utilise tous les ports locaux disponibles et oblige TCP/IP à réutiliser un port local pour une connexion sortante. Pour minimiser le risque de corruption des données, la norme TCP/IP exige qu'un délai minimum s'écoule entre les connexions successives d'un point de terminaison local donné à un même point de terminaison distant.

J'ai lancé netstat -qno dans une fenêtre d'invite de commandes administrateur et ai vu ce qui suit :

Connexions actives

  Proto  Adresse locale          Adresse distante        État           PID
  TCP    0.0.0.0:135            0.0.0.0:0              ÉCOUTE       972
  TCP    0.0.0.0:445            0.0.0.0:0              ÉCOUTE       4
  TCP    0.0.0.0:3389           0.0.0.0:0              ÉCOUTE       592
  TCP    0.0.0.0:5357           0.0.0.0:0              ÉCOUTE       4
  TCP    0.0.0.0:6160           0.0.0.0:0              ÉCOUTE       2808
  ... d'autres connexions TCP aléatoires ...
  TCP    0.0.0.0:49152          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49153          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49154          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49155          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49156          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49157          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49158          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49159          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49160          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:49161          0.0.0.0:0              LIÉ           4
  ... 16,383 entrées, jusqu'à ...
  TCP    0.0.0.0:65531          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:65532          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:65533          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:65534          0.0.0.0:0              LIÉ           4
  TCP    0.0.0.0:65535          0.0.0.0:0              LIÉ           4
  ... quelques trucs UDP, rien d'anormal ...

Comme vous pouvez le voir, il est effectivement vrai que chaque port TCP sortant est dans l'état LIÉ, et le PID propriétaire est 4, qui représente le processus Système. (Le même processus écoute par exemple sur le port 445 pour les connexions SMB.)

TCPView ne montre pas ces connexions LIÉ, seulement celles qui étaient actives avant le début du problème.

Une analyse complète contre les logiciels malveillants avec Defender ne signale aucun problème.

J'ai déjà essayé d'arrêter tous les services inutiles et de fermer toutes les applications inutilisées. Même la déconnexion et la reconnexion ne résolvent pas le problème. La seule solution est de redémarrer le système, et même alors, cela ne résout le problème que pendant quelques jours de plus.

Je remarque que lorsque des applications utilisateur typiques (par exemple Chrome) utilisent des ports TCP sortants, ils apparaissent dans l'état LIÉ mais ont le PID correct associé à eux dans Netstat. Cela semble indiquer soit un logiciel malveillant grave, soit une sorte de bug majeur dans Windows.

Windows 10 1607.

Quelle serait ma prochaine étape pour résoudre ce problème ?

3voto

fdmillion Points 1209

Je crois avoir trouvé le coupable.

J'avais fait quelques expérimentations avec l'initiateur iSCSI il y a quelque temps (en le connectant à une instance NAS4Free). J'ai remarqué que l'initiateur iSCSI tentait toujours de se connecter - toutes les quelques minutes - au serveur iSCSI que j'avais en cours d'exécution. J'ai supprimé l'adresse IP de mon serveur (désactivé) et jusqu'à présent, il semble avoir arrêté le flux de ports liés.

Cela aurait du sens puisque l'initiateur iSCSI est un service de niveau système. Peut-être qu'il y a un bug dans le service?

0voto

shauncodes Points 1

Il y a une mise à jour de Windows qui a provoqué ce problème avec les connexions iSCSI.

9 mai 2017—KB4019215 https://support.microsoft.com/fr-fr/help/4019215/windows-8-update-kb4019215

Vous pouvez supprimer cette mise à jour ou appliquer la dernière version pour éviter ce problème où de nouvelles connexions sont établies vers des cibles iSCSI supprimées jusqu'à l'épuisement de tous les ports éphémères.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X