Question Comment vérifier si un port est bloqué sur une machine Windows?


Sur la plate-forme Windows, quelles options natives je dois vérifier si un port (3306, par exemple) sur ma machine locale (comme dans localhost), est bloqué?


91
2018-06-16 14:21


origine


Juste pour clarifier, voulez-vous dire bloqué, comme bloqué par un pare-feu ou une passerelle, ou voulez-vous dire déjà utilisé par quelque chose d'autre? - squillman
le Auditer le test du pare-feu de mon PC vous permet de tester un port spécifique ou une plage de ports à partir d'une source externe. - Peter Stuer


Réponses:


Depuis que vous êtes sur la machine Windows, ces choses peuvent être faites,

  • Exécutez la commande suivante et recherchez un écouteur ": 3306" (vous n'avez pas mentionné UDP / TCP). Cela confirmera que quelque chose tourne sur le port.

    netstat -a -n

  • Après cela, si vous attendez des connexions entrantes sur ce port et pensez que le pare-feu les bloque peut-être, vous pouvez démarrer la journalisation du pare-feu Windows et vérifier les journaux pour les connexions abandonnées

    • Allez dans le Pare-feu Windows, Paramètres avancés
    • Cliquez sur le bouton Paramètres à côté de "Connexion au réseau local".
    • Sélectionnez "Consigner les paquets abandonnés"
    • Regardez l'emplacement du fichier journal (s'il n'y en a pas, définissez-en un)
    • Cliquez sur OK
    • Maintenant, lorsque la tentative de connexion est effectuée (en supposant que vous sachiez quand cela est fait), consultez le fichier journal pour rechercher une suppression sur le port 3306.
    • Si cela se voit, vous voudrez ajouter une exception pour ce port.
  • Il y a une commande supplémentaire pour vérifier l'état du pare-feu
    (Mise à jour pour les utilisateurs Windows 7 - comme indiqué par Nick ci-dessous - utiliser pare-feu advfirewall netsh)

    état d'affichage de pare-feu de netsh

    • cela listera les ports bloqués ainsi que les ports d'écoute actifs avec des associations d'applications
  • Cette commande videra les détails de configuration du pare-feu Windows

    netsh firewall show config


Si vous avez un bloc actif (les connexions entrantes sont abandonnées par le pare-feu) après le début de la journalisation, vous devriez le voir dans le journal.

Si vous exécutez une application / un service qui écoute sur 3306, le configuration du pare-feu devrait montrer qu'il est activé. Si cela ne se voit pas, vous avez probablement oublié d'ajouter une exception avec le pare-feu pour autoriser cette application / service.

Enfin, le port 3306 est généralement utilisé pour MySQL. Donc, je suppose que vous utilisez le serveur MySQL sur cette machine Windows. Vous devriez donc voir un écouteur pour 3306 accepter les connexions entrantes. Si vous ne le voyez pas, vous devez d'abord utiliser votre application (MySQL).


100
2018-06-16 14:28



+1 pour de grands détails - Sage
À partir de Windows Vista, la commande "netsh firewall" est obsolète. Il vous recommande d'utiliser "netsh advfirewall firewall" à la place et référence l'article go.microsoft.com/fwlink/?linkid=121488 - Nick DeVore
Pour analyser le résultat en ligne de commande, ajoutez |find "3306" à la commande, par exemple C:\Windows\System32>netstat -an |find "3306" - Cees Timmerman
Je ne trouve pas le bouton de configuration spécifié à l'étape 2 de la deuxième recommandation ... - Bassie
@Bassie, essayez docs.microsoft.com/en-us/windows/access-protection/… - nik


NETSTAT vous dira si le port est écoute mais il ne vous dira pas si le port est ouvrir au monde extérieur. Ce que je veux dire par là, c'est que NETSTAT peut indiquer que la version 0.0.0.0 est en mode d'écoute sur le port 3306, mais un pare-feu peut toujours bloquer ce port, empêchant ainsi les connexions extérieures; donc il ne suffit pas de compter sur NETSTAT seul.

Le meilleur moyen de vérifier si un port est bloqué consiste à effectuer une analyse du port à partir de la machine cliente. 

Il existe de nombreuses façons d'effectuer une analyse de port, mais comme vous avez mentionné le fait d'être sous Windows, je vous suggère d'utiliser l'utilitaire de ligne de commande Microsoft. PortQry et la version graphique PortQryUI

Pour tester tous les ports ouverts:

portqry.exe -n #.#.#.#   

Pour tester un port spécifique:

portqry.exe -n #.#.#.# -e #

Par exemple, pour tester l'interface Web d'un routeur à l'adresse 192.168.1.1:

portqry.exe -n 192.168.1.1 -e 80

Qui retourne:

TCP port 80 (http service): LISTENING

Où en tant que test sur une machine locale sans HTTPD en cours d'exécution renvoie:

TCP port 80 (http service): NOT LISTENING

En utilisant un utilitaire PortScan, vous obtiendrez l'un des 3 résultats.

  • Listening signifie que le serveur écoute sur le port spécifié
  • Filtered signifie qu'il a reçu un paquet d'accusé de réception TCP avec l'indicateur de réinitialisation défini qui indique probablement un problème de pare-feu ou de logiciel
  • Not Listening signifie qu'il n'a pas reçu de réponse du tout

telnet est une autre option de ligne de commande généralement installée par défaut sur le système d'exploitation. Cet utilitaire de ligne de commande peut être utilisé pour déterminer rapidement si un port répond à une requête réseau.

Utiliser telnet vous lancerez simplement la commande suivante à partir d'une invite de commande:

telnet localhost 3306

La commande ci-dessus devrait vous indiquer rapidement si le port 3306 sur le localhost répond.


18
2018-04-04 00:47



Je télécharge PortQryUI et j’ai vérifié après avoir bloqué et activé le port 445 à la fois en TCP et en UDP, c’est la même écoute en TCP et non en UDP. - Liam neesan


Depuis PowerShell 4.0, vous pouvez utiliser la commande Test-NetConnection

Si vous voulez tester le port 3306 comme dans votre exemple, la commande est

Test-NetConnection -ComputerName localhost -Port 3306

Documentation TechNet Test-NetConnection


8
2018-01-17 14:56



+1 pour cela. Une très bonne alternative qui ne nécessite aucune installation de la plupart des machines Windows modernes. - DCaugs


Si vous pouvez établir une connexion telnet sur le port à partir de la machine locale (à l'aide de l'adresse IP externe), mais pas à partir d'une autre machine, le blocage est alors effectué quelque part.

Notez qu'un pare-feu sur votre machine locale pourrait empêcher même la première action.


5
2018-06-16 14:27



Notez que telnet n’est plus installé sur Win7 et les systèmes plus récents. - Alexis Wilke
@AlexisWilke Ce n'est pas correct. Telnet peut être installé - deepdive
Pour installer telnet à partir de la ligne de commande: dism / online / Enable-Feature / FeatureName: TelnetClient - Jason Massey