# Visualización y Gestión de NAT en iptables

- Link: https://binariocero.com/linux/visualizacion-y-gestion-de-nat-en-iptables
- Published: 2026-01-29T11:20:31+01:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

En sistemas Linux, **iptables** es la herramienta fundamental para la gestión de
reglas de firewall y NAT (Network Address Translation). Este artículo explica cómo
listar y comprender las reglas NAT configuradas en iptables, distinguiendo entre**
DNAT** y **SNAT**, y cómo interpretar la salida de los comandos.

## Tabla NAT en iptables

iptables organiza sus reglas en **tablas**, siendo las principales:

 * **filter**: tabla por defecto, controla el filtrado de paquetes (ACCEPT, DROP,
   REJECT).
 * **nat**: tabla dedicada a la traducción de direcciones de red (NAT).

La tabla **nat** se aplica a los paquetes **en el momento de entrada, salida o redirección**,
y consta de tres cadenas principales:

| Cadena | Función principal | 
| **PREROUTING** | Se aplica a los paquetes **antes de que se decida la ruta**. Aquí se configuran reglas **DNAT** (Destination NAT). | 
| **POSTROUTING** | Se aplica a los paquetes **después de que se decida la ruta**. Aquí se configuran reglas **SNAT** o **MASQUERADE**. | 
| **OUTPUT** | Se aplica a los paquetes **generados localmente** antes de salir. |

## Listado de reglas NAT

Para listar las reglas NAT de forma detallada, se utiliza el siguiente comando:

    ```wp-block-code
    sudo iptables -t nat -L -n -v
    ```

### Explicación de los parámetros:

 * `-t nat` → selecciona la tabla NAT.
 * `-L` → lista las reglas.
 * `-n` → muestra IPs y puertos en formato numérico, sin resolver nombres.
 * `-v` → muestra información detallada, incluyendo contadores de paquetes y bytes.

#### Ejemplo de salida:

    ```wp-block-code
    Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            1.2.3.4            tcp dpt:80 to:192.168.1.100:80

    Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 MASQUERADE  all  --  *      eth0    192.168.1.0/24      0.0.0.0/0
    ```

**Interpretación:**

 * La regla de **PREROUTING** indica que todo el tráfico TCP entrante por el puerto
   80 en `eth0` se redirige a la IP interna `192.168.1.100:80` (**DNAT**).
 * La regla de **POSTROUTING** aplica **MASQUERADE** a todo el tráfico que sale 
   por `eth0` desde la red interna `192.168.1.0/24`, cambiando la IP de origen (**
   SNAT** dinámico).

## Listado en formato de comandos

Para obtener las reglas NAT en **formato de línea de comandos**, útil para replicarlas
o exportarlas:

    ```wp-block-code
    sudo iptables -t nat -S
    ```

#### Ejemplo de salida:

    ```wp-block-code
    -P PREROUTING ACCEPT
    -P POSTROUTING ACCEPT
    -P OUTPUT ACCEPT
    -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
    -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
    ```

Este formato muestra cómo se configuraron las reglas y puede ser usado directamente
para recrearlas en otro sistema.

## Resumen práctico

 1. Las reglas NAT se gestionan en la **tabla `nat`**, no en la tabla por defecto (`
    filter`).
 2. **DNAT** se aplica en la cadena **PREROUTING** para redirección de paquetes entrantes.
 3. **SNAT/MASQUERADE** se aplica en la cadena **POSTROUTING** para modificar la IP
    de salida.
 4. Para inspeccionar reglas se usan los comandos:
 5.  * Detalladas: `sudo iptables -t nat -L -n -v`
     * Sintaxis de comandos: `sudo iptables -t nat -S`

El conocimiento de estas reglas es esencial para **administradores de redes y sistemas**,
especialmente en escenarios de NAT en servidores de borde, routers Linux, o entornos
de contenedores.
