Su preguntas así como otros preguntas revelan una idea errónea de lo que son los puertos bloqueados/no bloqueados o cerrados/abiertos.
Si se quiere prestar un servicio en una red, se necesita un proceso que suele estar conectado a un zócalo de red y unas direcciones relacionadas que consisten en la dirección local (es decir, la dirección IP) y (para TCP y UDP) un número de puerto.
Por lo tanto, servir un sitio web requiere un proceso (por ejemplo, httpd o en su ejemplo Python), un socket y una dirección y un puerto relacionados (y algo de contenido). El puerto estándar de un servidor web es el 80.
En cuanto se inicia un servidor web simple con sudo python -m SimpleHTTPServer 80
(los números de puerto inferiores a 1024 tienen que ser ejecutados como Root) el puerto se abrirá y podrás acceder a él desde otro host o localmente.
Para obtener los puertos abiertos de un host puedes instalar y lanzar nmap . El comando para obtener todos los puertos TCP abiertos de una IP es:
nmap IP
o todos los puertos TCP y (la mayoría) UDP abiertos
sudo nmap -sT -sU IP
En un sistema MacOS Client vainilla y después de iniciar el servidor HTTP simple de Python (que está conectado a todas las interfaces internas: localhost, en0 con la IP 192.168.0.2 aquí,...) obtendrá los siguientes resultados de nmap lanzado en el host local y no cortafuegos local habilitado:
nmap 127.0.0.1
Starting Nmap 7.31 ( https://nmap.org ) at 2017-01-22 22:12 CET
Nmap scan report for 127.0.0.1
Host is up (0.0043s latency).
Not shown: 750 closed ports, 249 filtered ports
PORT STATE SERVICE
80/tcp open http
nmap 192.168.0.2
Starting Nmap 7.31 ( https://nmap.org ) at 2017-01-22 22:12 CET
Nmap scan report for 192.168.0.2
Host is up (0.0043s latency).
Not shown: 750 closed ports, 249 filtered ports
PORT STATE SERVICE
80/tcp open http
Después de detener el servidor Python no obtendrá ningún puerto TCP abierto aunque no haya ningún cortafuegos activado. Tu Mac simplemente no proporciona ningún servicio. Los clientes Vanilla MacOS no suelen tener ningún puerto TCP abierto. Sin embargo, puedes habilitar algunos: por ejemplo, ssh en el puerto 22. Por cierto, si detecta un puerto 631 abierto, entonces se trata de compartir impresoras (que es un servicio, de nuevo).
sudo nmap -sT -sU 127.0.0.1
Starting Nmap 7.31 ( https://nmap.org ) at 2017-01-22 22:18 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00019s latency).
Not shown: 1891 closed ports, 78 open|filtered ports, 29 filtered ports
PORT STATE SERVICE
80/tcp open http
123/udp open ntp
sudo nmap -sT -sU 192.168.0.2
Starting Nmap 7.31 ( https://nmap.org ) at 2017-01-22 22:19 CET
Nmap scan report for 192.168.0.2
Host is up (0.00019s latency).
Not shown: 1811 closed ports, 186 open|filtered ports
PORT STATE SERVICE
80/tcp open http
123/udp open ntp
5353/udp open zeroconf
Un puerto cerrado significa que no hay ningún servicio funcionando en el puertoX. Los otros significados de los diferentes estados de los puertos se explican aquí: Fundamentos de la exploración de puertos .
Un escaneo del puerto 192.168.0.2 desde otro host en la misma red dará los mismos resultados.
En una red SOHO suelen encontrarse los siguientes dispositivos:
host1--------(switch-router(firewall))--------WAN/Internet
|
host2-----------
Cada uno de los hosts puede tener un firewall o filtro de paquetes (habilitado), el router suele tener siempre un firewall habilitado.
Después de iniciar su servidor web Python en el host1 podrá detectar el escaneo del puerto 80 abierto desde el host1 y el host2. Usted no puede detectar cualquier puerto abierto en los hosts locales desde la WAN porque la LAN está protegida por el firewall del router (y no es alcanzable debido a su naturaleza privada).
Después de habilitar un firewall1 en el host1 (con la regla de ejemplo pf bloquear la caída de cualquier a cualquier puerto 80 ) no podrá detectar o acceder a la quietud Abrir escaneo del puerto 80 con el host2 porque el firewall1 bloques acceso.
Ahora relanza el servidor Python con el puerto 8080. Ahora detectará que no hay ningún puerto 80 abierto, sino un puerto 8080 abierto desde ambos hosts. El firewall1 sólo bloquea el puerto 80 y el acceso es posible desde el host2. Si adicionalmente añades una regla de reenvío de puertos (= perforar un agujero en el firewall del router) reenviar los paquetes entrantes al puerto 10080 al puerto 8080 del host1 obtendrá los siguientes resultados:
- escaneando desde la WAN obtendrá un puerto abierto 10080 (aunque no existe ningún puerto abierto 10080 en los hosts de la LAN)
- escaneando desde la LAN aún detectará un puerto 8080 abierto en el host1
Obtiene el estado de los firewalls de los hosts:
- pf: entrar
sudo pfctl -s all | grep Status
. Si le aparece "habilitado", introduzca adicionalmente sudo pfctl -vnf /etc/pf.conf
para obtener todas las anclas y reglas. Si no ves ninguna regla de bloqueo (el estado por defecto de OS X pf) no hay nada bloqueado.
- Murus: comprueba el semáforo en la esquina superior derecha
- Firewall de aplicaciones: activar/desactivar en Preferencias del Sistema > Seguridad > Firewall
- Little Snitch: comprueba cualquier regla de bloqueo de salida
- Otros cortafuegos (como NetBarrier) suelen controlar algunos interruptores de encendido/apagado
iMessages no requiere ninguna Abrir puerto de servicio en su Mac. Dado que iMessages intenta establecer una conexión "keep-alive" con algunos servidores de Apple, podría ser bloqueado por el firewall del host o del router (o por un firewall dedicado), aunque si alguno de ellos bloquea saliente el tráfico hacia estos servidores en los puertos 80, 443 y 5223 - y/o el que llega a Servicio de Notificación Push de Apple (IIRC esto sólo es posible con la inspección profunda de paquetes y mitm).
En comparación, el inicio de los Mensajes servicio en Servidor MacOS abrirá los puertos 80, 443 y 5222 en el servidor.
Leyendo todas tus preguntas similares sobre iMessages no creo que tu problema esté relacionado con el MacOS de tu anfitrión sino con algún tipo de Endpoint Protection instalado o con un firewall muy restrictivo en la red. O tu IP/dispositivo/cuenta está bloqueada por Apple.
3 votos
Si algo estuviera bloqueando la 80 y la 443 no habrías podido escribir esta pregunta :/
0 votos
:80 y :443 son para servidores web, y servidores web sobre SSL. No son cruciales para iMessage para Facetime. Y como ya se ha respondido, el problema con Python es que necesitas ser Root para enlazar con puertos de baja numeración.