La escasez de direcciones IPv4
Según Vint Cerf (el padre de IP), el tamaño de la dirección IPv4 de 32 bits se eligió arbitrariamente. La IP fue un experimento colaborativo académico / gubernamental, y la Internet pública actual nunca fue imaginada. El paradigma de IP era que cada dispositivo conectado tendría una dirección IP única (todos los paquetes enviados entre dispositivos IP estarían conectados de extremo a extremo desde la dirección IP de origen a la dirección IP de destino), y muchos protocolos que usan IP dependen de cada dispositivo Tener una dirección IP única.
Suponiendo que podríamos usar todas las direcciones IPv4 * posibles, solo hay 4,294,967,296 direcciones IPv4 posibles, pero (a septiembre de 2018) la población mundial actual es de 7,648,290,361. Como puede ver, no hay suficientes direcciones IPv4 posibles para que cada persona tenga una, pero muchas personas tienen una computadora, impresora, teléfono celular, tableta, consola de juegos, TV inteligente, etc., cada una de las cuales requiere una dirección IP, y eso ni siquiera toca las necesidades comerciales de las direcciones IP. También estamos en la cúspide del IoT (Internet de las cosas), donde cada dispositivo necesita una dirección IP: bombillas, termostatos, termómetros, pluviómetros y sistemas de rociadores, sensores de alarma, electrodomésticos, vehículos, abridores de puertas de garaje, sistemas de entretenimiento, collares para mascotas, y quién sabe qué más.
* Hay bloques de direcciones IPv4 que no se pueden usar para el direccionamiento de host. Por ejemplo, la multidifusión tiene un bloque de 268,435,456 direcciones que no se pueden usar para el direccionamiento de host. IANA mantiene el Registro de direcciones de propósito especial Iv IPv4 en https://www.iana.org/assignments/iana-ipv4-special-registry/iana-ipv4-special-registry.xhtml para documentar todos los bloques de direcciones especiales y sus propósitos .
La IANA (Autoridad de Números Asignados de Internet) se quedó sin bloques de direcciones IPv4 para asignar a los RIR (Registros Regionales de Internet) que se asignarán en sus respectivas regiones, y los RIR ahora también se han quedado sin direcciones IPv4 para asignar en cada región. Los ISP (proveedores de servicios de Internet) y las empresas que desean o necesitan direcciones IPv4 ya no pueden obtener direcciones IPv4 de sus RIR y ahora deben tratar de comprar direcciones IPv4 de empresas que pueden tener más (a medida que la escasez de direcciones IPv4 aumenta, el precio de las direcciones IPv4 Sube).
Incluso si todas las direcciones IPv4 que están reservadas para fines especiales y no se pueden usar para el direccionamiento del host estuvieran disponibles para su uso, todavía estaríamos en la misma posición porque simplemente no hay suficientes direcciones IPv4 debido al tamaño limitado de las direcciones IPv4.
Mitigar la escasez de direcciones IPv4
La IANA y los RIR se habrían quedado sin direcciones IPv4 muchos años antes que ellos si la IANA y el IETF (Internet Engineering Task Force) no hubieran adoptado mitigaciones para la escasez de direcciones IPv4. Una mitigación importante fue la depreciación de las clases de red IPv4 a favor de CIDR (enrutamiento entre dominios sin clase). El direccionamiento con clase solo permite tres tamaños de red asignados (16,777,216, 65,536 o 256 direcciones de host totales por red), lo que significa que se desperdician muchas direcciones (una empresa que necesita solo 300 direcciones de host necesitaría una red con clase que tenga 65,536 posibles hosts direcciones, desperdiciando más del 99% de las direcciones en la red con clase),
Con mucho, la mitigación que ha tenido el mayor impacto en extender la vida útil de IPv4 es el uso de direccionamiento privado y una variante de NAT (traducción de direcciones de red) llamada NAPT (traducción de puertos de dirección de red), que es lo que la mayoría de las personas quieren decir cuando consulte NAT o PAT (PAT es un término específico del proveedor para NAPT). Desafortunadamente, NAPT es una solución fea que rompe el paradigma de extremo a extremo de IP, y que rompe los protocolos que dependen de un direccionamiento IP único, lo que requiere soluciones alternativas aún más feas.
NAT / NAPT
El concepto de NAT es bastante simple: reemplaza una o ambas direcciones IPv4 de origen y de destino en un encabezado de paquete a medida que el paquete pasa a través del dispositivo NAT. En la práctica, requiere cálculo porque el encabezado IPv4 tiene un campo calculado para verificar la integridad del encabezado IPv4, y cualquier cambio realizado en el encabezado IPv4 requiere un recálculo del campo, y algunos protocolos de transporte en la carga útil del paquete también tienen su propio cálculo. campos que deben recalcularse, utilizando recursos informáticos en el dispositivo NAT que podrían usarse para el reenvío de paquetes.
En NAT básico, el dispositivo NAT tiene un conjunto de direcciones IPv4 que utiliza para reemplazar las direcciones IPv4 de origen de los encabezados de paquetes para los paquetes IPv4 enviados desde una red interna a una red externa, y mantiene una tabla de traducción para traducir direcciones IPv4 de destino del tráfico que regresa de la red externa para entregar los paquetes a los hosts correctos en la red interna. Esto también requiere recursos en el dispositivo NAT para construir y mantener la tabla de traducción, y para realizar búsquedas en la tabla. Esta utilización de recursos puede retrasar el reenvío de paquetes porque los recursos utilizados por NAT se toman de los recursos que podrían usarse para el reenvío de paquetes.
NAPT lleva el NAT básico más allá al traducir también las direcciones de protocolo de transporte (puertos) para TCP y UDP, y las ID de consulta para ICMP. Al traducir también las direcciones de la capa de transporte, NAPT permite el uso de una única dirección IPv4 externa para muchas direcciones IPv4 del host interno. NAPT es aún más intensivo en recursos que Basic NAT porque requiere una tabla separada para cada protocolo de capa de transporte, y también debe realizar los cálculos de integridad para los protocolos de transporte.
El uso del direccionamiento IPv4 privado, que se puede reutilizar en varias redes (es posible que haya notado que la mayoría de las redes domésticas / residenciales usan de manera predeterminada la misma red 192.168.1.0/24, que se encuentra en uno de los rangos de direcciones IPv4 privadas asignadas por IANA) , junto con NAPT, permite que los usuarios comerciales y domésticos utilicen una sola dirección externa (pública) para una gran red interna (de dirección privada). Esto ahorra muchas, muchas direcciones IPv4 (varias veces el número total de posibles direcciones IPv4) y ha extendido la vida útil de IPv4 mucho más allá del punto en el que se habría colapsado sin NAPT. NAPT tiene algunos inconvenientes serios:
- NAPT rompe el paradigma de extremo a extremo de IP, y solo funciona con TCP, UDP e ICMP, rompiendo otros protocolos de transporte. También hay protocolos de capa de aplicación que usan TCP o UDP que están divididos por NAPT, a pesar de que TCP y UDP nominalmente funcionan con NAPT. Otras mitigaciones, por ejemplo, STUN / TURN, pueden estar disponibles para algunos protocolos de capa de aplicación, pero pueden agregar costos y complejidad.
- NAPT consume muchos recursos, ralentiza el reenvío de paquetes en comparación con lo que es posible sin utilizar ninguna forma de NAT. Algunos proveedores agregan hardware dedicado para mitigar la necesidad de robar recursos del reenvío de paquetes, pero esto conlleva un gasto, tamaño, complejidad y uso de energía adicionales.
- Cuando se usa NAPT, el tráfico iniciado desde fuera de la red NAPT no se puede entregar a la red interna porque no hay una entrada de traducción en la tabla de traducción, que se agrega por el tráfico iniciado internamente. La única dirección externa (pública) se configura en el dispositivo NAT, y se supone que cualquier paquete con esa dirección IPv4 de destino y ninguna entrada para la dirección IPv4 de origen en la tabla de traducción para el protocolo de transporte es para el dispositivo NAPT, no La red interna. Hay una mitigación, llamada Port Forwarding, para este problema.
- El reenvío de puertos básicamente configura, de forma manual, una entrada permanente en una tabla de traducción para permitir el tráfico iniciado por el exterior que está destinado a un protocolo de transporte particular y una dirección para que el protocolo se entregue a un host interno particular. Esto tiene el inconveniente de permitir que solo un host interno sea el objetivo de un protocolo de transporte y una dirección en particular. Por ejemplo, si hay varios servidores web en la red interna, solo uno de los servidores web puede quedar expuesto en el puerto TCP 80 (el predeterminado para los servidores web).
- Debido a que la escasez de direcciones IPv4 es tan grave, los ISP (proveedores de servicios de Internet) se están quedando sin direcciones públicas para asignar a sus clientes. Los ISP ya no pueden obtener más direcciones públicas, por lo que han adoptado algunas mitigaciones que perjudican especialmente a los usuarios domésticos / residenciales. Los ISP desean reservar su valioso grupo de direcciones públicas para sus clientes comerciales que estén dispuestos a pagar por el privilegio de obtener direcciones públicas. Para hacer eso, los ISP ahora están comenzando a asignar direcciones privadas o compartidas a sus clientes domésticos / residenciales, y los ISP usan NAPT en sus propios enrutadores para facilitar el uso de múltiples direcciones privadas o compartidas en una sola dirección pública. Eso crea una situación en la que una red doméstica / residencial está detrás de dos traducciones NAPT (ISP NAPT a cliente NAPT),
- Muchas personas cometen el error de equiparar NAPT y seguridad porque los hosts internos no se pueden abordar directamente desde el exterior. Esta es una falsa sensación de seguridad. Debido a que un firewall que conecta una red a Internet pública es un lugar conveniente para ejecutar NAPT, eso simplemente confunde la situación. Crea una percepción peligrosa de que NAPT, en sí mismo, es el firewall, y que un firewall real es innecesario. La seguridad de la red proviene de los cortafuegos, que bloquean todo el tráfico iniciado por fuera de forma predeterminada, solo permitiendo el tráfico que está configurado explícitamente para permitir, posiblemente haciendo una inspección profunda del contenido del paquete para eliminar cargas de paquetes peligrosas. Lo que algunas personas no se dan cuenta es que, sin un firewall, ya sea en hardware o software, en el exterior o integrado en el dispositivo NAPT, para proteger el dispositivo NAPT, el dispositivo NAPT es vulnerable. Si el dispositivo NAPT se ve comprometido, él y, por extensión, un atacante, tiene acceso completo a la red interna de dirección privada. Los paquetes iniciados externamente que no coinciden con una tabla de traducción están destinados al dispositivo NAPT, en sí mismo, porque es el dispositivo que realmente se direcciona con la dirección externa, por lo que el dispositivo NAPT puede ser atacado directamente.
La solución a la escasez de direcciones IPv4
El IETF predijo la escasez de direcciones IPv4 y creó la solución: IPv6, que utiliza direcciones de 128 bits, lo que significa que hay 340,282,366,920,938,463,463,374,607,431,768,211,456 posibles direcciones IPv6. El número casi inimaginable de direcciones IPv6 elimina la necesidad de NAPT (IPv6 no tiene ningún estándar NAT, como lo hace IPv4, y el IPv6 NAT RFC experimental prohíbe específicamente NAPT), restaurando el paradigma IP de extremo a extremo original. Las mitigaciones para la escasez de direcciones IPv4 están destinadas a extender la vida útil de IPv4 hasta que IPv6 sea omnipresente, momento en el que IPv4 debería desaparecer.
Los seres humanos realmente no pueden comprender números del tamaño utilizado para IPv6. Por ejemplo, una red IPv6 estándar usa 64 bits para cada una de las porciones de red y host de la dirección de red. Eso es 18,446,744,073,709,551,616 posibles redes IPv6 estándar / 64, y ese mismo (enorme) número de direcciones de host para cada una de esas redes. Para tratar de entender un número tan grande, considere las herramientas que escanean todas las direcciones posibles en una red. Si tal herramienta pudiera escanear 1,000,000 de direcciones por segundo (poco probable), tomaría más de 584,542 años realizar el escaneo en una sola red IPv6 / 64. Actualmente, solo 1/8 del total del espacio de direcciones IPv6 se asigna a las direcciones IPv6 globales, lo que equivale a 2,305,843,009,213,693,952 redes estándar IPv6 / 64, y si la población mundial es de 21 mil millones en el año 2100 (un número algo realista), cada una de esas 21 mil millones de personas podría tener 109,802,048 redes IPv6 / 64 estándar, cada red con 18,446,744,073,709,551,616 posibles direcciones de host. Desafortunadamente, la (décadas de) escasez de direcciones IPv4 ha arraigado tanto la conservación de direcciones en las personas, que muchas personas simplemente no pueden dejarla ir, e intentan aplicarla a IPv6, lo cual no tiene sentido y es realmente perjudicial. IPv6 en realidad está diseñado para desperdiciar direcciones.
El IETF también tenía la ventaja de la retrospectiva, y mejoró la IP (en IPv6) al eliminar características de IPv4 que no funcionaban bien, mejorar algunas características de IPv4 y agregar características que IPv4 no tenía, creando una IP nueva y mejorada . Debido a que IPv6 es un protocolo completamente separado de IPv4, se puede ejecutar en paralelo con IPv4 a medida que se realiza la transición de IPv4 a IPv6. Los hosts y los dispositivos de red pueden ejecutar IPv4 e IPv6 en la misma interfaz al mismo tiempo (doble apilado), y cada uno es invisible para el otro; No hay interferencia entre los dos protocolos.
El problema con IPv6 es que en realidad es un protocolo completamente diferente que es incompatible con el omnipresente IPv4, y muchas personas consideran que las mitigaciones para la escasez de direcciones IPv4 son "lo suficientemente buenas". El resultado es que ha superado los 20 años desde que se estandarizó IPv6, y ahora estamos obteniendo una tracción real en el uso de IPv6 (Google informa, a septiembre de 2018, la adopción mundial de IPv6 de más del 20%, y la tasa de adopción de IPv6 en los EE. UU. es superior al 35%). La razón por la que finalmente nos estamos moviendo a IPv6 es que simplemente no hay más direcciones IPv4 no utilizadas para asignar.
Existen otros obstáculos, todos parte de la cultura IPv4, que son simplemente difíciles de ver para la gente. Muchas personas también tienen miedo de IPv6, han crecido y se sienten cómodas con IPv4, las verrugas y todo. Por ejemplo, las direcciones IPv6 parecen ser grandes y feas en comparación con las direcciones IPv4, y eso parece desanimar a muchas personas. La realidad es que IPv6 es a menudo más fácil y más flexible que IPv4, especialmente para abordar, y las lecciones aprendidas en IPv4 se han aplicado a IPv6 desde el principio.