Ejemplo de configuración del servicio NAT en Vyatta
En esta entrada exponemos a modo de tutorial o guía la forma de configuración y el funcionamiento del servicio NAT de Vyatta. Para el siguiente ejemplo de configuración NAT en Vyatta nos basamos en ésta topología ejemplo.
El siguiente paso tras la configuración inicial básica es la configuración del servicio NAT en Vyatta, es importante hacerlo antes de configurar el firewall en Vyatta ya que según el flujo de trabajo de Vyatta lo primero que se evalúa para cada flujo de datos es la configuración NAT de destino (DNAT) despues el firewall, el routing y por último la configuración NAT de origen (SNAT). Esto lo podemos ver en este gráfico:
Esta forma de funcionamiento de Vyatta implica que si tenemos alguna regla de NAT de destino (DNAT) configurada tenemos que tenerlo en cuenta para la configuración del firewall ya que cuando llegue el turno de la evaluación del firewall en Vyatta ya habrá tenido lugar la traducción de direcciones DNAT.
Al igual que otros módulos de Vyatta basados en reglas la interpretación de las mismas será de menor a mayor, con lo que si se encuentra una regla que aplique al tipo de tráfico analizado será esta la que se ponga en funcionamiento y las demás ya no serán analizadas. Por eso, la estructura de la configuración debe de ser primero las reglas más concretas y finalmente las más genéricas.
Una buena práctica en este punto es la de dejar huecos que nos permitan una futura reconfiguración, por eso en este ejemplo vamos saltando de 10 en 10 para cada número de regla nueva.
En el ejemplo de partida suponemos que en la interfaz eth2 que tenemos conectada a internet (tanto en openredesR1 como en openredesR2) tenemos la IP pública teniendo configurado el router ADSL en monopuesto o modo bridge, con lo que es nuestra máquina Vyatta la encargada de gestionar tanto el routing como el NAT.
Configuración de NAT en openredesR1:
- La primera regla que vamos a crear es para la salida a Internet de los equipos de la LAN con lo que a todo el tráfico que salga por la interfaz eth2 se le hará una traducción de la dirección IP de origen para que refleje nuestra IP pública que en este caso será 192.0.2.10 (dirección TEST-NET)
Creamos la regla 10 con los siguientes comandos:
vyatta@openredesR1:~$ configure vyatta@openredesR1# set service nat rule 10 outbound-interface eth2 vyatta@openredesR1# set service nat rule 10 type masquerade -
La siguiente regla a crear será para que las peticiones que se hagan desde internet al puerto 80 de nuestra IP pública se traduzcan y se envíen a la IP del servidor web.
Creamos la regla 20 con los siguientes comandos:vyatta@openredesR1# set service nat rule 20 destination port 80 vyatta@openredesR1# set service nat rule 20 inbound-interface eth2 vyatta@openredesR1# set service nat rule 20 inside-address address 192.168.0.225 vyatta@openredesR1# set service nat rule 20 protocol tcp vyatta@openredesR1# set service nat rule 20 type destination -
De la misma forma que en la regla anterior creamos la regla 30 que traducirá las peticiones al puerto 443 (https) de la IP pública a la IP del servidor web.
Creamos la regla 30 con los siguiente comandos:vyatta@openredesR1# set service nat rule 30 destination port 443 vyatta@openredesR1# set service nat rule 30 inbound-interface eth2 vyatta@openredesR1# set service nat rule 30 inside-address address 192.168.0.225 vyatta@openredesR1# set service nat rule 30 protocol tcp vyatta@openredesR1# set service nat rule 30 type destination -
Al igual que pasamos a nuestro servidor web mediante DNAT las peticiones http y https (80 y 443) que recibamos vamos a pasar tambien al servidor de email las peticiones que recibamos a los puertos 25, 110, 465 y 995 (smtp, pop3, ssmtp y pop3s) en la IP pública.
Para lo que creamos las reglas 40, 50, 60 y 70 con los siguientes comandos:vyatta@openredesR1# set service nat rule 40 destination port 25 vyatta@openredesR1# set service nat rule 40 inbound-interface eth2 vyatta@openredesR1# set service nat rule 40 inside-address address 192.168.0.226 vyatta@openredesR1# set service nat rule 40 protocol tcp vyatta@openredesR1# set service nat rule 40 type destination vyatta@openredesR1# set service nat rule 50 destination port 110 vyatta@openredesR1# set service nat rule 50 inbound-interface eth2 vyatta@openredesR1# set service nat rule 50 inside-address address 192.168.0.226 vyatta@openredesR1# set service nat rule 50 protocol tcp vyatta@openredesR1# set service nat rule 50 type destination vyatta@openredesR1# set service nat rule 60 destination port 465 vyatta@openredesR1# set service nat rule 60 inbound-interface eth2 vyatta@openredesR1# set service nat rule 60 inside-address address 192.168.0.226 vyatta@openredesR1# set service nat rule 60 protocol tcp vyatta@openredesR1# set service nat rule 60 type destination vyatta@openredesR1# set service nat rule 70 destination port 995 vyatta@openredesR1# set service nat rule 70 inbound-interface eth2 vyatta@openredesR1# set service nat rule 70 inside-address address 192.168.0.226 vyatta@openredesR1# set service nat rule 70 protocol tcp vyatta@openredesR1# set service nat rule 70 type destination vyatta@openredesR1# commit vyatta@openredesR1# save
Con esto ya tenemos el servicio NAT configurado y funcionando para openredesR1 según las necesidades que reflejadas en la topología ejemplo.
Para ver como ha quedado la configuración:
vyatta@openredesR1# show service nat
rule 10 {
outbound-interface eth2
type masquerade
}
rule 20 {
destination {
port 80
}
inbound-interface eth2
inside-address {
address 192.168.0.225
}
protocol tcp
type destination
}
rule 30 {
destination {
port 443
}
inbound-interface eth2
inside-address {
address 192.168.0.225
}
protocol tcp
type destination
}
rule 40 {
destination {
port 25
}
inbound-interface eth2
inside-address {
address 192.168.0.226
}
protocol tcp
type destination
}
rule 50 {
destination {
port 110
}
inbound-interface eth2
inside-address {
address 192.168.0.226
}
protocol tcp
type destination
}
rule 60 {
destination {
port 465
}
inbound-interface eth2
inside-address {
address 192.168.0.226
}
protocol tcp
type destination
}
rule 70 {
destination {
port 995
}
inbound-interface eth2
inside-address {
address 192.168.0.226
}
protocol tcp
type destination
}
[edit]
Configuramos ahora el servicio de NAT en openredesR2:
En este caso no tenemos ningún servicio al que se pueda acceder públicamente y todas las direcciones privadas son conocidas en la red por lo que únicamente necesitamos una regla que traduzca la IP origen de las peticiones que salgan a internet por la IP pública de nuestra línea ADSL.
Creamos la regla 10 con los siguientes comandos:
vyatta@openredesR2# set service nat rule 10 outbound-interface eth2
vyatta@openredesR2# set service nat rule 10 type masquerade
Para ver como ha quedado la configuración:
vyatta@openredesR2# show service nat
rule 10 {
outbound-interface eth2
type masquerade
}
[edit]
Con estos pasos ya tenemos configurada la parte de NAT en los dos routers que forman parte de nuestra topología ejemplo.
El siguiente paso ahora sería configurar el firewall para gestionar en gran medida la seguridad de nuestra red privada.










