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

106

Sur la plate-forme Windows, quelles sont les options natives permettant de vérifier si un port (3306, par exemple) de ma machine locale (en tant que tel localhost) est bloqué?

Boris Pavlović
la source
1
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
1
Le test Audit My PC Firewall vous permet de tester un port spécifique ou une plage de ports à partir d'une source externe.
Peter Stuer

Réponses:

111

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 rechercher dans les journaux des connexions interrompues.

    • 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 existe une commande supplémentaire pour vérifier l'état du pare-feu
    (Mise à jour pour les utilisateurs de Windows 7 - comme indiqué Nickci-dessous - utilisez le pare-feu netsh advfirewall ).

    Etat du show de pare-feu 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 / service qui écoute sur 3306, la configuration du pare - feu doit indiquer 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).

nik
la source
4
+1 pour de grands détails
Sage
3
À partir de Windows Vista, la commande "netsh firewall" est obsolète. Il vous recommande d'utiliser "netsh advfirewall firewall" à la place et de faire référence à l'article go.microsoft.com/fwlink/?linkid=121488
Nick DeVore
5
Pour analyser le résultat en ligne de commande, ajoutez-le |find "3306"à la commande, par exempleC:\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
24

NETSTATvous dira si le port est à l’ écoute mais pas si le port est ouvert au monde extérieur. Ce que je veux dire par là est que cela NETSTATpeut indiquer que la version 0.0.0.0 est à l’écoute sur le port 3306 mais qu’un pare-feu peut toujours bloquer ce port qui empêche les connexions extérieures; il ne suffit donc pas de compter NETSTATseul.

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 PortQryet 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

Where 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

telnetest 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.

Pour l'utiliser, telnetvous devez simplement lancer la commande suivante à partir d'une invite de commande:

telnet localhost 3306

La commande ci - dessus devrait vous donner une indication rapide si le port 3306du localhostrépond.

Tim Penner
la source
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
17

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

Marcel Janus
la source
+1 pour cela. Une très bonne alternative qui ne nécessite aucune installation de la plupart des machines Windows modernes.
mardi
5

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 ordinateur local pourrait empêcher même la première action.

Brent
la source
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 le
4
Pour installer telnet à partir de la ligne de commande: dism / online / Enable-Feature / FeatureName: TelnetClient
Jason Massey