Configurar NAT dinámico (Dynamic NAT o DNAT) usando VIP (Virtual IP) en un cortafuegos Fortigate. Ejemplo de uso y consulta de traslación de direcciones desde línea de comandos CLI. Como ejemplo, también crearemos un DNAT usando IPPools.
- VIP y topología de red del estudio de caso.
- Configurar DNAT usando VIP.
- Configurar DNAT usando un pool de direcciones IP (IP Pool).
VIP y topología de red del estudio de caso
Los VIP generalmente se utilizan para traducir direcciones IP externas o públicas a direcciones IP internas o privadas. En este ejemplo, configuraremos un VIP para el equipo 10.0.1.10 de la LAN, que tiene un servicior web Apache activo. Luego, crearemos una política de firewall de salida a entrada y aplicaremos el VIP. Esto permitirá que las conexiones a Internet desde un equipo remoto lleguen al equipo 10.0.1.10.
Para el DNAT en Fortigate, utilizaremos un VIP en el campo de dirección de destino de una política de firewall. Configuraremos el VIP para mapear las conexiones del equipo local LAN (10.0.1.10) a la 10.200.1.200 (IP virtual generada en el Fortigate que «apunta» a la IP del equipo local 10.0.1.10), que forma parte de la subred del port1, tal y como se puede ver en la topología.
En dicha arquitectura de red de ejemplo existe un equipo local mencionado anteriormente y un equipo remoto (10.0.2.10). Un dispositivo intermedio actúa de enrutador entre los dos cortafuegos FortiGate (local y remoto) y enruta el tráfico desde el FortiGate Remoto al FortiGate Local.

Configurar DNAT usando VIP
Conectaremos a la consola de gestión del cortafuegos. Pularemos en Policy & Objects – Virtual IPs, crearemos una nueva VIP pulsando en «Create new»:

Estableceremos los siguiente valores:
- Name: VIP_Interna.
- Interface: port1. Este puerto está conectado a Internet mediante la IP 10.200.1.1/24.
- External IP address/range: 10.200.1.200. Esta dirección IP está en el mismo rango que la subred del port1.
- MaptoIPv4address/range: 10.0.1.10.

Crearemos una política de cortafuegos para utilizar la VIP VIP_Interna como dirección de destino. Desde Policy & Objects – Firewall Policy, pulsaremos en «Create new»:

Estableceremos los siguientes valores:
- Name: Acceso_Servidor_Web.
- Incoming Interface: port1.
- Outgoing Interface: port3.
- Source: all.
- Destination: VIP_Interna.
- Service: HTTP,HTTPS.
- Deshabilitamos el NAT en Firewall/Nework Options.
- Marcamos «All Sessions» en Logging Options.

Lo habitual será establecerle los perfiles de seguridad (antivirus, DNS filter, IPS, SSL Inspection, etc.):

Tras configurar la política de firewall con el VIP como destino, podremos probarlo accediendo a él desde un equipo remoto, en la topología de red de este ejemplo, el equipo remoto es el 10.0.2.10. En dicha topología, un equipo intermedio actúa de enrutador entre dos dispositivos FortiGate (local y remoto) y enruta el tráfico desde el FortiGate Remoto al FortiGate Local. Por lo tanto, para probar el VIP, desde la máquina remota 10.0.2.10, abriremos un navegador y accederemos a la URL: http://10.200.1.200, si el VIP está correctamente configurado, se mostrará la página del servidor web 10.200.1.200 (que en realidad la sirve el equipo local 10.0.1.10):

Si en el equipo local detenemos el servicio apache:

Fallará el acceso en el equipo remoto:

Para consultar la sesiones de NAT por línea de comandos, desde el CLI de Fortigate, ejecutaremos el comando:
get system session list
Nos devolverá:

Además, con el VIP configurado (que es un NAT estático), FortiGate utiliza la dirección externa del VIP como la dirección IP de NAT al realizar SNAT, para el tráfico interna hacia el externo, siempre que la política de firewall de tráfico de salida coincidente tenga el NAT habilitado. Es decir, FortiGate no utiliza la dirección de la interfaz de salida. Para verificar esto, eliminaremos los datos de sesión, ejecutando:
diagnose sys session clear
Desde el equipo local 10.0.1.10 abriremos un navegador y accederemos a varias webs, para generar tráfico hacia Internet. Una vez generado este tráfico, desde el CLI de Fortigate, volveremos a ejecutar el comando:
get system session list
Podemos observar que la dirección de SNAT (Source-NAT) es la 10.200.1.200 para el equipo 10.0.1.10, dado que las conexiones salientes desde el equipo local, gracias al VIP, se traducen con la dirección VIP 10.200.1.200, en lugar de la dirección IP de la interfaz de salida del firewall (10.200.1.1). Este es un comportamiento de SNAT al usar un VIP de NAT estático. Es decir, cuando se habilita el NAT en una política, la dirección externa de un VIP de NAT estático tiene prioridad sobre la dirección IP de la interfaz de destino, siempre que la dirección de origen de las conexiones coincide con la dirección interna del VIP.

Configurar DNAT usando un pool de direcciones IP (IP Pool)
Los grupos de direcciones IP (IP Pools) se utilizan para traducir la dirección de origen a una dirección de ese grupo, en lugar de la dirección de la interfaz de salida. En el caso anterior, el cortafuegos local traduce la dirección IP de origen de todo el tráfico generado desde el equipo local a la 10.200.1.200, porque es la dirección interna del VIP, que coincide con la dirección de del equipo local, y el VIP es un VIP NAT estático. En este otro caso, crearemos un grupo de direcciones IP, para aplicarlo a la política de firewall de entrada a salida y verificaremos la dirección SNAT, para comprobar que usa una de las del pool.
Desde Policy & Objects – IP Pools, craremos un nuevo IP Pools, con los siguientes datos:

Aplicaremos el grupo de direcciones IP para cambiar el comportamiento del NAT estático a NAT dinámico en la política de firewall general de entrada a salida. Para ello, editaremos la política «Acceso_TODO» ya existente:

Y estableceremos los siguientes valores:
- Outgoing Interface: dejaremos la que tengamos, en este caso port1.
- Source: dejaremos el que tengamos, en este caso all.
- Destination: dejaremos el que tengamos, en este caso all.
- Service: dejaremos el que tengamos, en este caso ALL.
- Y solo modificaremos en la sección «Firewall/Network Options», habilitaremos NAT y marcaremos «Use Dynamic IP Pool». Añadiremos el IP Pool creado anteriormente «IPPool_Interno_Externo».

Para comprobar el DNAT con IP Pool, abriremos una consola CLI en el Fortigate y ejecutaremos los siguientes comandos:
diagnose sys session filter clear
diagnose sys session filter src 10.0.1.10
diagnose sys session clear
Abriremos el navegador web en el equipo local y navegaremos a varias páginas web para generar tráfico. Volveremos al CLI de Fortigate y ejecutaremos el siguiente comando para ver la lista de sesiones:
get system session list
Podremos observar que nos hace la traslación a una dirección SNAT del IPPool (en este caso a la 10.200.1.71):

Teniendo en cuenta que la dirección SNAT ahora es 10.200.1.71, como se configuró en el grupo de IP (IP Pool), y el IP Pool ha anulado el VIP de NAT estático.