Si bloquea todas las conexiones entrantes, ¿cómo puede seguir utilizando Internet?

22

Si su ISP o firewall está bloqueando todas las conexiones entrantes, ¿cómo pueden los servidores web enviarle datos a su navegador? Envía la solicitud (saliente) y el servidor envía datos (entrantes). Si bloquea todos los entrantes, ¿cómo puede responder el servidor web?

¿Qué pasa con la transmisión de video y los juegos multijugador, donde utiliza UDP? UDP no tiene conexión, por lo que no se debe establecer una conexión, entonces, ¿cómo manejará eso el firewall o el ISP?

Kunal Chopra
fuente
2
¿Bloquear todas las llamadas entrantes / Reenviar todas las llamadas entrantes al correo de voz? No te impide llamar a alguien.
WernerCD

Respuestas:

43

"Bloqueo entrante" significa que las nuevas conexiones entrantes están bloqueadas, pero se permite el tráfico establecido . Entonces, si se permiten nuevas conexiones salientes , entonces la mitad entrante de esa conversación está bien.

El cortafuegos gestiona esto mediante el seguimiento del estado de las conexiones (dicho cortafuegos a menudo se denomina "cortafuegos con estado"). Ve el TCP SYN saliente y lo permite. Ve un SYN / ACK entrante, y puede verificar que coincida con el SYN saliente que vio, y lo deja pasar, y así sucesivamente. Si permite un apretón de manos de tres vías (por ejemplo, está permitido según las reglas del firewall), permitirá esa conversación. Y cuando vea el final de esa conversación (FINs o RST) quitará esa conexión de la lista de paquetes para permitir.

UDP se realiza de manera similar, aunque implica que el firewall recuerde lo suficiente como para pretender que UDP tiene una conexión o sesión (que UDP no tiene).

gowenfawr
fuente
1
Para UDP, dado que no hay una conexión real, el firewall generalmente rastreará la IP de destino y el puerto de los paquetes UDP salientes, y si hay un paquete entrante con la misma IP y puerto que la fuente, asumirá que es una respuesta y lo dejará en.
WhiteWinterWolf
17

@gowenfawr tiene baja la imagen de alto nivel. Sin embargo, pensé que agregaría algunos detalles sobre cómo se realiza la "coincidencia" para el seguimiento de la conexión, ya que puede parecer mágico para los no iniciados.

Cada conexión TCP tiene un número de puerto de cada lado. Como la mayoría de los expertos en tecnología saben, los servidores HTTP se ejecutan en el puerto 80. Cuando su navegador se conecta a un servidor web, le pedirá al sistema operativo que genere un número de puerto "local", que será algo aleatorio como 29672 que ningún otro utiliza. Conexión TCP desde esa computadora (y el sistema operativo puede hacer esto porque conoce todas las conexiones TCP activas). Luego, se enviará un paquete de configuración TCP inicial desde la ip de su máquina (IP_YOURS) y el número de puerto 29672 a la ip del servidor web (IP_WEBSERVER) y el número de puerto 80. En ese momento, el firewall con estado dirá "aha, paquetes futuros desde el puerto IP_WEBSERVER 80 yendo al puerto IP_YOURS 29672 no son conexiones nuevas, son respuestas a una conexión existente y deben permitirse ". Los firewalls con estado mantienen una tabla,

Atsby
fuente
3
Esto es principalmente correcto, pero, como un par de puntos menores, los números de puerto se detienen en 65535 (son números sin signo de 16 bits) y, además del tiempo de espera, los paquetes con banderas FIN o RST también pueden indicar que un TCP La conexión ahora está cerrada.
reirab
@reirab Oh, vaya, sí, el número de puerto falla. Por supuesto, sería posible inspeccionar los indicadores TCP, pero tener en cuenta la posible pérdida de paquetes y la retransmisión de secuencias cercanas es lo suficientemente complicado como para suponer que la mayoría de los cortafuegos simplemente reutilizan la entrada de la tabla menos utilizada en lugar de mantener rastrear con precisión.
@atsby ¿Siempre puede editar su publicación y reemplazar los números de puerto con algo más adecuado?
Todo esto es una gran información. Solo quería agregar una cosa a los puertos discutidos en los comentarios anteriores. Se llaman 'puertos efímeros' y su rango está definido por el núcleo específico de cada sistema operativo. En Linux puede obtenerlos mediante "cat / proc / sys / net / ipv4 / ip_local_port_range" --- el rango predeterminado es "32768 a 61000"
Arul Selvan