Srisuresh
Request for Comments: 3022 Jasmine Networks
Obsoletos: 1631 K. Egevang
Categoría: Informativo Intel Corporation
Enero 2001
Traductor de Dirección de Red IP Tradicional (NAT Tradicional)
Estado de este memorándum
Este memorándum provee información para la comunidad Internet. No
especifica un estándar Internet de ningún tipo. La distribución de
este memorándum es ilimitada.
Nota de copyright
Copyright (C) The Internet Society (2001). Todos los derechos
reservados.
Prefacio
La operación NAT descrita en este documento extiende la traducción de
dirección introducida en el RFC 1631 e incluye un nuevo tipo de
dirección de red y traducción de puerto TCP/UDP. Además, este
documento corrige el algoritmo ajuste de Suma de Control publicada en
el RFC 1631 e intenta discutir la operación NAT y sus limitaciones en
detalle.
Resumen
La Traducción de Dirección de Red Básica o NAT Básico es un método
por el que las direcciones IP son mapeadas desde un grupo a otro, de
manera transparente para el usuario final. La Traducción de Puerto
Dirección de Red, o NAPT es un método por el que muchas direcciones
de red y sus puertos TCP/UDP (Protocolo de Control de
Transmisión/Protocolo de Datagrama de Usuario) son traducidos a una
sola dirección de red y sus puertos TCP/UDP. Juntas, estas dos
operaciones, son referidas como NAT Tradicional, proporcionando un
mecanismo para conectar un dominio con direcciones privadas a un
dominio externo con direcciones registradas globalmente únicas.
1. Introducción
La necesidad de traducir una Dirección IP surge cuando direcciones IP
de red internas no pueden ser usadas fuera de la red ya sea por
razones de privacidad o porque son inválidas para su uso fuera de la
red.
| / . /
+---------------+ WAN . +--------------------+/
|Router Regional|----------------------|Router de Zona c/NAT|---
+---------------+ . +--------------------+
. | .
| LAN
. ---------------
Frontera de zona
Figura 1: Configuración de NAT Tradicional
2.1. Reseña de NAT Básico
La operación de NAT Básico es como se describe a continuación. Una
zona con un conjunto de direcciones de red privadas puede ser
habilitada para comunicarse con una red externa mapeando
dinámicamente el conjunto de direcciones privadas a un conjunto de
direcciones de red válidas globalmente. Si el número de nodos local
es menor o igual que las direcciones en el conjunto global, cada
dirección tiene garantizada una dirección global para ser mapeada a
ella. De lo contrario, los nodos habilitados para tener acceso
simultáneo a la red externa son limitados por el número de
direcciones en el conjunto global. Direcciones locales individuales
puede ser estáticamente mapeadas a direcciones globales específicas
para asegurarse acceso garantizado hacia afuera o para permitir
acceso al host local desde hosts externos mediante una dirección
pública fija. Sesiones múltiples simultáneas puede ser iniciadas
desde un nodo local, usando el mismo mapeo de dirección.
Las direcciones dentro de la zona son locales para este dominio y no
son válidas fuera de él. De este modo, las direcciones dentro de la
zona pueden ser reusadas por alguna otra. Por ejemplo, una sola
dirección de Clase A puede ser usada por muchas zonas. En cada punto
de salida entre una zona y el backbone, NAT está instalado. Si hay
más de un punto de salida es de gran importancia que cada NAT tenga
la misma tabla de traducción.
Por ejemplo, en el caso de la figura 2, ambas zonas A y B
internamente usan el bloque de dirección privada A 10.0.0.0/8 [RFC
1918]. La zona NAT de A es asignada al bloque de dirección clase C
198.76.29.0/24, y la zona NAT de B es asignada al bloque de
dirección de clase C 198.76.28.0/24. Las direcciones de clase C son
globalmente únicas y ningún otro conjunto NAT puede usarlas.
| /
+---------------+
|Router Regional|
+---------------+
WAN | | WAN
| |
Zona A .............|.... ....|............ Zona B
| |
{s=198.76.29.7,^ | | v{s=198.76.29.7,
d=198.76.28.4}^ | | v d=198.76.28.4}
+--------------------+ +--------------------+
|Router de Zona c/NAT| |Router de Zona c/NAT|
+--------------------+ +--------------------+
| |
| LAN LAN |
------------- -------------
| |
{s=10.33.96.5, ^ | | v{s=198.76.29.7,
d=198.76.28.4}^ +--+ +--+ v d=10.81.13.22}
|--| |--|
/____ /____
10.33.96.5 10.81.13.22
Figura 2: Operación NAT Básica
Cuando el host 10.33.96.5 en la zona A desea enviar un paquete al
host 10.81.13.22 en la zona B, este usa la dirección 198.76.28.4
globalmente única como destino, y envia el paquete a su router
primario. El router de la zona tiene un ruteo estático para la red
198.76.0.0 entonces el paquete es reenviado a la conexión WAN. Sin
embargo, NAT traduce la dirección origen 198.76.29.7 antes de que el
paquete sea reenviado. Del mismo modo, los paquetes IP en la ruta de
regreso van a pasar a través de traducciones de dirección similares.
Observe que esto no requiere cambios a los hosts o a los routers. Por
ejemplo, por lo que a la zona A le concierne, 198.76.28.4 es la
dirección usada por el host en la zona B. Las traducciones de
dirección son transparentes para los hosts finales en muchos casos.
Por supuesto, esto es sólo un ejemplo. Hay numerosos temas para ser
explorados.
2.2. Reseña de NAPT
Digamos, una organización tiene un red IP privada y una conexión WAN
a un proveedor de servicio. El router de zona de la red privada es
asignado a una dirección válida globalmente en la conexión WAN y los
demás nodos en la organización usan direcciones IP que tienen sólo
significado local. En este caso, a los nodos en la red privada se les
| /
+--------------------------------+
|Router del Proveedor de Servicio|
+--------------------------------+
WAN |
|
Stub A .............|....
|
^{s=138.76.28.4,sport=1024, | v{s=138.76.29.7, sport = 23,
^ d=138.76.29.7,dport=23} | v d=138.76.28.4, dport = 1024}
+---------------------+
|Router de Zona c/NAPT|
+---------------------+
|
| LAN
--------------------------------------------
| ^{s=10.0.0.10,sport=3017, | v{s=138.76.29.7, sport=23,
| ^ d=138.76.29.7,dport=23} | v d=10.0.0.10, dport=3017}
| |
+--+ +--+ +--+
|--| |--| |--|
/____ /____ /____ 10.0.0.1 10.0.0.2 .....
10.0.0.10
Figura 3: Operación de Traducción de Puerto Dirección de Red
(NAPT)
son permitidas desde los nodos locales, servidos por un router NAPT.
3.0. Fases de traducción de una sesión
Las fases de traducción con NAT tradicional son las mismas que las
descriptas en [NAT-TERM]. Las siguientes subsecciones identifican
elementos que son específicos del NAT Tradicional.
3.1. Ligando la dirección
Con NAT Básico, una dirección privada es ligada a una dirección
externa, cuando la primera sesión saliente es iniciada desde el host
privado. Subsecuentemente a esto, todas las otras sesiones salientes
originadas desde la misma dirección privada usarán la misma dirección
unida por la traducción de paquete.
En el caso de NAPT, donde muchas direcciones privadas son mapeadas a
un sola dirección globalmente única, la unión sería desde la tupla de
(dirección privada, puerto TU privado) a la tupla de (dirección
asignada, puerto TU asignado). Como con NAT Básico, esta unión es
determinada cuando la primera sesión saliente es iniciada por la
tupla de (dirección privada, puerto TU privado) en el host privado.
Mientras que no es una práctica común, es posible tener una
aplicación en un host privado que establece múltiples sesiones
simultáneas originadas desde la misma tupla de (dirección privada,
puerto TU privado). En este caso, un sola unión para la tupla de
(dirección privada, puerto TU privado) puede ser usado para la
traducción de paquetes pertenecientes a todas las sesiones originadas
desde la misma tupla en un host.
3.2. Búsqueda y traducción de dirección
Después de que una unión de dirección o unión de tupla (dirección,
puerto TU) en el caso de NAPT es establecida, se puede mantener un
estado para cada una de las conexiones usando la unión. Los paquetes
pertenecientes a la misma sesión estarán sujetos a la búsqueda de
sesión para propósitos de traducción. La naturaleza exacta de la
traducción es discutida en la sección siguiente.
3.3. Desligando la dirección
Cuando la última sesión basada en una unión de dirección o de tupla
(dirección, puerto TU) es terminada, su unión puede ser terminada.
4.0. Traducciones de paquete
Los paquetes pertenecientes a sesiones manejadas por NAT pasan por
una traducción en una u otra dirección. Las consecuencias de la
void
checksumadjust (unsigned char *chksum,
unsigned char *optr,
int olen,
unsigned char *nptr,
int len)
/* asumiendo: unsigned char son 8 bits, long son 32 bits.
- chksum apunta a la suma de control en el paquete
- optr apunta al dato viejo en el paquete
- nptr apunta al dato nuevo en el paquete
*/
{
long x, old, new;
x=chksum[0]*256+chksum[1];
x=~x & 0xFFFF;
while (olen)
{
old=optr[0]*256+optr[1]; optr+=2;
x-=old & 0xffff;
if (x<=0) { x--; x&=0xffff; }
olen-=2;
}
while (nlen)
{
new=nptr[0]*256+nptr[1]; nptr+=2;
x+=new & 0xffff;
if (x & 0x10000) { x++; x&=0xffff; }
nlen-=2;
}
x=~x & 0xFFFF;
chksum[0]=x/256; chksum[1]=x & 0xff;
}
4.3 Modificaciones al paquete de error ICMP
Los cambios al mensaje de error ICMP ([ICMP]) incluirán cambios a los
encabezados IP e ICMP en la capa saliente como bien cambios a los
encabezados de los paquetes embebidos en la carga útil del mensaje
ICMP-error.
El método para NAT debe ser transparente para el host-final, la
dirección IP del encabezado IP embebido en la carga útil del mensaje
ICMP-error debe ser modificado, el campo de suma de control del
encabezado IP embebido debe ser modificado, y finalmente, la suma de
control del encabezado ICMP debe también ser modificada para reflejar
los cambios a la carga útil.
En la configuración de un NAPT, si el mensaje IP embebido en ICMP
backbone. Solo las redes con direcciones globales pueden ser conocidas
fuera de la zona. Sin embargo, la información global que recibe NAT
desde el router frontera de la zona puede ser anunciado en la zona de la
manera usual.
Típicamente, el router NAT de la zona tendrá un encaminamiento estático
configurado para reenviar todo el tráfico externo al router del
proveedor de servicio a través de la conexión WAN, y el router del
proveedor de servicio tendrá un encaminamiento estático configurado para
reenviar paquetes NAT (ej.: aquellos cuya dirección IP destino cae en el
rango de NAT manejado por la lista de dirección global) al router NAT
sobre la conexión WAN.
5.4. Conmutar de NAT Básico a NAPT
En la configuración NAT Básico, cuando los nodos de la red privada
agotan las direcciones globales disponibles para mapeo (digamos, una red
privada de clase B mapeada a un bloque de dirección global de clase C),
el acceso a la red externa para algunos de los nodos locales es
abruptamente cortado después de que la última dirección global de la
lista de dirección es usada. Esto es muy inconveniente y drástico. Como
un incidente puede ser seguramente evitado opcionalmente permitiendo al
router NAT Básico conmutar a una configuración NAPT para la última
dirección global en la lista de dirección. Haciendo esto asegurará que
los hosts en una red privada tendrán continuidad, acceso ininterrumpido
a los nodos externos y servicios para la mayoría de las aplicaciones.
Observe, sin embargo, que esto puede ser desconcertante si alguna de las
aplicaciones que usaba para trabajar con NAT Básico de repente corta
debido a que conmuta a NAPT.
6.0. Limitaciones NAT
[NAT-TERM] cubre las limitaciones de todas las cualidades de NAT,
ampliamente hablando. Las siguientes subsecciones identifican
limitaciones específicas al NAT Tradicional.
6.1. Privacidad y seguridad
El NAT tradicional puede ser visto como algo que provee un mecanismo de
privacidad como sesiones unidireccionales desde los hosts privados y
donde las direcciones verdaderas de los hosts privados no son visibles
para los hosts externos.
La misma característica que brinda privacidad hace la depuración de
problemas (incluyendo violaciones de seguridad) potencialmente más
difícil. Si un host en una red privada está abusando de Internet de
alguna manera (como tratando de atacar a otra máquina o enviando grandes
cantidades de spam) es más difícil rastrear el origen actual de
[FTP]
Postel, J. y J. Reynolds, "FILE TRANSFER PROTOCOL (FTP)", STD
9, RFC 959, Octubre 1985.
[TCP]
Defense Advanced Research Projects Agency Information Process-
ing Techniques Office, "TRANSMISSION CONTROL PROTOCOL (TCP)
SPECIFICATION", STD 7, RFC 793, Septiembre 1981.
[ICMP]
Postel, J., "INTERNET CONTROL MESSAGE (ICMP) SPECIFICATION",
STD 5, RFC 792, Septiembre 1981.
[UDP]
Postel, J., "User Datagram Protocol (UDP)", STD 6, RFC 768,
Agosto 1980.
[RFC 2101]
Carpenter, B., Crowcroft, J. y Y. Rekhter, "IPv4 Address
Behaviour Today", RFC 2101, Febrero 1997.
Direcciones de los autores
Pyda Srisuresh
Jasmine Networks, Inc.
3061 Zanker Road, Suite B
San Jose, CA 95134
U.S.A.
Teléfono: (408) 895-5032
Email: srisuresh@yahoo.com
Kjeld Borch Egevang
Intel Dnmark ApS
Teléfono: +45 44886556
Fax: +45 44886051
Email: kjeld.egevang@intel.com
http: //www.freeyellow.com/members/kbre
Declaración de Copyright completa
Copyright (C) The Internet Society (2001). Todos los derechos reservados.
Este documento y las traducciones de el pueden ser copiadas y provistas
a otros, y trabajos derivados que comenten o expliquen de otra manera
esto o asistan en su implementación pueden ser preparados, copiados,
publicados y distribuidos, enteros o en parte, sin restricción de ningún