Luego de publicar el articulo sobre pfSense me llegó una consulta sobre cómo crear una redirección de puertos, algo bastante básico pero cuyo procedimiento para crearlo puede diferir bastante entre distintos sistemas. Lo cierto es que realizar este tipo de guías breves me resulta ideal para publicar en el blog, por lo cual los invito a seguir preguntando.
El redireccionamiento de puertos permite que puertos TCP/UDP específicos sean redirigidos desde una red externa, a través de un router con NAT (los que habitualmente usamos en redes LAN para enrutar y salir a internet) a dispositivos ubicados en la red interna. Es particularmente útil para acceder a servicios que se encuentran en la red interna desde una red externa a través
de una dirección IP pública en la cual se podrán publicar múltiples servicios (generalmente uno por puerto).

Crear la regla en pfSense

Antes de crear la regla de redirección es necesario conocer qué puerto utiliza el servicio que queremos redirigir (o “publicar”) y la dirección IP del dispositivo que ejecuta el servicio. Para el ejemplo supondremos que se quiere publicar un servidor web que utiliza el puerto 80 (HTTP) y se encuentra en el servidor con IP 172.29.42.42.

Lo primero es acceder a la interfaz de configuración web de pfSense (webConfigurator) e iniciar sesión. Una vez allí ingresaremos a la pestaña Firewall y la opción NAT. Por defecto nos abrirá las reglas de Port Forward.

Con un clic en el signo “+” que se encuentra en la esquina inferior derecha (o entre las reglas ya creadas si se desea situar la nueva regla allí) abrimos el diálogo para crear una nueva regla.

A continuación la regla de ejemplo:

Regla de firewall en pfSense

Las opciones son las siguientes:

Disabled: Al marcar esta opción la regla se desactiva sin eliminarse.
Interface: Desde dónde se origina el tráfico al que aplicará la regla. Para redireccionar conexiones externas utilizar WAN (escenario común).
Protocol:  La regla aplicará solamente a los paquetes que coincidan con el protocolo seleccionado. Por lo general se usa TCP o UDP para los servicios más comunes.
Source: La regla aplicará solamente a las conexiones originadas en una dirección o red específica. Si no se activa aplicará para cualquier dirección.
Destination: La regla aplicará a los paquetes que se dirigan a este destino, por lo general se utiliza la dirección WAN del router (IP pública).
Destination port range: Puerto o rango de puertos a redireccionar. Se puede elegir un servicio de la lista (HTTP en este caso, puerto 80), escribir manualmente el número de puerto o el rango.
Redirect target IP: Dirección IP a la que se redireccionará el tráfico, usualmente es la IP que posee el dispositivo destino en la red LAN.
Redirect target port: Puerto del dispositivo destino al cual se redirigirá el tráfico (usualmente el mismo que el puerto destino).
Description: Un comentario o descripción sobre la regla creada para referencia.
No XMLRPC Sync: Si esta casilla está marcada y el router pertenece a un clúster, la regla no será replicada en los demás miembros del cluster.
NAT reflection: Esta opción permite acceder a un servicio interno de la red utilizando la dirección IP pública del router/firewall. Por defecto, sólo se podrá acceder al servicio desde la IP interna del servidor y no desde la IP pública del pfSense.
Filter rule association: Esta opción crea automáticamente una regla en el firewall para permitir que el tráfico pase, en caso contrario se creará solamente la regla de redirección pero no se habilitará expresamente las conexiones.

Habiendo configurado las distintas opciones bastará con guardar la regla y ya se estará aplicando. En este caso, todo aquel que acceda por HTTP a la IP pública será redirigido al servidor web que se encuentra en la red interna.