128 votes

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

Sur la plateforme Windows, quelles sont les options natives dont je dispose pour vérifier si un port (3306, par exemple) sur ma machine locale (comme dans localhost ), est bloqué ?

1 votes

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 ?

1 votes

En Test du pare-feu d'Audit My PC vous permet de tester un port spécifique ou une gamme de ports à partir d'une source externe.

123voto

nik Points 6970

Comme vous êtes sur une machine Windows, ces choses peuvent être faites :

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

    netstat -a -n

  • Ensuite, si vous attendez des connexions entrantes sur ce port et que vous pensez que le pare-feu peut les bloquer, vous pouvez utiliser démarrer la journalisation du pare-feu Windows et vérifiez les journaux pour les connexions abandonnées

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

    netsh firewall show state

    • cela donnera la liste des ports bloqués ainsi que des ports d'écoute actifs avec les associations d'applications.
  • Cette commande vide les détails de la configuration du pare-feu de Windows.

    netsh firewall show config


Si vous avez un blocage actif (les connexions entrantes sont rejetées par le pare-feu) après avoir lancé la journalisation, vous devriez le voir dans le journal.

Si vous exécutez une application ou un service qui écoute sur 3306, l'adresse de l'utilisateur est la suivante configuration du pare-feu devrait montrer qu'elle est activée. Si ce n'est pas le cas, vous avez probablement omis d'ajouter une exception au pare-feu pour autoriser cette application ou ce service.

Enfin, le port 3306 est généralement utilisé pour MySQL. Je présume donc que vous exécutez le serveur MySQL sur cette machine Windows. Vous devriez donc voir un listener pour 3306 acceptant les connexions entrantes. Si ce n'est pas le cas, vous devez d'abord travailler avec votre application (MySQL) pour la faire démarrer.

3 votes

À partir de Windows Vista, la commande "netsh firewall" est dépréciée. Il est recommandé d'utiliser "netsh advfirewall firewall" à la place et les références de l'article go.microsoft.com/fwlink/?linkid=121488

6 votes

Pour analyser la sortie à la ligne de commande, ajoutez |find "3306" à la commande, par exemple C:\Windows\System32>netstat -an |find "3306"

0 votes

Je ne trouve pas le bouton de réglage spécifié à l'étape 2 de la deuxième recommandation ...

39voto

Marcel Janus Points 1075

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

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

Test-NetConnection -ComputerName localhost -Port 3306

Documentation TechNet Test-NetConnection

2 votes

+1 pour cela. Une alternative vraiment agréable qui ne nécessite pas d'installation de quoi que ce soit sur la plupart des machines Windows modernes.

33voto

Tim Penner Points 1759

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 montrer que le 0.0.0.0 EST ÉCOUTE sur le port 3306, mais un pare-feu peut encore bloquer ce port, ce qui empêche les connexions extérieures. NETSTAT seul.

La meilleure façon de vérifier si un port est bloqué est d'effectuer un balayage des ports à partir de l'ordinateur client.

Il existe de nombreuses façons d'effectuer un scan de port, mais puisque vous avez mentionné être sous Windows, je vais vous suggérer l'utilitaire de ligne de commande de 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 à 192.168.1.1 :

portqry.exe -n 192.168.1.1 -e 80

Qui revient :

TCP port 80 (http service): LISTENING

Alors qu'un test sur une machine locale sans HTTPD en cours d'exécution donne des résultats :

TCP port 80 (http service): NOT LISTENING

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

  • 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 Reset activé, ce 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 qui est généralement installée par défaut sur le système d'exploitation. Cet utilitaire de ligne de commande peut être utilisé comme un moyen rapide de voir si un port répond à une demande du réseau.

Pour utiliser telnet il vous suffit de 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 3306 sur le localhost répond.

0 votes

J'ai téléchargé PortQryUI et j'ai vérifié après avoir bloqué et activé le port 445 à la fois dans tcp et udp, il montre la même écoute dans tcp et pas d'écoute dans udp.

7voto

Kristof Provost Points 12359

Si vous pouvez vous connecter au port à partir de la machine locale (en utilisant l'adresse IP externe), mais pas à partir d'une autre machine, alors le port est bloqué quelque part entre les deux.

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

0 votes

Notez que telnet n'est plus installé sur les systèmes Win7 et plus récents.

1 votes

@AlexisWilke Ce n'est pas correct. Telnet peut être installé

4 votes

Pour installer telnet à partir de la ligne de commande : dism /online /Enable-Feature /FeatureName:TelnetClient

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