¿Cómo puedo saber si un puerto está abierto o no?


22

He instalado el servidor Apache en mi computadora con Windows 7. Pude mostrar el index.php predeterminado escribiendo http: // localhost / en la línea de dirección de mi navegador.

Sin embargo, todavía no puedo ver esta página escribiendo la dirección IP de mi computadora (ni localmente (desde la misma computadora) ni globalmente (desde otra computadora conectada a Internet).

Me dijeron que necesitaba abrir el puerto 80. Lo hice (de la manera descrita aquí ) pero no resolvió el problema.

En primer lugar, me gustaría comprobar qué puertos están abiertos y cuáles no. Por ejemplo, no estoy seguro de que mi puerto 80 se haya cerrado antes de intentar abrirlo. Tampoco estoy seguro de que se abra después de que intenté abrirlo.

Traté de ejecutar un servidor web muy simple escrito en Python. ¡Para eso usé el puerto 81 y funcionó! Y no intenté abrir el puerto 81. Por lo tanto, se abrió por defecto. Entonces, si 81 se abre por defecto, ¿por qué 80 no? O lo es?

INFORMACIÓN ADICIONAL:
1. En mi archivo httpd.conf tengo "Listen 80".
2. Este sitio me dice que el puerto 80 en mi computadora está abierto.
3. Recibo diferentes respuestas si intento http: // myip: 80 y http: // myip: 81 . En el último caso, el navegador (Chrome) me escribe que el enlace está roto. En el primer caso me sale: Prohibido No tienes permiso para acceder / en este servidor.
4. IE escribe que "El sitio web se negó a mostrar esta página web".


3
Si el primer caso dice "Prohibido", su directorio raíz o host virtual no está configurado correctamente.
Urda

Suponiendo que está detrás de un enrutador, ¿ha configurado el reenvío de puertos en el enrutador? Su enrutador (la mayoría) probablemente ya utiliza el puerto 80 para su propia interfaz de administración basada en la web. En cualquier caso, debe reenviar las solicitudes a su dirección IP pública (el enrutador) a la dirección IP local de su computadora, en el puerto 80 (o lo que sea).
Jongosi

Respuestas:


16

Si solo está revisando sus puertos desde el exterior. Usa esta herramienta:

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

Intentará conectarse a su dirección IP, en el puerto específico, y le informará si está abierto o cerrado al mundo exterior.

¿Problemas locales también? Parece que el firewall de Windows 7 te está cortando. Agregue una excepción con este tutorial ...

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


Revisé mis puertos con yougetsignal.com/tools/open-ports . Este sitio escribe que mi puerto 80 está abierto (mientras que 79 y 81 están cerrados).
Romano

¿Revisaste tus excepciones de Firewall de Windows 7? Explicaría por qué puede alcanzarlo a través de localhosty no desde otras computadoras.
Urda

Urda, he abierto el puerto 80 de esta manera maximumpcguides.com/windows-7/… . Por lo tanto, debe abrirse para todas las IP. Además, el sitio que me das dice que el puerto 80 está abierto.
Romano

1
Si el primer caso dice "Prohibido", su directorio raíz o host virtual no está configurado correctamente en la mayoría de los casos. Obtienes un enlace roto porque 81 no se está resolviendo.
Urda

1
¡@Kirk es un gran sitio web después de todo!
Urda

13

En ejecución netstat -a -no ss -a -ndesde un símbolo del sistema, se mostrarán todas las conexiones de red abiertas y los puertos de escucha en su máquina. 0.0.0.0:80significaría que está escuchando en el puerto 80de todas las direcciones IP (localhost y sus direcciones IP públicas / privadas), 127.0.0.1:80lo que significa que solo está escuchando en localhost. Puede agregar -bal comando y le mostrará qué ejecutable está usando ese puerto. Puede obtener la misma información utilizando el Monitor de recursos en Windows 7 en la sección Puertos de escucha de la pestaña Red.


5

Si desea ver si está abierto desde otro servidor, puede simplemente telnet serverName 80ver si se abre la sesión. Si no es así, el servidor no está escuchando o el puerto está bloqueado por un firewall.

Si se abre y luego se cierra de inmediato, al menos Windows 2003, entonces el software (como Exchange) podría no estar configurado para escuchar en esa interfaz o IP en particular, pero está escuchando en otros puertos. He visto a IIS comportarse de esta manera porque es estúpido, Apache podría no serlo.


2

Tu escribiste:

En el primer caso me sale: Prohibido No tienes permiso para acceder / en este servidor.

Aunque esto puede sonar extraño, en realidad no tiene un problema con los puertos abiertos (sino con la configuración de Apache).

Ese mensaje "Prohibido" proviene de su servidor Apache; significa que su servidor web es accesible desde Internet.

Debe configurar Apache para permitir el servicio a todos los hosts; de lo contrario, obtendrán la página "Prohibida". IIRC, Apache está configurado inicialmente para permitir solo solicitudes de la computadora local.

En algún lugar de su configuración de Apache, probablemente haya una sección como esta (el directorio real puede ser diferente):

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

Si desea permitir que cualquier computadora vea sus páginas, debe cambiar Deny from alla Allow from all. Consulte la documentación del módulo de acceso para obtener más información .


1

Para ver los puertos abiertos, probablemente debería usar nmap. Tienen una versión de Windows: http://nmap.org/dist/nmap-5.21-setup.exe

No es suficiente si ve su puerto 80 abierto desde localhost; tal vez algo se interponga en el camino si lo intenta desde otro lugar, por eso recomiendo nmap

Desde el cliente que escribe: nmap ip-of-your-server



0

Los puertos del servidor pueden estar vinculados a una sola dirección IP o a todas las direcciones IP disponibles. Parece que su instalación de Apache está configurada para vincularse solo a 127.0.0.1, y debe configurarla para que se vincule a *. En su httpd.conf (en el directorio conf de Apache), busque una línea como Listen localhost:80y cámbiela a Listen 80.


1
Encontré mi archivo httpd.conf. En el archivo tengo "Listen 80".
Romano

0

telnet <host> <port>es tu amigo. Tiene la virtud de estar instalado en casi todas las computadoras del mundo.

Ediciones después de releer la pregunta:

Aquí hay algunos consejos de diagnóstico útiles.

  1. Si puede acceder al sitio a través de localhost, pero no a través de su IP local del sitio (192.168. *) desde otros hosts en su red, probablemente sea un problema de firewall de Windows.

  2. si puede acceder al sitio desde otras máquinas locales del sitio, pero no desde Internet a su IP pública, es un problema de configuración del enrutador / reenvío de puertos.


0

Desde un símbolo del sistema, escriba:

netstat -ano, look for 0.0.0.0:80 

... o tu IP: 80. Esto le dirá si el puerto 80 está abierto en su máquina. Ahora, si desea verificar y ver si puede acceder desde fuera de su red, determinará si tiene algún tipo de firewall instalado. Si lo hace, deberá reenviar el puerto 80 a su servidor web.


0

Si está en Windows, use SysInternals TCPView . Puede decirle qué programa está utilizando qué puerto.

Screenshto


Gracias Dio Phung. Esa utilidad de Windows es realmente útil.

-2

En el comando 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]
...
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.