> For the complete documentation index, see [llms.txt](https://juan-martin-franco.gitbook.io/network-+/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://juan-martin-franco.gitbook.io/network-+/7.-enrutamiento/7.4-traduccion-de-direcciones-nat-y-pat.md).

# 7.4 - Traducción de direcciones (NAT y PAT)

## Traducción de direcciones (NAT y PAT)

Para solucionar uno de los problemas de la escases de direcciones IPv4, entre otras cosas, surge lo que conocemos como <mark style="color:blue;">**traducción de direcciones (Address Translation)**</mark>. Esto permite que tengamos una única dirección IP pública para un conjunto de dispositivos, los cuales tienen cada uno su propia dirección IP privada.

Existen dos versiones de esta traducción de direcciones:

* <mark style="color:purple;">**NAT (Network Address Translation)**</mark>
* <mark style="color:green;">**PAT (Port Address Translation)**</mark>

### NAT (Network Address Translation)

La <mark style="color:blue;">**traducción de direcciones de red**</mark>, conocida como <mark style="color:blue;">**NAT**</mark>, es el **método por el cuál se traducen todas las direcciones IP privadas de los dispositivos de una red en una única dirección IP privada**. Es decir, si en nuestro hogar tenemos 14 dispositivos con 14 direcciones IP privadas, todas estas se traducirán a la misma dirección IP pública, por medio del NAT.

Básicamente, **NAT traduce las direcciones IP privadas en direcciones IP públicas para el enrutamiento sobre redes públicas, como el internet**.

### Tipos de Traducción de Direcciones

Cuando hablamos de los diferentes tipos de traducción de direcciones, existen 3 tipos principales:

* <mark style="color:purple;">**DNAT (Dynamic Network Address Translation)**</mark>
* <mark style="color:purple;">**SNAT (Static Network Address Translation)**</mark>
* <mark style="color:purple;">**PAT (Port Address Translation)**</mark>

### DNAT (Dynamic Network Address Translation)

La <mark style="color:blue;">**traducción de direcciones de red dinámica**</mark>, conocida como <mark style="color:blue;">**DNAT**</mark>, es un **mecanismo que toma una dirección IP desde un pool de direcciones IP y la asignará automáticamente**, proveyéndonos una traducción de direcciones 1 a 1 (one-to-one translation).

<mark style="color:orange;">**¿Por qué querríamos usar DNAT?**</mark>

Las direcciones IP públicas cuestan dinero.\
En ocasiones solo deseamos pagar por 5 direcciones IP públicas en nuestro negocio, pero tenemos 30 estaciones de trabajo.&#x20;

<mark style="background-color:green;">**La forma en la que trabaja DNAT es la siguiente**</mark>:

Cuando deseamos obtener conectividad online, nuestra computadora se dirigirá hacia el router, tomará una dirección IP de las 5 que tenemos, realizará una traducción desde nuestra dirección IP privada hacia nuestra dirección IP pública y de esa forma seremos capaces de utilizarla.

De esta forma, **obtenemos conectividad, realizamos nuestras peticiones y, una vez que finalizamos, nuestra computadora "devuelve" dicha dirección IP al router, al pool de direcciones compartido**.

Así, maximizamos el espacio de direcciones IP públicas para la mayor cantidad de clientes internos.

Todo esto se realiza de manera dinámica, y sin la necesidad de que nos preocupemos por eso.

### SNAT (Static Network Address Translation)

La <mark style="color:blue;">**traducción de direcciones de red estática**</mark>, conocida como <mark style="color:blue;">**SNAT,**</mark> es un mecanismo de traducción de direcciones estático.&#x20;

En este caso, la traducción de direcciones se realizará de forma estática, por lo que se asignará de forma manual una dirección IP pública para una dirección IP privada. Es decir, es una traducción de direcciones 1 a 1 pero de manera estática.

<mark style="background-color:green;">**La forma en la que trabaja SNAT es la siguiente**</mark>:

En este caso, si tenemos 5 direcciones IP públicas, también tendremos 5 direcciones IP privadas, por lo que no podemos compartirlas de manera múltiple como cuando utilizamos Dynamic NAT (DNAT).

En este tipo de traducción de direcciones, alguien tiene que asignar las direcciones IP públicas correspondientes a las direcciones IP privadas, ya que la traducción es estática.

<mark style="color:orange;">**¿Por qué querríamos usar SNAT?**</mark>

En este caso, SNAT es utilizado como una característica de seguridad.

Es una forma de tener todas las direcciones IP públicas sin que desde afuera se vea que cliente está asociado a que dirección. Es decir, se agrega una especie de pantalla de humo, que esconde los dispositivos detrás del router.

### PAT (Port Address Translation)

La <mark style="color:blue;">**traducción de direcciones de puertos**</mark>, conocida como <mark style="color:blue;">**PAT**</mark>, es un mecanismo que se utiliza cuando tenemos múltiples direcciones IP privadas compartiendo una única dirección IP pública.

PAT permite una traducción de direcciones muchos-a-uno (many-to-one translation), en lugar de la traducción de direcciones uno-a-uno presente en DNAT y SNAT.

Esto nos permite tomar redes pequeñas y ser capaz de conectarlas a través de una dirección IP única.

### Nombres de direcciones IP NAT

Existen 4 nombres correspondientes a las direcciones IP NAT:

* <mark style="color:blue;">**Interior Local (Inside Local):**</mark> Dirección IP privada que referencia un dispositivo interno.
* <mark style="color:blue;">**Interior Global (Inside Global):**</mark> Dirección IP pública que referencia un dispositivo interno.
* <mark style="color:blue;">**Exterior Local (Outside Local):**</mark> Dirección IP privada que referencia un dispositivo externo.
* <mark style="color:blue;">**Exterior Global (Outside Global):**</mark> Dirección IP pública que referencia un dispositivo externo.

Básicamente, las direcciones "global" hacen referencia a direcciones públicas, mientras que las direcciones "local" hacen referencia a direcciones privadas.

### Ubicación de las direcciones IP locales y globales en un escenario

El siguiente diagrama presenta la ubicación de las 4 direcciones presentes en NAT:

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FAdy7KxAzsyDn9KpGELos%2Fimage.png?alt=media&amp;token=0e7aa224-4537-494a-ba63-d4ef7d913039" alt=""><figcaption></figcaption></figure>

Si hablamos de dirección IP local interna, estamos hablando de nuestra dirección IP privada que referencia a un dispositivo interno.

En este diagrama, <mark style="color:blue;">**la dirección IP local interna (Inside Local) sería**</mark>:

* 10.0.1.101, dirección IP privada perteneciente a PC1
* 10.0.1.102, dirección IP privada perteneciente a PC2
* 10.0.1.103, dirección IP privada perteneciente a PC3

Luego, tenemos que referenciar la dirección IP global interna, que sería la dirección IP del router.

En este diagrama, <mark style="color:red;">**la dirección IP global interna (Inside Global) sería**</mark>:

* 78.1.45.1, dirección IP pública perteneciente a la interfaz externa del router

Seguido de esto, tenemos la dirección IP local externa, que es la dirección IP privada que referencia un dispositivo externo.

En este diagrama, <mark style="color:blue;">**la dirección IP local externa (Outside Local) sería**</mark>:

* 10.0.1.1, dirección IP privada perteneciente a la interfaz interna del router

Por último, tenemos la dirección IP global externa, que es la dirección IP pública que referencia un dispositivo externo.

En este diagrama, <mark style="color:red;">**la dirección IP global externa (Outside Global) sería**</mark>:

* 66.74.58.124, dirección IP pública perteneciente al server, que es un dispositivo externo

### ¿Cómo funciona NAT?

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FAdy7KxAzsyDn9KpGELos%2Fimage.png?alt=media&amp;token=0e7aa224-4537-494a-ba63-d4ef7d913039" alt=""><figcaption></figcaption></figure>

Ahora, para entender el funcionamiento, se va a simular que PC1 y PC2 quieren realizar una petición al mismo servidor.

Tanto PC1 como PC2 tienen una dirección IP privada: 10.0.1.101 y 10.0.1.102 respectivamente, y las cuales no son ruteables hacia el exterior.

Cuando ambos dispositivos envían una petición desde su dirección IP origen, la dirección IP es la privada.&#x20;

Como parte de la petición, ambos dispositivos definen como dirección IP destino la dirección IP del servidor, en este caso 66.74.58.124.

Ambos dispositivos enviarán la petición a través de su default gateway, sobre el router, el cual debe tener NAT habilitado.

Cuando el router obtiene dicha petición, registrará el hecho de que 10.0.1.101 pertenece a PC1 y que 10.0.1.102 pertenece a PC2, y le asignará a ambos una dirección IP global interna desde su pool de direcciones IP públicas, en este caso 78.1.45.101 y 78.1.45.102 respectivamente.

Al realizar esto, cortará la dirección IP de origen, las cuales eran las direcciones IP privadas 10.0.1.101 y 10.0.1.102 y las modificará por 78.1.45.101 y 78.1.45.102, las cuales son públicamente ruteables.

Luego, al tener direcciones IP públicamente ruteables, se enviarán las peticiones hacia el servidor.

Cuando la petición vuelve (la respuesta a la petición original) al router, el router cortará las direcciones IP públicas y le agregará las direcciones IP privadas correspondientes, para luego enviarlas a PC1 y PC2 respectivamente.

### ¿Cómo funciona PAT?

<figure><img src="https://1668154188-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKyoEXmY0jfChHS8PdGMX%2Fuploads%2FTpc4sudrGt1A2ScDglcf%2Fimage.png?alt=media&amp;token=bee71e45-3a69-4df9-9ae9-a5323f737324" alt=""><figcaption></figcaption></figure>

En el caso de PAT (lo que utilizamos en nuestros hogares), se compartirá una única dirección IP pública (en este caso 78.1.45.1) y se utilizará un número de puerto para seguir el rastro de las peticiones.
