Comment savoir si un port est ouvert ou non?


22

J'ai installé le serveur Apache sur mon ordinateur Windows 7. J'ai pu afficher le fichier index.php par défaut en tapant http: // localhost / dans la ligne d'adresse de mon navigateur.

Cependant, je ne parviens toujours pas à voir cette page en tapant l'adresse IP de mon ordinateur (ni localement (depuis le même ordinateur) ni globalement (depuis un autre ordinateur connecté à Internet)).

On m'a dit que je devais ouvrir le port 80. Je l'ai fait (d'une manière décrite ici ) mais cela n'a pas résolu le problème.

Je voudrais tout d'abord vérifier quels ports sont ouverts et lesquels ne le sont pas. Par exemple, je ne suis pas sûr que mon port 80 ait été fermé avant d'essayer de l'ouvrir. Je ne suis pas sûr non plus qu'il soit ouvert après avoir essayé de l'ouvrir.

J'ai essayé d'exécuter un serveur Web très simple écrit en Python. Pour cela j'ai utilisé le port 81 et ça a marché! Et je n'ai pas essayé d'ouvrir le port 81. Donc, il a été ouvert par défaut. Donc, si 81 est ouvert par défaut, pourquoi 80 ne l'est pas? Ou c'est?

INFORMATIONS COMPLÉMENTAIRES:
1. Dans mon fichier httpd.conf, j'ai "Listen 80".
2. Ce site m'indique que le port 80 de mon ordinateur est ouvert.
3. J'obtiens des réponses différentes si j'essaie http: // myip: 80 et http: // myip: 81 . Dans le dernier cas, le navigateur (Chrome) m'écrit que le lien est rompu. Dans le premier cas, j'obtiens: Interdit Vous n'avez pas la permission d'accéder à / sur ce serveur.
4. IE écrit que "Le site Web a refusé d'afficher cette page Web".


3
Si le premier cas indique "Interdit", votre répertoire racine ou hôte virtuel n'est pas configuré correctement.
Urda

En supposant que vous êtes derrière un routeur, avez-vous configuré la redirection de port sur le routeur? Votre routeur (probablement) utilise probablement déjà le port 80 pour sa propre interface d'administration Web. Dans tous les cas, vous devez transmettre les demandes à votre adresse IP publique (le routeur) à l'adresse IP locale de votre ordinateur, au port 80 (ou autre).
Jongosi

Réponses:


16

Si vous ne faites que vérifier vos ports de l'extérieur. Utilisez cet outil:

http://www.yougetsignal.com/tools/open-ports/

Il tentera de se connecter à votre adresse IP, sur le port spécifique, et vous indiquera s'il est ouvert ou fermé au monde extérieur.

Des problèmes locaux aussi? On dirait que le pare-feu Windows 7 vous coupe. Ajoutez une exception avec ce tutoriel ...

http://www.sevenforums.com/tutorials/542-windows-firewall-add-remove-exception.html


J'ai vérifié mes ports avec le yougetsignal.com/tools/open-ports . Ce site écrit que mon port 80 est ouvert (alors que 79 et 81 sont fermés).
Roman

Avez-vous vérifié vos exceptions de pare-feu Windows 7? Cela expliquerait pourquoi vous pouvez y accéder via localhostet non depuis d'autres ordinateurs.
Urda

Urda, j'ai ouvert le port 80 de cette façon maximumpcguides.com/windows-7/… . Il doit donc être ouvert pour toutes les adresses IP. De plus, le site que vous me donnez dit que le port 80 est ouvert.
Roman

1
Si le premier cas indique "Interdit", votre répertoire racine ou hôte virtuel n'est pas configuré correctement dans la plupart des cas. Vous obtenez un lien rompu car 81 ne résout pas.
Urda

1
@Kirk c'est un excellent site Web après tout!
Urda

13

L'exécution netstat -a -nou à ss -a -npartir d'une invite de commande affichera toutes les connexions réseau ouvertes et les ports d'écoute de votre machine. 0.0.0.0:80signifierait qu'il écoute sur le port 80de toutes les adresses IP (localhost et vos adresses IP publiques / privées) alors que 127.0.0.1:80cela signifierait qu'il écoute uniquement sur localhost. Vous pouvez ajouter -bà la commande et elle montrera quel exécutable utilise ce port. Vous pouvez obtenir les mêmes informations en utilisant le Moniteur de ressources dans Windows 7 sous la section Ports d'écoute de l'onglet Réseau.


5

Si vous voulez voir s'il est ouvert depuis un autre serveur, vous pouvez simplement telnet serverName 80voir si la session s'ouvre. Si ce n'est pas le cas, le serveur n'écoute pas ou le port est bloqué par un pare-feu.

S'il s'ouvre puis se ferme immédiatement, au moins Windows 2003, le logiciel (tel qu'Exchange) n'est peut-être pas configuré pour écouter sur cette interface ou IP particulière, mais il écoute sur d'autres ports. J'ai vu IIS se comporter de cette façon parce que c'est stupide, Apache peut-être pas.


2

Tu as écrit:

Dans le premier cas, j'obtiens: Interdit Vous n'avez pas la permission d'accéder à / sur ce serveur.

Bien que cela puisse sembler étrange, vous n'avez en fait aucun problème avec les ports ouverts (mais avec la configuration Apache).

Ce message "Interdit" provient de votre serveur Apache; cela signifie que votre serveur Web est accessible depuis Internet.

Vous devez configurer Apache pour autoriser le service à tous les hôtes - sinon ils obtiendront la page "Interdit". IIRC, Apache est initialement configuré pour n'autoriser que les demandes de l'ordinateur local.

Quelque part dans votre configuration Apache, il y a probablement une section comme celle-ci (le répertoire réel peut être différent):

<Directory "/home/piskvor/www">
    Allow from 127.0.0.1
    Deny from all
(...)

Si vous souhaitez autoriser n'importe quel ordinateur à voir vos pages, vous devez remplacer le Deny from allpar Allow from all. Voir la documentation du module d'accès pour plus d'informations .


1

Pour voir les ports ouverts, vous devriez probablement utiliser nmap Ils ont une version Windows: http://nmap.org/dist/nmap-5.21-setup.exe

Ce n'est pas suffisant si vous voyez votre port 80 ouvert depuis localhost - peut-être que quelque chose vous empêche de l'essayer ailleurs, c'est pourquoi je recommande nmap

Depuis le client que vous tapez: nmap ip-of-your-server



0

Les ports du serveur peuvent être liés à une seule adresse IP ou à toutes les adresses IP disponibles. Il semble que votre installation Apache soit configurée pour se lier uniquement à 127.0.0.1, et vous devez la configurer pour la lier à *. Dans votre httpd.conf (dans le répertoire conf d'Apache), recherchez une ligne comme Listen localhost:80et changez-la en Listen 80.


1
J'ai trouvé mon fichier httpd.conf. Dans le fichier, j'ai "Listen 80".
Roman

0

telnet <host> <port>est votre ami. Il a le mérite d'être installé sur à peu près tous les ordinateurs du monde.

Modifications après relecture de la question:

Voici quelques conseils de diagnostic utiles

  1. si vous pouvez accéder au site via localhost, mais pas via votre adresse IP locale (192.168. *) à partir d'autres hôtes de votre réseau, c'est probablement un problème de pare-feu Windows.

  2. si vous pouvez accéder au site à partir d'autres machines locales du site, mais pas d'Internet à votre IP publique, c'est un problème de configuration de routeur / transfert de port.


0

À partir d'une invite de commande, tapez:

netstat -ano, look for 0.0.0.0:80 

... ou votre IP: 80. Cela vous indiquera si le port 80 est ouvert sur votre machine. Maintenant, si vous voulez vérifier et voir si vous pouvez y accéder depuis l'extérieur de votre réseau, cela déterminera si vous avez une sorte de pare-feu en place. Si vous le faites, vous devrez transmettre le port 80 à votre serveur Web.


0

Si vous êtes sous Windows, utilisez SysInternals TCPView . Il peut vous dire quel programme utilise quel port.

Screenshto


Merci Dio Phung. Cet utilitaire Windows est vraiment utile.

-2

Dans la commande DOS:

C:\Windows\system32>netstat -a -b

使用中連線

  協定   本機位址               外部位址               狀態
  TCP    0.0.0.0:80             801781-N1:0            LISTENING     [Skype.exe]
  TCP    0.0.0.0:135            801781-N1:0            LISTENING      RpcSs      [svchost.exe]
  TCP    0.0.0.0:443            801781-N1:0            LISTENING     [Skype.exe]
...
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.