Configuración avanzada de NAT saliente en pfSense para redes IPv4

La configuración avanzada de NAT (Network Address Translation) saliente en pfSense es una característica esencial para gestionar la traducción de direcciones IP en el tráfico que sale de una red privada hacia Internet o redes externas. Esta configuración permite definir reglas específicas para aplicar NAT sobre determinados rangos de IP, protocolos o interfaces, facilitando un control granular y preciso del enrutamiento y la seguridad en entornos complejos.

El principal problema que resuelve esta configuración es la necesidad de modificar o manipular las direcciones IP de origen del tráfico saliente, especialmente cuando se manejan múltiples subredes internas y se requiere que ciertas comunicaciones mantengan una consistencia o sean representadas con una IP pública o específica, asegurando compatibilidad y correcto direccionamiento en redes externas.

Campos principales

  • Disabled: Esta opción permite desactivar la regla sin eliminarla, útil para pruebas o mantenimiento.
  • Do not NAT: Al activarla, el tráfico que coincida con esta regla no será traducido por NAT y no procesará reglas posteriores de NAT saliente, ideal para evitar conflictos o situaciones específicas donde se necesite que el paquete conserve su dirección original.
  • Interface: Interfaz de red por la cual se procesa el tráfico saliente y en la que se aplica la regla. Comúnmente se usa la interfaz WAN para tráfico hacia Internet.
  • Address Family: Define si la regla aplica para IPv4 o IPv6, permitiendo separar y gestionar adecuadamente protocolos diferentes.
  • Protocol: Indica el protocolo de la regla, pudiendo especificar TCP, UDP, ICMP u otros, o seleccionar «any» para que abarque todos los protocolos.
  • Source: Indica el origen del tráfico a traducir. Puede ser una red, dirección única o alias. Aquí se especifica la subred 10.10.10.0/24, es decir, todo el rango de hosts dentro de esa red local.
  • Destination: Define el destino del tráfico a traducir. Puede estar en blanco o configurado para limitar la regla a destinos específicos. En este caso está configurado en «Any», para abarcar todo destino.

Compatibilidad de versiones y modelos

La configuración avanzada de NAT saliente está disponible desde versiones tempranas de pfSense 2.x y se mantiene en las versiones más recientes (2.5.x y 2.7.x hasta la fecha de corte). Esta funcionalidad es compatible con cualquier instalación estándar de pfSense, ya sea en dispositivos físicos, virtualizados o en hardware propietario certificado por el proyecto pfSense.

No existen restricciones relevantes en cuanto a modelo de hardware, ya que la capacidad para manejar reglas Outoobund NAT depende principalmente de la configuración de red y el rendimiento general del firewall. Sin embargo, para instalaciones de alto tráfico se recomienda hardware con procesadores multi-core y buena capacidad de memoria para soportar filtrado avanzado y NAT.

Escenarios de uso y recomendaciones

Este tipo de configuración es especialmente útil en escenarios donde una empresa o red dispone de varias subredes internas (como el segmento 10.10.10.0/24) que deben compartir una o varias direcciones públicas utilizando NAT para salir a Internet a través de la interfaz WAN. Permite que sólo el tráfico originado en esa subred pase por la regla definida.

También es recomendable cuando se requiere evitar NAT para ciertos destinos específicos, o cuando se maneja un entorno con múltiples ISP y se desean reglas específicas para cada interfaz de salida. En general, una configuración mal aplicada puede generar problemas de conectividad o de seguridad al exponer direcciones internas o segmentar incorrectamente el tráfico.

Comandos de CLI útiles para diagnóstico

  • pfctl -sr: muestra las reglas de filtrado activas, útil para verificar que la regla NAT está siendo considerada correctamente.
  • pfctl -sn: muestra las reglas de NAT activas en el sistema, permitiendo revisar configuraciones de outbound NAT específicas.
  • tcpdump -i host 10.10.10.0/24: captura tráfico desde o hacia la subred especificada para validar el paso y traducción de paquetes.
  • cat /cf/conf/config.xml | grep nat: permite revisar la configuración de NAT directamente desde el archivo XML principal de pfSense.
  • pfctl -vnf /tmp/rules.debug: para probar configuraciones de reglas antes de aplicarlas definitivamente, útil para evitar interrupciones.

Buenas prácticas de configuración

  • Usar la opción «Disabled» para desactivar reglas temporalmente sin borrarlas, facilitando pruebas y diagnósticos.
  • Documentar cada regla de NAT con comentarios internos que expliquen su propósito y el alcance para facilitar mantenimiento.
  • Evitar reglas NAT demasiado generales que puedan traducir todo el tráfico sin diferenciación, para reducir impacto en seguridad y rendimiento.
  • Hacer uso de alias para definir redes, hosts o grupos de IP y así facilitar la gestión y actualización de reglas.
  • Verificar los logs y emplear filtros de captura para monitorear la efectividad y posibles anomalías en la traducción de direcciones.
  • Mantener actualizado pfSense para aprovechar mejoras de seguridad, rendimiento y compatibilidad de configuraciones NAT.