Descripción general de NAPT determinista para servicios de próxima generación
En Servicios de próxima generación con MX-SPC3, puede configurar los servicios deterministas NAPT44 y NAPT64. Los servicios NAPT deterministas de Next Gen Services utilizan un algoritmo para asignar bloques de puertos de destino.
El servicio NAPT44 determinista de Next Gen Services garantiza que la dirección IPv4 y el puerto de origen originales siempre se asignen a la misma dirección IPv4 y rango de puertos posteriores a NAT, y que la asignación inversa de una dirección IPv4 externa traducida y un puerto traducidos siempre se asignen a la misma dirección IPv4 interna.
El servicio NAPT64 determinista de Next Gen Services garantiza que la dirección IPv6 y el puerto de origen originales siempre se asignen a la misma dirección IPv4 y rango de puertos posteriores a NAT, y que la asignación inversa de una dirección IPv4 externa traducida y un puerto determinados siempre se asignen a la misma dirección IPv6 interna.
Para obtener información detallada sobre cómo configurar NAPT determinista, consulte Configuración de NAPT determinista para servicios de próxima generación.
Beneficios del NAPT determinista
Elimina la necesidad de registrar la traducción de direcciones porque una dirección IP siempre se asigna a la misma dirección IP externa y al mismo intervalo de puertos, y la asignación inversa de una dirección IP externa traducida y un puerto determinados siempre se asignan a la misma dirección IP interna.
Descripción de los algoritmos deterministas de NAPT
La efectividad de su implementación de NAPT determinista depende de su análisis de sus requisitos de suscriptor. El tamaño de bloque que proporcione indica cuántos puertos estarán disponibles para cada dirección de suscriptor entrante del rango de la from
cláusula especificada en la regla NAT aplicable. El algoritmo de asignación calcula un valor de desplazamiento para determinar la dirección IP y el puerto de salida. Se utiliza un algoritmo inverso para derivar la dirección del suscriptor de origen.
Para rastrear suscriptores sin usar registros, un ISP debe usar un algoritmo inverso para derivar direcciones de suscriptor (fuente) de una dirección traducida.
Las siguientes variables se utilizan en el cálculo hacia adelante (dirección IP del suscriptor privado a la dirección IP pública) y el cálculo inverso (dirección IP pública a la dirección IP del suscriptor privado):
Pr_Prefix: cualquier dirección de suscriptor IPv4 pre-NAT.
Pr_Port: cualquier puerto de protocolo pre-NAT.
Block_Size: número de puertos configurados para estar disponibles para cada Pr_Prefix.
Si
block-size
se configura como cero, el método para calcular el tamaño del bloque se calcula de la siguiente manera:tamaño de bloque = int(64512/ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)])
donde 64512 es el intervalo máximo de puertos disponibles por dirección IP pública.
Base_PR_Prefix: primera dirección de suscriptor IPv4 pre-NAT utilizable en una
from
cláusula de la regla NAT.Base_PU_Prefix: primera dirección de suscriptor IPv4 posterior a NAT utilizable configurada en el grupo de NAT.
Pu_Port_Range_Start: primer puerto post-NAT utilizable. Esto es 1024.
Pr_Offset: el desplazamiento de la dirección IP pre-NAT que se está traduciendo desde la primera dirección de suscriptor IPv4 pre-NAT utilizable en una
from
cláusula de la regla NAT. PR_Offset = Pr_Prefix – Base_Pr_Prefix.PR_Port_Offset: desplazamiento de la dirección IP pre-NAT multiplicada por el tamaño del bloque. PR_Port_Offset = Pr_Offset * Block_Size.
Pu_Prefix: dirección post-NAT para un Pr_Prefix determinado.
Pu_Start_Port: puerto de inicio posterior a la NAT para un flujo desde un Pr_Prefix determinado
Pu_Actual_Port: puerto post-NAT visto en un flujo inverso.
Nr_Addr_PR_Prefix — Número de direcciones de abonado IPv4 pre-NAT utilizables en una
from
cláusula de la regla NAT.Nr_Addr_PU_Prefix — Número de direcciones IPv4 post-NAT utilizables configuradas en el grupo NAT.
Rounded_Port_Range_Per_IP — Número de puertos disponibles para cada dirección IP posterior a NAT. Rounded_Port_Range_Per_IP = ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)] * Block_Size.
Pu_Offset: desplazamiento de la dirección IP posterior a NAT desde la primera dirección post-NAT utilizable. Pu_Offset = Pu_Prefix – Base_Pu_Prefix.
Pu_Port_Offset: desplazamiento del puerto post-NAT de 1024 agregado al producto del desplazamiento de la dirección IP post-NAT y el número de puertos disponibles para cada dirección IP post-NAT. Pu_Port_Offset = (Pu_Offset * Rounded_Port_Range_Per_IP) + (Pu_Actual_Port – Pu_Port_Range_Start).
Uso de algoritmos: suponga las siguientes configuraciones:
services { nat { source { pool src-pool { address 203.0.113.0/16; port { automatic { random-allocation; } deterministic { block-size 249; host address 10.1.0.1/16; } } } rule-set set1 { rule det-nat { match-direction input; match { source-address 10.1.0.0/16; } then { source-nat { pool src-pool; } } } } } } }
Traducción directa
-
Pr_Offset =Pr_Prefix – Base_Pr_Prefix – brechas en el grupo de IP privadas
Nota:Cuando el grupo de direcciones IP privadas está formado por varios grupos que no son contiguos, el Pr_Offset debe contar solo las direcciones IP privadas de los grupos. Así que es la suma de:
-
El desplazamiento dentro del grupo en el que se encuentra la IP.
-
El tamaño de los pools con direcciones IP más bajas.
-
Pr_Port_Offset = Pr_Offset * Block_Size
Rounded_Port_Range_Per_IP = ceil[(Nr_Addr_PR_Prefix/Nr_Addr_PU_Prefix)] * Block_Size
Pu_Prefix = Base_Public_Prefix + piso(Pr_Port_Offset / Rounded_Port_Range_Per_IP)
Nota:Cuando el grupo de direcciones IP públicas está formado por varios grupos que no son contiguos, el Pu_Offset debe contar solo las direcciones IP públicas de los grupos. Por lo tanto, la suma debe entenderse como:
-
Si el valor
floor(Pr_Port_Offset / Rounded_Port_Range_Per_IP)
es mayor que el tamaño delfirst Public IP pool
, reste el tamaño de este primer grupo del valor. Luego, considere el segundo tamaño de la piscina. -
Repita el proceso hasta que el valor sea menor que el n-ésimo grupo.
-
Pu_Start_Port = Pu_Port_Range_Start + (Pr_Port_Offset % Rounded_Port_Range_Per_IP)
Usando la configuración de ejemplo y asumiendo un flujo de suscriptor procedente de 10.1.1.250:5000:
Pr_Offset = 10.1.1.250 – 10.1.0.1 = 505
Pr_Port_Offset = 505 * 249 = 125.745
Rounded_Port_Range_Per_IP = ceil[(65, 533/254)] * 249 = 259 * 249 = 64.491
Pu_Prefix = 203.0.113.1 + piso(125,745 /64,491) = 203.0.113.1 +1 = 203.0.113.2
Pu_Start_Port = 1.024 + (125.745 % 64.491) = 62278
10.1.1.250 se convierte a 203.0.113.2.
El puerto de inicio es 62278. Hay 249 puertos disponibles para el suscriptor según el tamaño de bloque configurado. El intervalo de puertos disponible abarca los puertos 62278 a 62526 (inclusive).
El flujo específico 10.1.1.250:5000 asigna aleatoriamente cualquiera de los puertos de su rango porque se especificó una asignación aleatoria.
Traducción inversa
-
Pr_Offset =Pr_Prefix – Base_Pr_Prefix – brechas en el grupo de IP privadas
Nota:Cuando el grupo de direcciones IP privadas está formado por varios grupos que no son contiguos, el Pr_Offset debe contar solo las direcciones IP privadas de los grupos. Así que es la suma de:
-
El desplazamiento dentro del grupo en el que se encuentra la IP.
-
El tamaño de los pools con direcciones IP más bajas.
-
Pu_Port_Offset = (Pu_Offset * Rounded_Port_Range_Per_IP) + (Pu_Actual_Port – Pu_Port_Range_Start)
Subscriber_IP = Base_Pr_Prefix + piso(Pu_Port_Offset / Block_Size)
La traducción inversa se determina de la siguiente manera. Supongamos que un flujo vuelve a 203.0.113.2:62278.
Pu_Offset = 203.0.113.2 – 203.0.113.1 = 1
Pu_Port_Offset = (1 * 64.491) + (62.280 - 1024) = 125.747
Subscriber_IP = 10.1.0.1 + piso(125,747 / 249) = 10.1.0.1 + 505 = 10.1.1.250
Nota:En la traducción inversa, solo se puede derivar la dirección IP privada original, y no el puerto original en uso. Esto es lo suficientemente granular para los requisitos de aplicación de la ley.
Cuando haya configurado el NAPT determinista, puede utilizar los comandos y show services nat deterministic-nat nat-port-block
para mostrar la show services nat deterministic-nat internal-host
asignación directa e inversa. Sin embargo, las asignaciones cambiarán si vuelve a configurar el tamaño de bloque de asignación de bloques de puerto determinista o la from
cláusula de la regla NAT. Para proporcionar información histórica sobre las asignaciones, se recomienda escribir scripts que puedan mostrar asignaciones específicas para configuraciones anteriores.
Restricciones deterministas de NAPT
Cuando configure NAPT determinista, tenga en cuenta lo siguiente:
Para la configuración determinista de direcciones de host NAT64 de IPv6, se admite el último cambio de 32 bits (4 bytes) del prefijo de host IPv6. Esto significa que solo podemos configurar máscaras de prefijo /96 para la dirección IPv6, que admite un número máximo de dirección de 232 para un prefijo IPv6. La dirección de host se especifica en la jerarquía de
[services nat source pool p1 port deterministic host]
configuración.Por lo general, el número de direcciones en el intervalo de hosts debe ser mayor que el número de direcciones en el grupo.
-
Práctica recomendada:
No se recomienda configurar el número de dirección de host para que supere el número total de recursos de bloque de puerto, ya que es posible que algunos hosts no reciban correctamente un recurso de bloque de puerto.
El tamaño mínimo de bloque para NAT determinista es 1. Si configura un tamaño de bloque más pequeño, se producirá un error en la confirmación. Si el tamaño del bloque está configurado en 0, el tamaño del bloque se calculará automáticamente en función del número de host y el número de dirección traducido. Si el tamaño de bloque calculado es inferior a 1, se produce un error en la confirmación.
Para el NAPT determinista de servicios de próxima generación, puede configurar una combinación de direcciones de host IPv4 e IPv6 juntas en un grupo NAT en una lista de nombres de dirección o de direcciones. El número total de prefijo de host no puede superar los 1000.
No puede configurar un intervalo de direcciones o un nombre DNS en un nombre de libreta de direcciones de host.
El prefijo de dirección de host configurado y el nombre de la libreta de direcciones de host se combinan si sus prefijos se superponen. Puede utilizar el
show services nat source deterministic
comando operativo para mostrar los prefijos combinados.-
Práctica recomendada:
Le recomendamos que mantenga las direcciones de host del suscriptor coherentes con varias reglas que coincidan con el prefijo de la dirección de origen, si se usa el mismo grupo NAT determinista en varias reglas; de lo contrario, es posible que el tráfico de los hosts que no están configurados en el grupo NAT, aunque coincida con la regla NAT, no asigne el puerto correctamente.
Para los servicios NAPT de servicios de próxima generación, el número total de direcciones de host configuradas debe ser mayor o igual que los bloques de puertos NAT deterministas disponibles.