Sur la plate-forme Windows, quelles options natives dois-je pour vérifier si un port (3306, par exemple) sur ma machine locale (comme dans localhost
), est bloqué?
Puisque 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 qu'il y a quelque chose en cours d'exécution sur le port.
netstat -a -n
Après cela, si vous attendez des connexions entrantes sur ce port et pensez que le pare-feu peut les bloquer, vous pouvez démarrer la journalisation du pare-feu Windows et vérifiez les journaux pour les connexions interrompues
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 - utilisez netsh advfirewall pare-feu )
état d'affichage du pare-feu netsh
Cette commande videra les détails de configuration du pare-feu Windows
configuration du show pare-feu netsh
Si vous avez un bloc actif (les connexions entrantes sont interrompues par le pare-feu) après avoir commencé 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 ce n'est pas le cas, vous avez probablement manqué l'ajout d'une exception avec le pare-feu pour autoriser cette application/ce service.
Enfin, le port 3306 est généralement utilisé pour MySQL. Donc, je suppose que vous exécutez le serveur MySQL sur cette machine Windows. Vous devriez donc voir un écouteur pour 3306 accepter les connexions entrantes. Si vous ne voyez pas cela, vous devez d'abord travailler avec votre application (MySQL) pour commencer.
NETSTAT
vous dira si le port écoute mais il ne vous dira pas si le port est ouvert pour le monde extérieur. Ce que je veux dire par là, c'est que NETSTAT
peut montrer que le 0.0.0.0 ÉCOUTE sur le port 3306 mais qu'un pare-feu peut toujours bloquer ce port qui empêche les connexions extérieures; il n'est donc pas suffisant de s'appuyer uniquement sur NETSTAT
.
La meilleure façon de vérifier si un port est bloqué est d'effectuer une analyse de port à partir de la machine cliente.
Il existe de nombreuses façons de faire une analyse de port, mais comme vous avez mentionné être sous Windows, je proposerai 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 à 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 exécution de HTTPD 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 TCP avec l'indicateur de réinitialisation défini, ce qui indique probablement un problème de pare-feu ou de logicielNot Listening
signifie qu'il n'a reçu aucune réponsetelnet
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é rapidement pour voir si un port répond à une demande réseau.
Pour utiliser telnet
, vous devez simplement émettre 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.
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
Test-NetConnection -ComputerName localhost -Port 3306
Si vous pouvez telnet sur le port à partir de la machine locale (en utilisant l'adresse IP externe), mais pas à partir d'une autre machine - alors il 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.