VPSs y mas.

domingo, 2 de septiembre de 2012

Linux iptables, solucion al error: Warning: wierd character in interface

Introducción:
  En Linux cuando intentamos realizar un NAT con alguna interfaz que posea el caracter ":" recibimos el error:  Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *).
  Por ejemplo en el siguiente escenario:

   #iptables -t nat -A POSTROUTING -o venet0:0 -j MASQUERADE  
   Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *).

Explicación:
  Luego de una investigación en muchas páginas en Internet llegué a la conclusión que no es posible realizar el NAT con una "subinterfaz" (interfaz secundaria, IP secundario, etc) con Linux que posea ":" , durante mi busqueda conseguí que es un problema del manejo de los ARP en dicha interfaz, sin embargo no hay que preocuparse, existe una alternativa y es la que voy a plantear en este post. 

Solución:
  La solución es bastante sencilla y al menos funciona en todos los escenarios donde la dirección IP con la que deseamos natear es estática. La misma se conoce como SNAT (Source NAT) y se utiliza como IP saliente el IP secundario de la interfaza utilizar (ej. eth0:0). La diferencia principal es que hay que indicar cual es la red a la cual deseamos hacer NAT, esto no debe ser ningún inconveniente porque seguramente sabremos esta información.
  En definitiva la solución es realizar el NAT con el IP "saliente" en vez de la interfaz saliente e indicando la red a la cual deseamos realizar el NAT.

Comandos:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -A POSTROUTING -t nat -s 192.168.56.0/24 -j SNAT --to 123.4.5.6

  Con  lo anterior estaremos nateando la red 192.168.56.0/24 con la dirección IP 123.4.5.6, es decir, cualquier equipo con dirección IP fuente en el rango 192.168.56.0/24 se verá en Internet con 123.4.5.6. En ningún momento hace referencia a "eth0:0"

Espero les sea útil,

Saludos,

No hay comentarios:

Publicar un comentario

¿Algo adicional que quieras mencionar? ¿Algun consejo?, ¿truco? Gracias!