Configuración de Hairpin NAT (VIP)

 Thank to: https://fortixpert.blogspot.com/

Este artículo describe cómo configurar FortiGate para Hairpin con el uso de set match-vip y match-vip-only.


En este escenario, tanto el PC como el Servidor están detrás de FortiGate y el PC quiere conectarse al Servidor apuntando a su dirección externa (92.0.2.10) en lugar de la real (10.10.10.10).

Esto se llama Hairpin NAT.

Solución:

La solución dependerá de cómo sea el objeto IP Virtual (VIP).

Solución 1: La interfaz externa en el VIP está configurada a una interfaz particular (en este caso a wan1)

#config firewall vip
    edit "VIP"
        set extip 92.0.2.10
        set extintf 'wan1'
        set mappedip 10.10.10.10
    next
end

Nota: En este escenario, la IP externa VIP puede ser la misma que la IP de la interfaz (es decir, 92.0.2.2)

Se necesitan dos políticas:

1) Una política de entrada con el objeto VIP como dirección de destino y dmz como interfaz de salida (el servidor de interfaz está detrás). Esta sería la típica política necesaria para hacer que un dispositivo sea accesible desde Internet.

2) Una política saliente que tenga como interfaz saliente la misma definida como interfaz externa en el objeto VIP. En este caso sería wan1.

#config firewall policy
    edit 1
        set srcintf "wan1"
        set dstintf "dmz"
        set srcaddr "all"
        set dstaddr "VIP"             <----- objeto VIP.
        set action accept
        set schedule "always"
        set service "ALL"
    next
    edit 2
        set srcintf "internal"
        set dstintf "wan1"            <----- Igual que la interfaz externa definida en VIP.
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set nat enable
    next
end

Solución 2: La interfaz externa del objeto VIP está configurada como "any".

#config firewall vip
    edit "VIP"
        set extip 92.0.2.10
        set extintf 'any'
        set mappedip 10.10.10.10
    next
end

En este escenario, una política desde la red interna directamente a la DMZ es suficiente:

#config firewall policy
    edit 3
        set srcintf "internal"
        set dstintf "dmz"
        set srcaddr "all"
        set dstaddr "VIP"             <----- objeto VIP.
        set action accept
        set schedule "always"
        set service "ALL"
    next
end

Otra posibilidad es crear la misma política que la anterior pero con 'match-vip' habilitado y 'all' como dirección de destino en su lugar:

Nota: En FortiOS v6.4.3 y superiores, 'set match-vip enable' sólo está disponible dentro de la política del firewall cuando la ACCIÓN de la política está configurada como DENY, por lo que no se puede utilizar esta posibilidad.

#config firewall policy
    edit 4
        set srcintf "internal"
        set dstintf "dmz"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set match-vip enable
    next

end

Nota: Para que esta configuración funcione, debe estar activa otra política con el VIP como dirección de destino o se debe utilizar Central NAT. 

Comentarios

Entradas populares de este blog

Guía de herramientas básicas para estudiantes: 31 apps y webs imprescindibles para ayudarte con los estudios

Comando FOR para archivos BAT

How to Setup and Configure Your Own GitLab Server on Ubuntu 20.04