¿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".

romano
fuente
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

Urda
fuente
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.

Greg Bray
fuente
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.

Kyle Brandt
fuente
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 .

Piskvor
fuente
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

raerek
fuente
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.

Andrew Aylett
fuente
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.

jdizzle
fuente
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.

Jason H
fuente
0

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

Screenshto

Dio Phung
fuente
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]
...
Chi-Ming Tsai
fuente