# Configuración de NAT/PAT

### ¿Qué es NAT? <a href="#qu-es-nat" id="qu-es-nat"></a>

**NAT (Network Address Translation)** es una técnica que traduce direcciones IP privadas a públicas (y viceversa) en el momento en que los paquetes atraviesan el router perimetral. Permite que hosts con direcciones RFC 1918 (10.x.x.x, 172.16.x.x, 192.168.x.x) accedan a Internet sin exponer directamente su esquema de direccionamiento interno.

Existen tres modalidades principales:

| Tipo                   | Funcionamiento                                              | Cuándo usarlo                                                     |
| ---------------------- | ----------------------------------------------------------- | ----------------------------------------------------------------- |
| **NAT Estático**       | Mapeo 1:1 permanente entre IP privada e IP pública          | Servidores internos accesibles desde Internet (web, mail).        |
| **NAT Dinámico**       | Pool de IPs públicas asignadas temporalmente a IPs privadas | Cuando hay suficientes IPs públicas para traducción 1:1 temporal. |
| **PAT / NAT Overload** | N IPs privadas → 1 IP pública diferenciadas por puerto      | Casi todos los escenarios empresariales modernos.                 |

### ¿Qué es PAT? <a href="#qu-es-pat" id="qu-es-pat"></a>

**PAT (Port Address Translation)**, también llamado *NAT Overload*, es el tipo más común de NAT en la actualidad. Permite que cientos o miles de hosts internos compartan **una sola dirección IP pública**, usando un puerto TCP/UDP único para cada sesión. Cuando llega la respuesta del servidor externo, el router consulta la tabla de traducciones y reenvía el paquete al host correcto según el número de puerto.

El router mantiene una tabla con entradas del tipo:

```
IP privada : puerto privado  ←→  IP pública : puerto único asignado
192.168.1.10:1025            ←→  203.0.113.1:50001
192.168.1.11:1025            ←→  203.0.113.1:50002
```

En este esquema se visualiza mejor el funcionamiento completo:

<figure><img src="https://539580950-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiKvwltOme7zTxep3LVyW%2Fuploads%2FFlLIOYCrM7Jejom1EDTt%2Fimage.png?alt=media&#x26;token=5a462d3c-83d2-47d2-9512-30c4736bc690" alt=""><figcaption></figcaption></figure>

Estas tecnologías tienen una serie de utilidades en Redes Corporativas como son:

* **Conservación de IPs públicas**: Con un bloque pequeño (incluso una sola IP) se puede dar acceso a Internet a toda la organización.
* **Seguridad perimetral**: Las IPs internas quedan ocultas al exterior, dificultando el escaneo de la red interna.
* **Publicación de servidores (NAT estático)**: Permite exponer un servidor web o de correo con IP pública fija sin que la IP privada interna cambie.
* **Migración de ISP sin renumeración**: Al cambiar de proveedor, solo se actualiza la IP pública; los hosts internos no necesitan reconfigurarse.
* **Balanceo de carga**: NAT puede distribuir conexiones entrantes entre varios servidores internos.
* **Interconexión de sedes con solapamiento de IPs**: NAT permite comunicar oficinas que tienen el mismo rango privado (NAT doble).

Vamos a practicar un poco estos conceptos.

***

### Práctica 1 — Sede con Servidor Web Público (NAT Estático + PAT) <a href="#prctica-1--sede-con-servidor-web-pblico-nat-esttic" id="prctica-1--sede-con-servidor-web-pblico-nat-esttic"></a>

**Escenario:** La empresa *CorpNet S.A.* tiene una sede con los siguientes requisitos:

* Un servidor web interno (`10.1.1.10`) debe ser accesible desde Internet con la IP pública `179.9.8.80`.
* Los usuarios de la red interna `10.1.0.0/16` deben poder salir a Internet compartiendo la IP pública de la interfaz `serial 0`.

**Objetivo:** Configurar NAT estático para el servidor y PAT (overload) para los usuarios.

<figure><img src="https://539580950-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiKvwltOme7zTxep3LVyW%2Fuploads%2FbIfWgmEHWu35Aq1dESfa%2Fimage.png?alt=media&#x26;token=ff702886-1a04-4ad2-acd7-cd7379e1ac34" alt=""><figcaption></figcaption></figure>

#### Tabla de Enrutamiento  <a href="#tabla-de-enrutamiento--r1-router-corporativo-prcti" id="tabla-de-enrutamiento--r1-router-corporativo-prcti"></a>

| Código  | Red Destino | Máscara | Siguiente Salto | Interfaz Salida |
| ------- | ----------- | ------- | --------------- | --------------- |
| R1      | 10.1.0.0    | /16     | —               | Gig0/0          |
| R1      | 179.9.8.1   | /24     | —               | Serial0/0/0     |
| **S\*** | **0.0.0.0** | **/0**  | **179.9.8.2**   | Serial0/0/0     |
| ISP     | 179.9.8.2   | /24     |                 | Serial0/0/0     |
| ISP     | 192.168.1.1 | /24     |                 | Gig0/0          |

#### Paso 1. Configurar IPs&#x20;

Configura la red completa con:&#x20;

* Servidor con 10.1.1.10 255.255.0.0
* PC de gestión con 10.1.1.15 255.255.0.0
* PC de casa con 192.168.1.15 255.255.255.0
* Router ISP/Internet con:

```
R_ISP> enable
R_ISP# config t

R_ISP(config)# interface Serial0/0/0
R_ISP(config-if)# description ENLACE_HACIA_R1
R_ISP(config-if)# ip address 179.9.8.2 255.255.255.0
R_ISP(config-if)# no shutdown
R_ISP(config-if)# exit

R_ISP(config)# interface GigabitEthernet0/0
R_ISP(config-if)# description RED_CASERA
R_ISP(config-if)# ip address 192.168.1.1 255.255.255.0
R_ISP(config-if)# no shutdown
R_ISP(config-if)# exit

!RUTA POR DEFECTO hacia Null0 (simula el vacío de Internet)
R_ISP(config)# ip route 0.0.0.0 0.0.0.0 Null0
```

#### Paso 2. Configurar el R1

```
Router> enable
Router# configure terminal
Router(config)# hostname R1

R1(config)# interface GigabitEthernet0/0
R1(config-if)# description RED_INTERNA_CORPORATIVA
R1(config-if)# ip address 10.1.1.1 255.255.0.0
R1(config-if)# ip nat inside
R1(config-if)# no shutdown
R1(config-if)# exit

R1(config)# interface Serial0/0/0
R1(config-if)# description ENLACE_ISP
R1(config-if)# ip address 179.9.8.1 255.255.255.0
R1(config-if)# ip nat outside
R1(config-if)# no shutdown
R1(config-if)# exit

R1(config)# ip route 0.0.0.0 0.0.0.0 179.9.8.2

! ============================================================
!  NAT ESTÁTICO - Servidor Web interno → IP pública fija
!  10.1.1.10 (privada) <-> 179.9.8.80 (pública)
! ============================================================
R1(config)# ip nat inside source static 10.1.1.10 179.9.8.80

! ============================================================
!  ACL - Identifica qué tráfico interno usa PAT
! ============================================================
R1(config)# access-list 1 permit 10.1.0.0 0.0.255.255

! ============================================================
!  PAT (OVERLOAD) - Usuarios internos salen por la IP de Serial0/0/0
! ============================================================
R1(config)# ip nat inside source list 1 interface Serial0/0/0 overload

```

**Verificación:**

```
R1# show ip nat translations
! Debes ver la entrada estática del servidor (10.1.1.10 <-> 179.9.8.80)
! y entradas dinámicas PAT cuando los usuarios naveguen

R1# show ip nat statistics
! Verifica hits en traducciones activas

R1# debug ip nat
! Observa en tiempo real las traducciones que se generan
```

**¿Qué se espera ver?** La entrada NAT estática del servidor aparece siempre en la tabla, incluso sin tráfico. Las entradas PAT de usuarios aparecen al generar tráfico y se eliminan con `clear ip nat translations *` cuando caducan.

***

### Práctica 2 — Oficina con Dos Segmentos y Pool de IPs Públicas (Dynamic NAT + PAT) <a href="#prctica-2--oficina-con-dos-segmentos-y-pool-de-ips" id="prctica-2--oficina-con-dos-segmentos-y-pool-de-ips"></a>

**Escenario:** La empresa *MultiLAN Corp* tiene dos departamentos en VLANs separadas:

* **Departamento A:** `192.168.2.0/24` (eth1)
* **Departamento B:** `192.168.3.0/24` (eth0)

El ISP asigna el bloque público `179.9.8.16/28` (IPs: `179.9.8.17` – `179.9.8.30`). Se debe configurar PAT para que ambos departamentos compartan ese pool con sobrecarga.

**Topología:**

```
text[Dep. A 192.168.2.0/24] --- Eth1
                               \
                               [R1] --- Serial0 (172.16.2.1) --- [ISP]
                               /
[Dep. B 192.168.3.0/24] --- Eth0
```

**Objetivo:** Ambos departamentos salen a Internet. Si el pool se agota, PAT permite sobrecarga sobre las mismas IPs del pool.

### R1 — Router Corporativo <a href="#r1--router-corporativo" id="r1--router-corporativo"></a>

```
text! ============================================================
!  HOSTNAME
! ============================================================
Router> enable
Router# configure terminal
Router(config)# hostname R1

! ============================================================
!  INTERFAZ Gi0/0 - Departamento B (inside)
! ============================================================
R1(config)# interface GigabitEthernet0/0
R1(config-if)# description DEPARTAMENTO_B
R1(config-if)# ip address 192.168.3.1 255.255.255.0
R1(config-if)# ip nat inside
R1(config-if)# no shutdown
R1(config-if)# exit

! ============================================================
!  INTERFAZ Gi0/1 - Departamento A (inside)
! ============================================================
R1(config)# interface GigabitEthernet0/1
R1(config-if)# description DEPARTAMENTO_A
R1(config-if)# ip address 192.168.2.1 255.255.255.0
R1(config-if)# ip nat inside
R1(config-if)# no shutdown
R1(config-if)# exit

! ============================================================
!  INTERFAZ Serial0/0/0 - Enlace al ISP (outside)
! ============================================================
R1(config)# interface Serial0/0/0
R1(config-if)# description ENLACE_ISP
R1(config-if)# ip address 172.16.2.1 255.255.255.0
R1(config-if)# ip nat outside
R1(config-if)# no shutdown
R1(config-if)# exit

! ============================================================
!  RUTA POR DEFECTO hacia el ISP
! ============================================================
R1(config)# ip route 0.0.0.0 0.0.0.0 172.16.2.2

! ============================================================
!  ACL - Identifica tráfico de ambos departamentos
! ============================================================
R1(config)# access-list 1 permit 192.168.2.0 0.0.0.255
R1(config)# access-list 1 permit 192.168.3.0 0.0.0.255

! ============================================================
!  POOL NAT - Rango de IPs públicas asignadas por el ISP
!  /28 = 255.255.255.240 → IPs utilizables: .17 a .30
! ============================================================
R1(config)# ip nat pool nat-pool2 179.9.8.17 179.9.8.30 netmask 255.255.255.240

! ============================================================
!  PAT OVERLOAD - Ambos departamentos comparten el pool con sobrecarga
! ============================================================
R1(config)# ip nat inside source list 1 pool nat-pool2 overload

! ============================================================
!  GUARDAR CONFIGURACIÓN
! ============================================================
R1(config)# end
R1# write memory
```

***

### R\_ISP — Router ISP/Internet (Cisco 2901, Práctica 2) <a href="#risp--router-ispinternet-cisco-2901-prctica-2" id="risp--router-ispinternet-cisco-2901-prctica-2"></a>

```
text! ============================================================
!  HOSTNAME
! ============================================================
Router> enable
Router# configure terminal
Router(config)# hostname R_ISP

! ============================================================
!  INTERFAZ hacia R1 (enlace WAN)
! ============================================================
R_ISP(config)# interface Serial0/0/0
R_ISP(config-if)# description ENLACE_HACIA_R1
R_ISP(config-if)# ip address 172.16.2.2 255.255.255.0
R_ISP(config-if)# no shutdown
R_ISP(config-if)# exit

! ============================================================
!  INTERFAZ hacia la red casera
! ============================================================
R_ISP(config)# interface GigabitEthernet0/0
R_ISP(config-if)# description RED_CASERA
R_ISP(config-if)# ip address 192.168.1.1 255.255.255.0
R_ISP(config-if)# no shutdown
R_ISP(config-if)# exit

! ============================================================
!  RUTA AL POOL NAT DE R1 ← ¡OBLIGATORIA EN PRÁCTICA 2!
!  Sin esta ruta, el tráfico de retorno no llega a los hosts
!  179.9.8.16/28 está detrás de R1 (172.16.2.1)
! ============================================================
R_ISP(config)# ip route 179.9.8.16 255.255.255.240 172.16.2.1

! ============================================================
!  RUTA POR DEFECTO (simula internet)
! ============================================================
R_ISP(config)# ip route 0.0.0.0 0.0.0.0 Null0

! ============================================================
!  GUARDAR CONFIGURACIÓN
! ============================================================
R_ISP(config)# end
R_ISP# write memory
```

<br>

```
text! --- Paso 1: Marcar interfaces inside ---
R1(config)# interface ethernet 0
R1(config-if)# ip address 192.168.3.1 255.255.255.0
R1(config-if)# ip nat inside

R1(config)# interface ethernet 1
R1(config-if)# ip address 192.168.2.1 255.255.255.0
R1(config-if)# ip nat inside

R1(config)# interface serial 0
R1(config-if)# ip address 172.16.2.1 255.255.255.0
R1(config-if)# ip nat outside

! --- Paso 2: ACL que permita ambas subredes internas ---
R1(config)# access-list 1 permit 192.168.2.0 0.0.0.255
R1(config)# access-list 1 permit 192.168.3.0 0.0.0.255

! --- Paso 3: Definir pool de IPs públicas con PAT (overload) ---
R1(config)# ip nat pool nat-pool2 179.9.8.17 179.9.8.30 netmask 255.255.255.240
R1(config)# ip nat inside source list 1 pool nat-pool2 overload
```

**Preguntas de reflexión para el estudio:**

1. ¿Qué pasaría si quitaras la palabra `overload`? ¿Cuántos hosts podrían salir simultáneamente?
2. ¿Cómo modificarías la práctica para que el Departamento A use solo NAT dinámico (sin sobrecarga) con 5 IPs del pool, y el Departamento B use PAT?
3. Ejecuta `show ip nat translations` con varios hosts activos y analiza cómo el router diferencia sesiones del mismo host.

**Comandos de limpieza y troubleshooting:**

```
R1# clear ip nat translations *              ! Borra todas las traducciones dinámicas
R1# show ip nat translations                 ! Ver tabla de traducciones activa
R1# show ip nat statistics                   ! Ver contadores y configuración activa
R1# debug ip nat                             ! Trazado en tiempo real (usar con cuidado)
```

> 💡 **Truco de estudio:** El NAT estático nunca aparece en los contadores de `clear ip nat translations` porque es permanente; solo se elimina borrando la línea de configuración con `no ip nat inside source static`.

```
NAT  
Static NAT 
R1(config)#ip nat inside source static [inside local] [inside 
global] 
Ejemplo 
R1(config)#ip nat inside source static 10.1.1.1 192.168.1.2 
R1(config)#interface ethernet 0 
R1(config-if)#ip address 10.1.1.1 255.255.255.0 
R1(config-if)#ip nat inside 
R1(config)#interface serial 0 
R1(config-if)#ip address 192.168.1.1 255.255.255.0 
R1(config-if)#ip nat outside 
Configurando Dynamic NAT 
R1(config)#ip nat pool [name] [first address] [last address] 
netmask [subnet-mask] 
R1(config)#ip nat inside source lista acl-number pool pool-name 
Ejemplo  
Ing. Gerardo Morales 
https://mr-telecomunicaciones.com 
info@mr-telecomunicaciones.com 
13 
R1(config)# access-list 1 permit 10.1.0.0 0.0.255.255 
R1(config)#interface ethernet 0 
R1(config-if)#ip address 10.1.1.1 255.255.255.0 
R1(config-if)#ip nat inside 
R1(config-if)#exit 
R1(config)#interface serial 0 
R1(config-if)#ip address 192.168.1.1 255.255.255.0 
R1(config-if)#ip nat outside 
R1(config-if)#exit 
R1(config)# ip nat pool nat-pool 179.9.8.80 179.9.8.95 netmask 
255.255.255.0 
R1(config)#ip nat inside source list 1 pool nat-pool 
Configurar PAT OVERLOAD 
R1(config)#ip nat pool [name] [ip address] netmask [subnet-mask] 
R1(config)# ip nat inside source list [acl-number] interface 
type/number overload 
Ejemplo 
R1(config)#interface ethernet 0 
Ing. Gerardo Morales 
https://mr-telecomunicaciones.com 
info@mr-telecomunicaciones.com 
14 
R1(config-if)#ip address 192.168.3.1 255.255.255.0 
R1(config-if)#ip nat inside 
R1(config)#interface ethernet 1 
R1(config-if)#ip address 192.168.2.1 255.255.255.0 
R1(config-if)#ip nat inside 
R1(config)#interface serial 0 
R1(config-if)#ip address 172.16.2.1 255.255.255.0 
R1(config-if)#ip nat outside 
R1(config)# access-list 1 permit 192.168.2.0 0.0.0.255 
R1(config)# access-list 1 permit 192.168.3.0 0.0.0.255 
R1(config)# ip nat pool nat-pool2 179.9.8.20 netmask 
255.255.255.240 
R1(config)# ip nat inside source list 1 interface serial 0 overload 

Clear Commands 
R1#clear ip nat translations 
R1#clear ip nat translation inside global-ip local-ip [outside 
local-ip global-ip] 
R1#clear ip nat translation protocol inside global-ip global
port local-ip local-port [outside local-ip local-port  global-ip 
global-ip global-port] 
Troueblesooting 
R1# show ip nat translations 
R1# show ip nat statistics 
R1# debug ip nat 
```
