lunes, 27 de mayo de 2013

Configuración de direccionamiento y enrutamiento

Hay varias maneras de configurar un interfaz en Linux (vamos a ver distribuciones basadas en Debian). Una de ellas sería modificar el fichero /et/network/interfaces y levantando y tirando cada interfaz con los comandos ifdown e ifup. Otra podría ser directamente con el comando ifconfig. Y la última sería utilizando el conjunto de comandos proporcionados por el paquete iproute2. Una de las ventajas de utilizar este paquete es que también nos permite realizar enrutamiento con los comandos que proporciona. Aunque se pueden ejecutar los comandos ip addr help y man ip para conocer las opciones con más detalle, vamos a verlo:

Direccionamiento
  • ip addr flush dev eth0: elimina las direcciones IP de la interfaz eth0.
  • ip addr del 192.168.1.100/24 dev eth0: elimina las direcciones IP de la interfaz eth0. 
  • ip addr add 192.168.1.100/24 dev eth0: asigna la dirección IP 192.168.1.100 con la máscara de red 255.255.255.0 en la interfaz eth0.
  • ip addr: visualiza el direccionamiento de todas las interfaces de nuestro equipo.
Activación/Desactivación
  • ip link set dev eth0 up: activa/levanta el interfaz eth0.
  • ip link set dev eth0 down: desactiva/tira el interfaz eth0. 
Enrutamiento
  • ip route add 192.168.1.0/24 via 192.168.2.1 dev eth0: añade la ruta a la red 192.168.1.0/24, enviándolo por el router con la IP 192.168.2.1 y por el interfaz del equipo eth0.
  • ip route add default via 192.168.2.1 dev eth0: añade la ruta por defecto (0.0.0.0), enviándolo por el router con la IP 192.168.2.1 y por el interfaz del equipo eth0.
  • ip route: visualiza la tabla de rutas del equipo.

lunes, 15 de abril de 2013

NAT con IPTABLES (II) - Implementación

Vamos a ver su implementación en Ubuntu Server. Lo primero que tenemos que hacer es activar el enrutamiento:
  • nano /proc/sys/net/ipv4/ip_forward
Y modificamos el valor del parámetro a 1. O también lo podemos hacer directamente:
  • echo "1" > /proc/sys/net/ipv4/ip_forward
Si no queremos realizar esta operación cada vez que se arranque el equipo deberemos incluir la siguiente línea en el fichero /et/network/options:
  • ip_forward=yes
Para ver las reglas que están en vigor:
  • Iptables -t nat -L
  • -t: indica la tabla (nat, filter,...)
  • -L: Listar.

Si queremos borrar todas las reglas de la tabla:
  • Iptables -t nat -F
  • -F: indica flush, borrar.

Para establecer las políticas por defecto:
  • Iptables -t nat -P PREROUTING ACCEPT
  • Iptables -t nat -P OUTPUT ACCEPT
  • Iptables -t nat -P POSTROUTING ACCEPT


Hacer un NAT POSTROUTING:
  • Iptables -t nat -A POSTROUTING -s <red_interna>/<máscara> -o <interfaz> -j SNAT -to-source <ip_externa>
  • -A: agrega, -D elimina.
  • -s: red origen, por ejemplo 192.168.1.0/24
  • -o: interfaz por donde entran los paquetes, por ejemplo eth1.
  • -j: tipo de enmascaramiento, SNAT, MASQUERADE,...
  • -to-source: Ip de la interfaz de salida del encaminador 10.0.52.100. En el caso de hacer MASQUERADE esta opción no sería necesaria.

NAT con IPTABLES - Introducción

Cuando un equipo recibe un paquete el destino puede ser el propio equipo (será enviado a los protocolos superiores) o puede ser otro equipo. Es en este caso cuando decimos que está funcionando como un encaminador o Forwarder. Por eso, si queremos comunicar una red privada con una red pública, los clientes de la red privada envían paquetes con la dirección de origen perteneciente a la red privada así que, cuando vienen de vuelta, o hacemos NAT o no podrían recibir las respuestas. Así que vamos a ver como configurar un equipo para que realice NAT (Network Address Translation).

Cuando hacemos NAT tenemos:
  • SNAT: cambiar la dirección IP:puerto de origen.
  • DNAT: cambiar la dirección IP:puerto de destino.
También tenemos varios tipos de enmascaramiento:

  • SNAT: cuando un cliente de la red privada solicita información externa - de la red pública -. El encaminador, cuando recibe el paquete, cambia la IP y el puerto de origen con su IP externa y un puerto no usado. Almacena en una tabla - de traducciones - el valor de la IP y el puerto original frente al valor de la IP y el puerto de salida, es decir, una vez modificados. Cuando reciba la respuesta restaurará los valores originales (UN-NAT automático) antes de proceder a su envío.
  • DNAT: se usa normalmente cuando se requiere un servicio de la red privada, por ejemplo: un servidor WEB. El encaminador cambia la IP y el puerto de destino y no existirán UN-DNAT, ya que ese paquete no tendrá retorno.
  • MASQUERADE: es idéntico al SNAT, la diferencia redica en que en las reglas de SNAT debes especificar cual es la IP (y puertos) a la que la debe traducir mientras que MASQUERADE averigua cual es la IP de tu interfaz de salida de modo automático. Esto es más cómodo pero menos eficiente, ya que se incrementa el tiempo de proceso. Es recomendable utilizar MASQUERADE si la IP de salida es dinámica.

miércoles, 20 de marzo de 2013

VLANs en Packet Tracer


Hay varias maneras de crear VLANs en el simulador Packet Tracer
  1. VLANs en modo gráfico: hacemos clic en el switch -> config y luego en la pestiñita de base de datos. Desde ahí podemos crear una nueva VLAN.
  2. VLANs desde la consola: hacemos clic en el switch -> CLI y tenemos que escribir los siguientes comandos: 
    • enable
    • configure terminal
    • vlan <numero_de_vlan>
    • name <nombre_de_vlan>
    • exit
De todos modos, cuando creamos una en modo gráfico podemos obtener los comandos de la consola que va generando él automáticamente.

Comandos FTP

A raíz de dar el módulo de Servicios en Red del Ciclo Formativo de Grado Medio SMR (Sistemas Microinformáticos y Redes) y de una serie de prácticas que les mandé realizar a mis alumnos me di cuenta de que existe infinidad de documentación en Internet sobre comandos FTP pero casi toda, o la gran mayoría peca de lo mismo:

  • Hay mucha información de los comandos básicos como put, get, open, bye,... de los que casi no hace falta comentar nada pero, cuando quieres más información o más ejemplos sobre comandos como macdef, proxy,... te encuentras con que o bien es demasiado ambigua y no dice nada, o bien no existen, o bien es demasiado teórica,...
Así que, aprovechando que un alumno tenía sólo esa parte suspensa y para no mandarlo al examen de recuperación le mandé hacer un trabajo de investigación más en profundidad sobre los mismos. El resultado es este blog que, para más inri, tiene el valor añadido de estar en galego.

Filtros en Wireshark

Wireshark es un scanner o un sniffer de red muy interesante. Muy sencillo de instalar y de utilizar y enormemente potente. Ahora no me voy a meter en profundidad en hablar de él, simplemente me centraré en uno de los problemas que tiene, sobre todo al principio: la cantidad de tráfico que se genera en una red y la cantidad por tanto de información que se nos muestra por pantalla. Así que se hace más que necesario utilizar filtros para poder visualizar con claridad aquello que queremos buscar.

Voy a ir añadiendo diferentes filtros de interés para usar con Wireshark:. Los filtros se suelen introducir en el campo de texto Filter que aparece una vez iniciamos una captura de tráfico por alguno de los interfaces de red de nuestra máquina.


  • Filtrar por IP (tanto de origen como de destino):
    • ip.addr == <IP_que_queremos_filtrar>

  • Filtrar por protocolo DHCP: