La capa de red

Para este tema emplearemos material de CCNA.

ARP e ICMP

ARP es un protocolo imprescindible para que la red pueda funcionar correctamente. Del mismo modo, ICMP es un protocolo cuyas funciones son de gran utilidad para el administrador de red. Vamos a conocer su estructura:

El paquete ICMP

El paquete ARP

Actividad 2. Abre el siguiente documento, y realiza los pasos indicados: actividad con PacketTracer.

Actividad 3. Abre el siguiente documento y realiza la actividad sobre ARP e ICMP: Actividad sobre ICMP y ARP

Actividad 4. Observa las siguientes direcciones IP:

  • 192.168.5.32/22
  • 10.0.9.15/21
  • 172.17.12.3/255.240.0.0
  • 80.158.32.33/255.192.0.0
  • 217.33.55.32/12

Calcula para cada una de estas direcciones IP lo siguiente:

  1. Dirección de red.
  2. Dirección broadcast.
  3. Primera dirección asignable.
  4. Última dirección asignable.

Entrega la actividad en un documento de texto llamado Act4-red.txt

Actividad 5. Segmenta las siguientes redes en 2, 4 y 8 subredes. Indica para cada una de las subredes los siguientes datos:

  • Dirección de red, en formato CIDR.
  • Número de hosts.

Las redes a segmentar son las siguientes.

  1. 192.168.0.0/24
  2. 192.168.8.0/21

Entrega esta actividad en un archivo de texto llamado Act5-red.txt.

Actividad 6. Indica cuáles de las siguientes direcciones son direcciones IP asignables, cuáles son direcciones broadcast, y cuales son direcciones de red:

  • 192.168.8.0/20
  • 172.34.15.191/26
  • 8.8.4.4/30
  • 15.10.53.63/26
  • 10.0.0.64/25

Entrega la actividad en un archivo de texto llamado Act6-red.txt.

Actividad 7. Abre el siguiente documento, y realiza las actividades de enrutamiento con PacketTracer: actividad con PacketTracer.

Actividad 8. Sumariza los siguientes bloques de IP, para obtener una dirección de red resumen, utilizando el mayor bloque de IPs que puedas:

Caso 1:

  • 192.168.0.0/24
  • 192.168.1.0/24
  • 192.168.2.0/24
  • 192.168.3.0/24

Caso 2:

  • 172.16.0.0/25
  • 172.16.0.128/25
  • 172.16.1.0/24

Caso 3:

  • 10.15.10.0/24
  • 10.15.8.0/24
  • 10.15.9.0/24
  • 10.15.11.0/24
  • 10.15.0.0/22

Entrega esta actividad en un archivo de texto llamado Act8-red.txt.

Actividad 9. Observa la siguiente figura.

Deberás instalar tres máquinas virtuales. Estas máquinas serán las que aparecen en la figura, es decir:

  • Máquina 1 (router): Ubuntu server con dos interfaces de red
    1. eth0 -> conectada a la red del aula, y direccionamiento asignado por DCHP.
    2. eth1 -> conectada a una red interna, llamada PARNET, con direccionamiento estático
  • Máquina 2: Windows 7 con una interfaz de red conectada a la red interna PARNET, con direccionamiento estático.
  • Máquina 3: Ubuntu server con una interfaz de red conectada a la red interna PARNET, con direccionamiento estático. Debe tener instalado un servidor Apache

Los detalles del direccionamiento se aclarará en clase.

Comprueba que desde el navegador web de la máquina Windows 7 dentro de tu red PARNET puede abrir el servidor.

Indicaciones para el siguiente ejercicio.

Ubuntu Server cuenta con un archivo para definir las direcciones de las interfaces de red. En concreto, este archivo está ubicado en /etc/network/interfaces. El siguiente archivo, es un ejemplo de configuración para una interfaz ethernet configurada estáticamente:

auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.100.5 netmask 255.255.255.0 gateway 192.168.100.1

Para reiniciar los servicios de red, podemos ejecutar alguno de los siguientes comandos:

# sudo /etc/init.d/networking restart o bien # service networking restart

Para añadir una nueva ruta a un router GNU/Linux a una cierta red, puedes utilizar el siguiente comando:

# route add -net a.b.c.d/mask gw e.f.g.h

Donde:

  • a.b.c.d es la dirección de la red.
  • mask es la máscara de la red.
  • e.f.g.h es la dirección del gateway.


El comando route add -net a.b.c.d/mask gw e.f.g.h es no persistente. Es decir, una vez apagado el sistema se borrará. Si se desea crear una ruta persistente, es decir, que se mantenga tras un reinicio del sistema, se puede hacer de dos maneras:

Opción 1

Recientemente he podido comprobar que este método no funciona en las versiones más nuevas de Ubuntu Server. El método consiste en añadir la siguiente cadena el el archivo /etc/network/interfaces:

up route add -net a.b.c.d/mask gw e.f.g.h

Opción 2

La siguiente requiere los siguientes pasos:

  1. Acceder al directorio /etc/network/if-up.d/.
  2. Crear en su interior un archivo llamado script, que contenga el siguiente contenido:
  3. #!/bin/bash [ "$IFACE" != "ethx" ] || exit 0 route add -net a.b.c.d/mask gw e.f.g.h dev ethx

    Nótese que ethx es el nombre de la interfaz a la que afecta la ruta, por lo que es preciso comprobar el nombre de la interfaz.

  4. Asignar permisos de ejecución al archivo script, mediante el comando chmod 755 script.
  5. Reiniciar para comprobar que la ruta se ha añadido.

Para que una máquina GNU/Linux se comporte como un router, y no simplemente como un ordenador con dos interfaces de red es preciso indicarle que haga ip forwarding. Para ello, es preciso ejecutar el siguiente comando:

# echo 1 > /proc/sys/net/ipv4/ip_forward

El bit de forwarding, indicado de este modo, no es persistente. Si se desea que el sistema mantenga esta característica (ip forwarding), es preciso acceder al archivo /etc/sysctl.conf, y modificar el valor de la cadena net.ipv4.ip_forward para que quede del siguiente modo:

net.ipv4.ip_forward=1

Actividad 9. Habla con un compañero de clase que ya haya configurado sus tres máquinas virtuales, de modo que te indique cuál es la dirección de red de su red interna. Añade al router las rutas necesarias para llegar a su subred. Del mismo modo, tu compañero deberá añadir a su router las rutas necesarias para alcanzar tu subred. Una vez que hayas introducido las rutas necesarias, comprueba que tu cliente Windows 7 puede acceder al servidor Apache instalado en el servidor Ubuntu de la red interna de tu compañero.

Deberás demostrar que tu compañero puede acceder a tu servidor web desde su propia red PARNET. Para ello, muestra al profesor la configuración del router, así como el archivo .html que se va visualizar. Finalmente, tu compañero deberá abrir desde su cliente Windows 7 en su propia red PARNET la página web de tu servidor Apache.

IPv6

A continuación puedes ver una comparación entre cabecera de IPv4 e IPv6 (epígrafe sacado de www.ramonmillan.com).

  • Versión (4 bits). Es el número de versión de IP, es decir, 4.
  • Cabecera(4 bits). Especifica la longitud total de la cabecera en palabras de 32 bits. El valor mínimo y más común es de 5, siendo la longitud de cabecera mínima. Puesto que el campo es de 4 bits, se limita la longitud total de la cabecera a 60 bytes.
  • Tipo de servicio (8 bits). Indica la calidad de servicio solicitada por el paquete IP. De los 8 bits, actualmente sólo se utilizan 3, indicando cada uno de ellos: conseguir el retardo mínimo (bit 3), maximizar caudal (bit 4) y maximizar la fiabilidad (bit 5). Sólo uno de estos cuatro bits puede estar a 1. Su uso viene descrito en la RFC 1340 y RFC 1349.
  • Longitud total (16 bits). Especifica el tamaño total del paquete, incluyendo la cabecera y los datos, en bytes.
  • Identificador (16 bits). Es un número único asignado por el dispositivo que envía el paquete, con el fin de que el destinatario pueda reensamblar un paquete fragmentado por los nodos intermedios. La fragmentación es necesaria porque no todas las redes físicas tienen la misma longitud de trama máxima (MTU), por lo cual en muchos casos es necesario que los nodos intermedios dividan el datagrama en varios fragmentos. Cada uno de estos fragmentos podrá seguir rutas distintas al resto y, de perderse alguno de los fragmentos, el origen deberá retransmitir el paquete completo.
  • Banderas (3 bits). Es un campo para el control de la fragmentación. El primer bit no es utilizado y está siempre puesto a 0. Si el segundo bit es 0, significa que puede haber fragmentación, y si es 1, significa que no puede haber fragmentación. Si el tercer bit es 0, indica que es el último fragmento, y si es 1, indica que aún hay más fragmentos
  • Desplazamiento del fragmento (13 bits). Es utilizado en los paquetes que han sido fragmentados, para posibilitar el reensamblado total del paquete. Su valor indica el número de bloques de 8 bytes (sin contabilizar los bytes de la cabecera) que estaban contenidos en los fragmentos previos. En el primer fragmento, o en un único fragmento, este valor es siempre 0.
  • Para saber más sobre fragmentación en IPv4, visita el artículo sobre MTU y fragmentación

  • Tiempo de vida (8 bits). Contiene el tiempo máximo que un paquete puede permanecer en una red. Cada dispositivo por el que pasa el paquete decrementa el valor de este campo en el tiempo que tarda en procesar la cabecera IP, siendo 1 el valor mínimo. Si el valor llega a 0, el paquete es descartado. Esto garantiza que los paquetes no viajan a través de una red haciendo bucles, incluso si las tablas de encaminamiento son erróneas.
  • Protocolo (8 bits). Indica al protocolo de nivel superior al que IP deberá pasar los datos del paquete. Por ejemplo, UDP es 17 y TCP es 6.
  • Control de errores de la cabecera (16 bits). Es un campo para controlar los errores únicamente en la cabecera IP, exceptuando este campo.
  • Dirección origen (32 bits). Es la dirección del origen del paquete.
  • Dirección destino (32 bits). Es la dirección del destino del paquete.
  • Opciones (variable). No son requeridas en todos los paquetes.
  • Versión (4 bits). Es el número de versión de IP, es decir, 6.
  • Clase de tráfico (8 bits). El valor de este campo especifica la clase de tráfico. Los valores de 0-7 están definidos para tráfico de datos con control de la congestión, y de 8-15 para tráfico de vídeo y audio sin control de la congestión.
  • Etiqueta del flujo (20 bits). El estándar IPv6 define un flujo como una secuencia de paquetes enviados desde un origen específico a un destino específico. Un flujo se identifica únicamente por la combinación de una dirección fuente y una etiqueta de 20 bits. De este modo, la fuente asigna la misma etiqueta a todos los paquetes que forman parte del mismo flujo. La utilización de esta etiqueta, que identifica una camino a lo largo de la red, posibilita encaminar conmutar en vez de encaminar. Su uso viene descrito en la RFC 1809.
  • Longitud del paquete (16 bits). Especifica el tamaño total del paquete, incluyendo la cabecera y los datos, en bytes. Es necesario porque también hay campos opcionales en la cabecera.
  • Siguiente cabecera (8 bits). Indica el tipo de cabecera que sigue a la cabecera fija de IPv6, por ejemplo, una cabecera TCP/UDP, ICMPv6 o una cabecera IPv6 opcional.
  • Límite de saltos (8 bits). Es el número de saltos máximo que le quedan al paquete. El límite de saltos es establecido a un valor máximo por el origen y decrementado en 1 cada vez que un nodo encamina el paquete. Si el límite de saltos es decrementado y toma el valor 0, el paquete es descartado.
  • Dirección origen (128 bits). Es la dirección del origen del paquete.
  • Dirección destino (128 bits). Es la dirección del destino del paquete.

Direcciones IPv6

Las direcciones IPv6 utilizan 128 bits en lugar de 32, como en IPv6. Un ejemplo de dirección IPv6 puede ser la siguiente:

805B:2D9D:DC28:0000:0000:FC57:D4C8:1FFF

La notación hexadecimal es la forma oficial para expresar las direcciones IPv6. Con ésta notación se logra que las dirección IP sean más cortas y fáciles de manejar. Aún así, a nosotros los humanos se nos hace complicado manejar direcciones IP bajo esta notación, ya que la notación de 16 valores NO nos es familiar. Al ser direcciones tan inmanejables para nosotros, IPv6 ofrece varias formas de acortar las direcciones:

  • Los octetos con cuatro ceros, como en "0000", se pueden resumir como "0". De este modo, la dirección anterior también se podría escribir como "805B:2D9D:DC28:0:0:FC57:D4C8:1FFF".
  • Varios otectos seguidos de ceros, como en "0000:0000:0000", se pueden resumir como "::". Esto solo se puede realizar una vez en toda la dirección. Por ejemplo, la dirección "805B:2D9D:DC28:0000:0000:FC57:0000:0000" se puede expresar como "805B:2D9D:DC28::FC57:0:0" o bien como "805B:2D9D:DC28:0:0:FC57::"
  • La ruta "Cualquier destino", es decir "0000:0000:0000:0000:0000:0000:0000:0000" se puede resumir como "::"

Tipos de direcciones IPv6

A nivel general, podemos clasificar las direcciones IPv6 en tres grandes categorías:

  • Direcciones Unicast: son asignadas a una interface o nodo permitiendo la comunicación directa entre dos nodos de la red.
  • Direcciones Multicast: permiten identificar múltiples interfaces o nodos en un red. Con este tipo de direcciones podemos comunicarnos con múltiples nodos de manera simultánea. Por ejemplo, la dirección "FF02:0:0:0:0:0:0:9" es la que utilizan los routers que implementan RIP para intercambiar rutas.
  • Direcciones Anycast: en anycast, como en multicast, también hay una asociación de una dirección destino a varias máquinas, pero la diferencia está en que se selecciona una de estas máquinas para ser la destinataria de la información. Un paquete enviado a una dirección anycast es entregado a la interfaz más cercana que dispone de esa dirección. La "cercanía" dependerá de la topología de la red y del protocolo de enrutamiento que se esté utilizando.

IPv6 no soporta las direcciones broadcast. La razón es que el tamaño de las redes no hace adecuado el tráfico broadcast.

Direcciones unicast

Dentro de las direcciones unicast, existen dos tipos de direcciones:

Direcciones Link-local

link-local: Las direcciones Link-Local son el equivalente a las direcciones IP privadas en IPv4. Estas son asignadas a una interface de manera automática, mediante el formato EUI-64 (Extended Unique Identifier), a partir del momento que activamos el protocolo IPv6 en un nodo.

El prefijo de estas direcciones es FE80::/10. Estas direcciones NO pueden ser encaminadas a través de los Routers fuera del segmento local, de ahí deriva su nombre.

Una dirección IPv6 Link-Local comienza con el prefijo FE80::/10. La porción de nodo, que son los últimos 64 bits, se forma con el formato EUI-64. El formato EUI-64 toma los 48 bits de la dirección MAC de la tarjeta Ethernet y le coloca 16 bits adicionales predefinidos por el protocolo IPv6 (FFFE). A continuación tenemos un ejemplo de una dirección Link-Local.

Así, por ejemplo, la siguiente puede ser una dirección tipo Link-Local:

FE80::211:21FF:FE6C:C86B

¿Por qué 0xFFFE? Este es un valor reservado que los fabricantes de dispositivos no pueden incluir en el OUI (Organizational Unique Identifier) de la MAC. El OUI de una MAC son los 3 octetos (24 bits) más significativos (más a la izquierda), que indican la identidad del fabricante. Es decir, que cualquier dirección EUI-64 que contenga 0xFFFE inmediatamente después de su porción OUI, es reconocible como una dirección generada a partir de la dirección EUI-48 (MAC).

El segundo paso es invertir el bit U/L (Universal/Local) en la porción OUI (los 24 dígitos binarios más significativos de los últimos 64 bits) de la dirección. Dicho bit, es el séptimo bit más significativo.

Actividad 1 (IPv6). Copia en un documento de texto la dirección MAC de la interfaz de red que tenga tu ordenador conectada al aula. Después calcula la dirección IPv6 link-local empleando el protocolo EUI-64, siguiendo los siguientes pasos:

  1. Calcula los 48 bits menos significativos de la dirección IPv6, combinando los 4 octetos menos significativos de la MAC con el valor 0xFFFE.
  2. Calcula en binario los 16 bits restantes, y muestra cómo se invierte el bit U/L.
  3. Compón los dos fragmentos de la dirección calculados en el punto anterior.
  4. Agrega finalmente el prefijo de direcciones Link-Local.

Entrega la actividad en un documento de texto, llamado Act1-ipv6.txt.

Por alguna razón, Microsoft decidió que la autoconfiguración de IPv6 utilizaría un identificador aleatorio (no la MAC), que además cambian contínuamente. Dado que esto no es conveniente desde el punto de vista administrativo, a continuación cito los pasos a dar para que Windows se comporte como cualquier otro sistema operativo:

  1. Abrir una consola de comandos con elevación.
  2. Ejecutar los siguientes comandos. Cada uno de ellos debería responder "Aceptar".
  3. netsh interface ipv6 set privacy state=disabled store=active netsh interface ipv6 set privacy state=disabled store=persistent netsh interface ipv6 set global randomizeidentifiers=disabled store=active netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent
  4. Salir de la línea de comandos y reiniciar


El formato EUI-64 no es exclusivo de direcciones Link-Local. También se puede utilizar para direcciones globales. Observa el siguiente comando cisco:

ipv6 address 2001:db8::/64 eui-64

Este comando solamente indica el prefijo de la dirección, de forma que los 64 bits menos significativos vienen determinados por el formato EUI-64.


Actividad 2 (IPv6). Configura un escenario en PacketTracer donde conectes directamente dos routers. Después, configura las interfaces conectadas, asignando a cada interfaz una dirección global con prefijo 2001:db8 y formato EUI-64. Finalmente asegúrate de que:

  1. puedes hacer ping desde una interfaz a la otra usando la dirección link-local.
  2. puedes hacer ping desde una interfaz a la otra usando la dirección global.

Entrega el documento de PacketTracer con el nombre Act2-ipv6.pkt.

Algunos comandos necesarios para configurar IPv6 en sistemas Cisco

Habilitar el reenvío de datagramas IPv6

Para que un router Cisco pueda reenviar datagramas IPv6 unicast, es preciso activar IPv6. Para ello, se debe usar el comando siguiente en modo de configuración global:

Router(config)# ipv6 unicast-routing

Direccionamiento

En IPv6, una interfaz puede tener varias direcciones diferentes. Lo normal, es que tenga al menos dos direcciones:

  1. La dirección link-local, para comunicaciones dentro del segmento.
  2. La dirección global, para comunicaciones que impliquen varias redes (Internet).

Además de estas dos direcciones, se le pueden asignar más direcciones.

Asignar direcciones link-local manualmente

Para asignar una dirección link-local manualmente, utilizamos el comando siguiente:

Router(config-if)# ipv6 address FE80::1 link-local

En el comando anterior, se asigna la dirección FE80::1 al enlace local.

Asignar direcciones link-local eui-64

Para asignar direcciones link-local tipo eui-64, no hay que hacer nada, ya que estas direcciones se configuran automáticamente. Sencillamente, si asignamos una dirección global a una interfaz, ésta adquirirá automáticamente una dirección link-local tipo eui-64.

Asignar direcciones globales

El número de direcciones IPv6 globales que soporta una interfaz es ilimitado. Para asignar una dirección global, utilizamos el comando siguiente:

Router(config-if)# ipv6 address 2001:db8:0:12::1/64

También podemos desear configurar una dirección IPv6 global que siga el estándar eui-64. Para ello, podemos utilizar el siguiente comando:

Router(config-if)# ipv6 address 2001:db8::/64 eui-64

En el comando anterior, a la dirección se le agregan los últimos 64 bits según el estándar eui-64.

Añadiendo rutas manualmente

Añadir una ruta estática en IPv6 es igual que con IPv4. Vamos a distinguir entre una ruta por defecto y una ruta específica. Para añadir una ruta por defecto:

Router(config)# ipv6 route ::/0 2001:DB8:ACAD:2::2

El comando anterior añade una ruta por defecto hacia el nodo con ip 2001:DB8:ACAD:2::2.

Si lo que queremos es añadir una ruta específica, utilizaremos el siguiente comando:

Router(config)# ipv6 route 2001:DB8::/64 2001:DB8:3000:1

El comando anterior añade una ruta hacia la red 2001:DB8::/64, vía el nodo 2001:DB8:3000:1.

Los comandos anteriores son suficientes para configurar una red IPv6 funcional.

¿Qué es el símbolo % que aparece tras la dirección IPv6

En ordenadores con más de una interfaz de red se añade a la dirección un identificador de red. Supongamos la siguiente:

Aclaración. En una red están los hosts A y B.

  1. Host A
    • Posee dos interfaces de red. Cada una de ellas está conectada a una subred diferente.
    • Dirección IPv6 de la primera interfaz: fe80::2abc:d0ff:fee9:4121%4
    • Dirección IPv6 de la segunda interfaz: fe80::2acf:d0ff:fec3:0042%5
  2. Host B
    • Posee una interfaz de red.
    • Dirección IPv6 de la interfaz es: fe80::3123:e0ff:fe12:3001%3

¿Qué ocurriría si hicieramos ping desde el host A al B? ¿Por qué interfaz se enviarían los paquetes? Al fin y al cabo pertenecen al mismo rango de red, ya que son direcciones Link-Local. Para resolver esta ambigüead, indicamos el ID de zona para definir por qué interfaz queremos que se envíen los paquetes. De este modo, si el host B se encuentra en la misma subred que la segunda interfaz del host A, el comando ping sería como sigue:

ping fe80::3123:e0ff:fe12:3001%5

Actividad 3 (IPv6). Consulta la dirección link-local de un compañero de clase. Después, trata de hacer ping a dicha dirección.

Entrega una captura donde se pueda comprobar que estás haciendo ping con éxito, con el nombre Act3-ipv6.txt.

Direcciones globales

Las direcciones Globales en IPv6 son el equivalente de las direcciones IP públicas en IPv4. Estas direcciones pueden ser encaminadas a través de la Internet. Los primeros 3 bits están compuestos por los valores 001 (en notación binaria), por lo tanto, el prefijo de estás direcciones IP tendrá un valor en hexadecimal de 2000 con una máscara /3. Según esto los siguientes primeros octetos de una dirección IPv6 global serían válidos:

  • 2000 (0010) - dirección válida Global Unicast
  • 3000 (0011) - dirección válida Global Unicast

Sin embargo, los siguientes primeros octetos de una dirección IPv6 global serían inválidos:

  • 4000 (0100) - dirección inválida Global Unicast (a partir de aquí cambia la estructura de 001 en los primeros 3 bits)
  • 5000 (0101) - dirección inválida Global Unicast

Los primeros 64 bits de una dirección IPv6 los podemos dividir en tres componentes:

  • Prefijo Global (3 bits)
  • Red (45 bits): identifican la red asignada a las organizaciones por parte de la IANA.
  • Subred (16 bits): en caso de realizarse una segmentación de la red (Subnetting). Si no hay segmentación de la red (Subnetting), entonces, los primeros 64 bits representa la red y los demás 64 bits los nodos.

Por ejemplo, vamos a tomar como ejemplo la siguiente dirección IPv6 Global Unicast:

2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b

Los primeros 48 bits representan la porción de red de la empresa:

2001:0db8:3c4d

Los siguientes 16 bits representan la porción de subred:

0015

Los siguientes 64 bits representan la porción del nodo:

0000:0000:1a2f:1a2b

El rango de direcciones globales de IPv6, son todas las direcciones entre 2000::/3 y 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF/3

Los RIR (Registradores Regionales de Internet) tienen asignados los siguientes bloques:

  • APNIC(Asia y Pacífico) - 2400:0000::/12
  • ARIN (América del norte) - 2600:0000::/12
  • AfriNIC (África y Océano Índico) - 2C00:0000::/12
  • LACNIC (América Latina) - 2800:0000::/12
  • Ripe (Europa) - 2A00:0000::/12

Autoconfiguración IPv6

La configuración automática es una característica importante que ofrece el protocolo IPv6. Permite que los distintos dispositivos conectados a una red IPv6 puedan autoconfigurarse de manera automática. IPv6 define un mecanismo de configuración automática de direcciones con estado y sin estado.

Configuración automática sin estado (stateless)

El mecanismo sin estado permite que un host genere sus propias direcciones. Para generar las direcciones, el mecanismo sin estado genera una dirección IPv6 combinando la información local (propia del host, como la dirección MAC de su interfaz) y la no local (anunciada por los routers).

Los routers anuncian todos los prefijos que se han asignado al enlace. Los hosts IPv6 emplean el protocolo NDP para obtener un prefijo de subred a partir de un router local y crean direcciones IPv6 automáticamente combinando el prefijo de subred con un ID que se genera a partir de la dirección MAC de una interfaz, siguiendo la norma eui-64. Si no hay routers, un host puede generar únicamente direcciones link-local.

Configuración automática con estado (stateful)

La configuración con estado se basa en el uso de un protocolo de configuración de direcciones como DHCPv6, para obtener las direcciones y otras opciones de configuración.

ND, el ARP de IPv6

En una red IPv6 no se implementa ARP, y no existe nada parecido a una dirección broadcast. En su lugar, se utiliza el protocolo NDP (Neighbor Discovery Protocol). El protocolo NDP es un conjunto de mensajes que determina las relaciones entre nodos vecinos, y proporciona la siguiente funcionalidad:

  • Resuelve las direcciones de la capa de enlace de un nodo vecino al que se van a enviar paquetes.
  • Determina cuándo una dirección de enlace de un nodo vecino ha cambiado.
  • Determina si un nodo vecino es aún alcanzable.

ND es utilizado por los hosts para hacer lo siguiente:

  • Descubrir routers vecinos.
  • Autoconfigurar direcciones, prefijos, rutas y otros parámetros de red.

ND es usado por los routers para hacer lo siguiente:

  • Anunciar su presencia, así como parámetros de configuración de hosts, rutas y prefijos de red.
  • Informar a los hosts del mejor "siguiente salto" para enviar paquetes a una dirección específica.

Mensajes ND

ND cuenta con 5 tipos de mensaje diferente:

Router Solicitation

El mensaje "Router Solicitation" es enviado por los hosts IPv6 para descubrir la presencia de routers IPv6 en el segmento. Un host envía un mensaje "Router Solicitation" al que los routers responden de manera inmediata, en lugar de esperar a que un router se anuncie. Por ejemplo, suponiendo que estamos en un segmento ethernet, la cabecera de un mensaje "Router Solicitation" incluirá los siguientes campos:

  • En la cabecera de la trama de enlace
    • La dirección MAC origen
    • La dirección MAC destino es la dirección multicast 33-33-00-00-00-02 (destinada a todos los routers).
  • En la cabecera del datagrama IPv6
    • La dirección IPv6 origen
    • La dirección IPv6 destino es una multicast destinada a todos los routers del segmento: FF02::2

Router Advertisment

Los routers IPv6 envían mensajes "Router Advertisement" de manera periódica, y también cuando han sido solicitados mediante un mensaje "Router Solicitation". Este mensaje contiene información sobre el prefijo de red, la MTU del segmento, rutas específicas y el tiempo válido para las direcciones autoconfiguradas. Los campos incluidos son:

  • En la cabecera de la trama de enlace:
    • La dirección MAC origen.
    • La dirección MAC destino puede ser la dirección multicast 33-33-00-00-00-01 (destinada a todos los hosts), o bien la dirección MAC del host que envió un mensaje "Router Solicitation".
  • En la cabecera del datagrama IPv6:
  • La dirección IPv6 origen.
  • La dirección destino puede ser la dirección multicast FF02::1 (destinada a todos los hosts), o bien la dirección del host que envió el mensaje "Router Solicitation".

Neighbor Solicitation

Los nodos IPv6 envían un mensaje "Neighbor Solicitation" para descubrir la dirección MAC de otro nodo, o para confirmar una dirección previamente resuelta. Los campos que puede incluir son los siguientes:

  • En la cabecera de la trama de enlace:
    • La dirección MAC origen
    • La dirección MAC destino, en lugar de utilizar la dirección FF-FF-FF-FF-FF-FF como en ARP (dirección broadcast), se utiliza una dirección multicast compuesta en primer lugar por los otectos 33-33-FF, y por los últimos 6 dígitos de la IPv6. Por ejemplo:
    • Para solicitar la MAC de una máquina con dirección IPv6 2001::1234:5678, se enviará una paquete ethernet a la dirección 33-33-FF-34-56-78.

  • En la cabecera del datagrama IPv6:
    • La dirección origen IPv6.
    • La dirección destino es una multicast FF02::1:FFXX:XXXX, donde XX:XXXX son los últimos 6 dígitos hexadecimales de la dirección IPv6 destino.

Neighbor Adverstisement

Un nodo IPv6 envía un mensaje "Neighbor Advertisement" en respuesta a un mensaje "Neighbor Solicitation". Un nodo IPv6 también envía paquetes "Neighbor Advertisement" para informar al resto de nodos de cambio en su dirección. Los campos que incluirá un mensaje de este tipo son:

  • En la cabecera de la trama de enlace:
    • La dirección MAC de origen.
    • La dirección MAC destino puede ser o bien la dirección multicast 33-33-00-00-00-01 (destinada a todos los nodos), o bien la dirección MAC unicast destino (que previamente envió un mensaje "Neighbor Solicitation").
  • La cabecera del datagrama IPv6:

    • La dirección origen IPv6 unicast destino
    • La dirección destino puede ser, o bien la dirección multicast FF02::1 (destinada a todos los hosts del segmento), o bien la dirección IPv6 unicast que envió previamente un mensaje "Neighbor Solicitation".

Para poder consultar los vecinos conocidos en un segmento IPv6 en Windows:

netsh interface ipv6 show neighbors

Para poder consultar los vecinos conocidos en un segmento IPv6 en GNU/Linux:

ip -6 neigh show

Redirect

El mensaje "Redirect" es enviado por un router IPv6 para informar a un host de un mejor "primer salto" para un destino específico". Los mensajes "Redirect" son enviados únicamente al tráfico unicast, y van destinados a un único host. Los campos de un mensaje "Redirect" son:

  • En la cabecera de la trama de enlace:
    • La dirección MAC origen
    • La dirección MAC destino
  • En la cabecera del datagrama IPv6:
    • La dirección IPv6 de origen.
    • La dirección IPv6 de destino.

Actividad 4 (IPv6). Inicia Wireshark e inicia la escucha en la interfaz con la que te conectas al segmento local. Después, aplica el filtro icmpv6. Finalmente haz ping a la dirección IPv6 de un compañero de clase. Responde a las siguientes preguntas:

  • Encuentra el mensaje "Neighbor Solicitation" y completa los siguientes campos.
    1. Dirección MAC origen.
    2. Dirección MAC destino.
    3. Dirección IPv6 origen.
    4. Dirección IPv6 destino.
  • Encuentra el mensaje "Neighbor Advertisement" y completa los siguientes campos.
    1. Dirección MAC origen.
    2. Dirección MAC destino.
    3. Dirección IPv6 origen.
    4. Dirección IPv6 destino.

Escribe la información pedida en un documento de texto llamado Act4-ipv6.txt. Además, realiza una captura de pantalla, donde se pueda ver el resultado del comando ping, así como la captura realizada de Wireshark, y guárdala como Act4-ipv6.png.

Actividad 5. Comprueba que el host al que hiciste ping en el ejercicio anterior aparece entre los vecinos IPv6 conocidos.

Entrega una captura donde se pueda ver la MAC del host en la tabla de vecinos IPv6, y guárdala con el nombre Act5-ipv6.png.

Cómo funciona NDP

El protocolo NDP se sustenta sobre mensajes ICMPv6. En la siguiente imagen se puede observar el proceso de consulta de la MAC de una máquina:

Actividad 6 (ipv6). Configura una red como la que aparece en la siguiente imagen. Asigna las direcciones indicadas a las interfaces de los routers. Después, pon PacketTracer en modo de simulación, y configura los hosts en modo de autoconfiguración. Avanza en la simulación de forma que puedas comprobar el tráfico NDP. Responde las siguientes preguntas:

  • Encuentra el/los mensaje/s "Router Solicitation" y completa los siguientes campos.
    1. Host que envía el mensaje.
    2. Dirección MAC origen.
    3. Dirección MAC destino.
    4. Dirección IPv6 origen.
    5. Dirección IPv6 destino.
  • Encuentra el mensaje "Router Advertisement" y completa los siguientes campos.
    1. Router que envía el mensaje.
    2. Dirección MAC origen.
    3. Dirección MAC destino.
    4. Dirección IPv6 origen.
    5. Dirección IPv6 destino.

Escribe la información pedida en un documento de texto llamado Act6-ipv6.txt.

Actividad 7 (ipv6). Configura una red como la que aparece en la siguiente imagen, de forma que haya conectividad total. Configura manualmente las direcciones IPv6 de los nodos, y añade las rutas necesarias.

Haz ping desde un host a otro en modo de simulación y comprueba como actúa NDP para la resolución de direcciones MAC, de un modo similar a cómo lo haría ARP.

Entrega el archivo de Packet Tracer con el nombre Act7-ipv6.txt

Tecnologías de transición de IPv4 a IPv6

Suponiendo que nuestro ISP no proporciona direcciones IPv6 a sus clientes, existen tecnologías que permiten asignar una dirección IPv6 a equipos que están en una red IPv4. El mecanismo del que hablamos son túneles IPv6 sobre IPv4. Vamos a examinar una de estas soluciones. En la siguiente imagen se puede apreciar el funcionamiento de estos túneles:

MIREDO/TEREDO

Teredo es una tecnología de transición que permite conectarse a Internet utilizando IPv4. Para ello, encapsula los paquetes IPv6 en paquetes IPv4 en el túnel que establece el sistema operativo cliente con un servidor Teredo. El servidor Teredo desencapsula los paquetes IPv6, y los pone a circular por la red IPv6.

Miredo es un cliente libre de túneles Teredo diseñado para permitir conectividad IPv6 a ordenadores que se encuentran en redes IPv4 y que no tienen acceso directo a una red IPv6. Miredo está incluido en muchas distribuciones GNU/Linux. En nuestro caso vamos a utilizar Ubuntu como sistema operativo base.

Actualmente muchos servidores Teredo están dejando de operar, puesto que ya hay cierto nivel de despliegue de IPv6 en el mundo, y están dejando de ser necesarios. El nivel de implantación puede verse en el siguiente enlace: https://www.google.com/intl/en/ipv6/statistics.html#tab=per-country-ipv6-adoption

Actividad 8 (ipv6). Contamos con una máquina Ubuntu, que está conectada a Internet a través de un router que no proporciona IPv6 de forma nativa. A continuación hacemos lo siguiente:

  1. Instalamos el cliente Miredo:
  2. # apt-get install miredo
  3. Reiniciar la red:
  4. # /etc/init.d/networking restart
  5. Comprobar que aparece una interfaz llamada "teredo", ejecutando el comando ifconfig
  6. Hacer ping a una dirección ipv6, ejecuando el comando ping6 www.google.com
  7. Comprobar nuestra conexión ipv6 accediendo a la página http://test-ipv6.com

Para terminar vamos a hacer referencias a configuraciones de red en sistemas basados en RedHat Enterprise Linux, y otras configuraciones en Windows

Cuestiones adicionales. Confuguración de red en CentOS/RHEL 7

Para configurar la red en CentOS 7 hay dos formas: utilizano asistente gráfico, o bien utilizando la línea de comandos.

Configurar la red a través de un asistente

Lo primero es ejecutar el comando nmcli d para la identificación rápida de las interfaces de red instaladas en el sistema

[mauri@localhost ~]$ nmcli d DISPOSITIVO TIPO ESTADO CONNECTION enp0s3 ethernet conectado enp0s3 lo loopback sin gestión --

Al ejecutar este comando, podemos ver que tenemos una interfaz de red llamada "enp0s3".

A partir de aquí, los pasos son los siguientes:

Configuración por DHCP

  1. Ejecutar el comando nmtui y aparecerá un asistente dando varias opciones. Elegimos la opción "Edit a connection".
  2. A continuación, podremos ver los nombres de todas la interfaces. En nuestro caso, solamente hay una. Seleccionarla.
  3. Seleccionar la opción "Automatically connect"
  4. Hacer clic en "Ok" para cerrar el asistente.
  5. Reiniciar el servicio de red mediante el comando siguiente:
  6. systemctl restart network

NOTA: Si después de reiniciar el servicio de red comprobamos que no se ha actualizado la configuración de red, entonces reiniciaremos la interfaz. Por ejemplo, si la interfaz se llamase "eth0", entonces los comandos a ejecutar serían los siguientes:

# ifdown eth0 # ifup eth0

Actividad 1. Configura la interfaz de red de tu sistema por DHCP, emplenado la interfaz gráfica. Después reinica el servicio de red y comprueba que se ha asignado una dirección a tu interfaz.

Toma una captura donde se pueda ver la configuración de la interfaz por DHCP y guárdala con el nombre Act1.1-red-linux.png. Después comprueba que se ha asignado una dirección IP a tu interfaz. Para ello, vuelca el archivo /var/log/messages por pantalla, y busca algo como lo siguiente. Hecho esto, guarda una captura con el nombre Act1.1-red-linux.png:

Jan 7 14:01:09 localhost NetworkManager: DHCPREQUEST on enp0s3 to 255.255.255.255 port 67 (xid=0x297925c2) Jan 7 14:01:09 localhost NetworkManager: DHCPACK from 10.0.2.2 (xid=0x297925c2) Jan 7 14:01:09 localhost dhclient[9318]: bound to 10.0.2.15 -- renewal in 39804 seconds. Jan 7 14:01:09 localhost NetworkManager: bound to 10.0.2.15 -- renewal in 39804 seconds. Jan 7 14:01:09 localhost NetworkManager[650]: (enp0s3): DHCPv4 state changed preinit -> reboot Jan 7 14:01:09 localhost NetworkManager[650]: address 10.0.2.15 Jan 7 14:01:09 localhost NetworkManager[650]: plen 24 (255.255.255.0) Jan 7 14:01:09 localhost NetworkManager[650]: gateway 10.0.2.2 Jan 7 14:01:09 localhost NetworkManager[650]: server identifier 10.0.2.2 Jan 7 14:01:09 localhost NetworkManager[650]: lease time 86400 Jan 7 14:01:09 localhost NetworkManager[650]: nameserver '10.0.2.3' Jan 7 14:01:09 localhost NetworkManager[650]: Activation (enp0s3) Stage 5 of 5 (IPv4 Configure Commit) scheduled...

Configuración estática

  1. Ejecutar el comando nmtui y aparecerá un asistente dando varias opciones. Elegimos la opción "Edit a connection".
  2. A continuación, podremos ver los nombres de todas la interfaces. En nuestro caso, solamente hay una. Seleccionarla.
  3. Elegir la configuración manual en la sección "IPv4 CONFIGURATION".
  4. Insertar una dirección IP, una subred, un gateway y DNS.
  5. Seleccionar "Automatically connect".
  6. Presionar Ok y cerrar el asistente.
  7. Finalmente reiniciar el servicio de red con el siguiente comando:
  8. systemctl restart network

Actividad 2. Elige un direccionamiento IP adecuado para el segmento en el que se encuentra tu systema. Después, configura la red de forma manual, y comprueba que tienes acceso a la red haciendo ping a tu puerta de enlace.

Toma una captura donde se pueda ver la configuración de la interfaz manualmente y guárdala con el nombre Act2.1-redlinux.png. Después toma otra captura donde se pueda ver cómo reinicias el servicio y comprueba el nuevo direccionamiento de tu interfaz de red. Guarda esta captura con el nombre Act2.2-red-linux.png.

Configuración de red desde la lína de comandos

Configurar la red desde la línea de comandos supone conocer bien el archivo de configuración de la interfaz de red. Dicho archivo es /etc/sysconfig/network-scripts/ifcfg-enp0s3 (en mi caso). El contenido puede ser algo parecido a lo siguiente:

HWADDR="08:00:27:F7:77:FF" TYPE="Ethernet" BOOTPROTO="dhcp" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_FAILURE_FATAL="no" NAME="enp0s3" UUID="00a49dbf-26ca-4fbf-8be0-7e1ca6e5645e" ONBOOT="yes"

Para conocer el significado de cada parámetro, podemos consultar en docs.oracle.com/cd/E37670_01/E41138/html/ol_about_netconf.html

Para configurar por DHCP

Para configurar la interfaz por DHCP, es preciso fijarse en las opciones BOOTPROTO y ONBOOT. Deben quedar del siguiente modo:

BOOTPROTO=dhcp ONBOOT=yes

Después reiniciamos el servicio de red:

systemctl restart network

Actividad 3. Asegúrate de que la interfaz de red está configurada por DHCP consultado el archivo correspondiente a la interfaz en el directorio /etc/sysconfig/network-scripts. Abre dicho archivo, y si la configuración no es por DHCP, entonces modifícalo para lo sea. Después reinicia el servicio.

Toma una captura donde se pueda comprobar la configuración en el archivo que has modificado. Resalta los parámetros implicados en la configuración pedida, y guárdala con el nombre Act3.1-red-linux.png. Después comprueba en el archivo /var/log/messages que se ha asignado por DHCP una dirección de red, y guarda la captura con el nombre Act3.2-red-linux.png.

Para configuración estática

De nuevo debemos encontrar las opciones BOOTPROTO y ONBOOT. Deben quedar del siguiente modo:

BOOTPROTO=static ONBOOT=yes

A continuación debemos añadir las opciones IPADDR, NETMASK, GATEWAY y DNS1, como en el siguiente ejemplo:

IPADDR=192.168.1.40 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=80.58.61.250

Finalmente reiniciamos el servicio de red:

systemctl restart network

Actividad 4. Asegúrate de que interfaz de red está configurada manualmente consultado el archivo correspondiente a la interfaz en el directorio /etc/sysconfig/network-scripts. Abre dicho archivo, y si la configuración no es estática, entonces modifícalo para lo sea. Después reinicia el servicio.

Toma una captura donde se pueda comprobar la configuración en el archivo que has modificado. Resalta los parámetros implicados en la configuración pedida, y guárdala con el nombre Act4.1-red-linux.png. Después comprueba el direccionamiento de red de la interfaz, y guarda la captura con el nombre Act4.2-red-linux.png.

Nombrado de las interfaces de red

Tradicionalmente, las interfaces de red han sido nombradas como eth[0123...]. El inconveniente que tienen estos nombres es que no necesariamente tienen que ver con la tecnología del hardware instalado. Esto supone un problema en cuanto a averiguar que interfaz de red es cual cuando hay más de un tipo de hardware instalado. CentOS/RHEL 6 introdujo un nuevo esquema de nombrado, que con CentOS/RHEL 7 se aplica por defecto. Este esquema de nombrado determina el nombre de las interfaces de red con la idea de diferenciar fácilmente las interfaces, y que permanezcan consistentes en los diferentes arranques*

Existe un procedimiento para mantener consistente el nombre de las interfaces de red de GNU/Linux, descrito en http://www.mauriciomatamala.net/TIPS/nombres-ifaces-persistentes.php. Este modelo se basa en asociar el nombre de la interfaz a la dirección MAC de la interfaz. Pero este modelo tiene un problema en los sistemas virtuales, puesto que las direccion MAC pasan a ser efímeras (ya que sepueden cambiar en cualquier momento)

Las convenciones de nombrado son las siguientes:

Los dos primeros caracteres del nombre de la interfaz

  • en -- ethernet
  • sl -- línea serie
  • wl -- wlan
  • ww -- wwan

El resto del nombre de la interfaz:

  • o<número> - Número de interfaz integrada en la placa base.
  • s<número_ranura>[f<función>][d<id_dispositivo>] - Número de ranura de conexión en caliente.
  • x<MAC> - Direción MAC
  • p<bus>s<ranura>[f<función>][d<dev_id>] - Ubicación PCI
  • p<bus>s<ranura>[f<función>][u<puerto>][...][c<config>][i<interfaz>] - cadena de nombre de puerto USB

El inconveniente de este esquema de nombrado, es que a veces se vuelve más difícil de leer que los nombres tradicionales. Por ello puede aparecer el deseo o necesidad de cambiar el nombre de una interfaz, aplicando el esquema de nombrado tradicional.

Nombres de interfaces persistentes con reglas de nombrado UDEV

A continuación veremos como se utilizan las reglas UDEV de nombrado persistente de interfaces. Entender esto es necesario para poder renombrar las interfaces, tal y como se explica más adelante. Se puede consultar este punto en nombres-ifaces-persistentes.php

Cambiando el nombre de la interfaz

En primer lugar vamos a desactivar el esquema de nombrado predecible de CentOS/RHEL 7. Para ello, debemos pasar el parámetro net.ifnames=0 al kernel durante el arranque. Para hacer esto, editamos el archivo /etc/default/grub y añadimos la cadena "net.ifnames=0" en la línea correspondiente a GRUB_CMDLINE_LINUX. Debe quedar como se muestra a continuación:

GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="vconsole.keymap=es crashkernel=auto vconsole.font=latarcyrheb-sun16 net.ifnames=0 rhgb quiet" GRUB_DISABLE_RECOVERY="true"

Para que esta nueva configuración tenga efecto en el próximo reinicio, recreamos el archivo grub.cfg:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Posteriormente, creamos una regla de nombrado de red en el archivo /etc/udev/rules.d/70-persistent-net.rules, añadiendo la siguiente línea:

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:5b:39:e6:aa:df", ATTR{type}=="1", KERNEL=="eth*", NAME="redlocal0"

Para terminar, supongamos que el script de configuración de CentOS se llamaba ifcfg-enp0s8. Entonces, si hemos llamado a nuestra interfaz "redlocal0", lo que haremos será renombrar dhcio archivo a ifcfg-redlocal0. Además, debemos editar dicho archivo y modificar los parámetros NAME y DEVICE. Es decir, internamente el archivo (ahora renombrado a) ifcfg-redlocal0 contendrá algo como lo siguiente:

HWADDR="08:00:27:F7:77:FF" DEVICE="redlocal0" TYPE="Ethernet" BOOTPROTO="dhcp" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_FAILURE_FATAL="no" NAME="redlocal0" UUID="00a49dbf-26ca-4fbf-8be0-7e1ca6e5645e" ONBOOT="yes"

NOTA: Es preciso sustituir la MAC mostrada por la MAC de la interfaz.

Finalemente, reiniciamos el sistema y el nombre de la interfaz debería haber cambiado.

Una vez cambiado el nombre de la interfaz

Es importante tener en cuenta que si el nombre anterior de la interfaz se emplea en algún archivo de configuración, debería ser actualizado al nuevo nombre. De este modo, el script para la interfaz en /etc/sysconfig/network-scripts/ debería ser modificado en este sentido.

Actividad 5. Modifica el nombre por defecto de tu interfaz, para que se llame "pro1000".

Muestra por pantalla la configuración de las interfaces de red, y guarda una captura con el nombre Act5-red-linux.png.

Una referencia a iproute2

iproute2 es un paquete de comandos que sustituirá a net-tools entre otras cosas porque net-tools ya no tiene mantenimiento. Podemos ver más detalles sobre este tema en iproute2.php.

Una referencia a Netsh

iproute2 es un entorno de administración de la configuración de la red para Windows. Para más referencias, puedes consultar en netsh.php.

Cuestiones adicionales. Configuración de red en Windows

Centro de redes y recursos compartidos

La principal herramienta de configuración de la red en Windows Server 2008 y posteriores es el Centro de redes y recursos compartidos, ubicado en Inicio\Red o bien Panel de control\Redes e Internet\Centro de redes y recursos compartidos.

Ubicación de red

La primera vez que un sistema Windows se conecta a una red, se debe elegir una ubicación de red. De esta forma, la configuración apropiada de firewall y seguridad se define automáticamente para el tipo de red con la que se conecta. Si conectamos el sistema a redes en diversas ubicaciones (por ejemplo, a una red privada, o bien a una red en un lugar público, como un aeropuerto), elegir una ubicación de red u otra nos puede ayudar a simplificar la configuración del nivel de seguridad adecuado.

Perfiles de ubicación de red

Todos los equipos Windows tienen asignadas tres perfiles de ubicación de red: Pública, Privada y Dominio. De esta forma, se tienen las siguientes ventajas:

  • Se activan y desactivan diferentes propiedades de red en base a la ubicación de red de cada interfaz del sistema.
  • Podemos definir una configuración diferente para cada interfaz.

En cada uno de los perfiles, se pueden definir configuraciones diferentes. Posteriormente, al elegir uno u otro perfil, se asignará la configuración automáticamente.

Para definir una configuración para un perfil determinado, tenemos que acceder a ubicaciones diferentes:

  • Centro de redes y recursos compartidos\Cambiar configuración de uso compartido avanzado: Desde aquí podemos activar/desactivar las opciones siguientes:
    • Detección de redes (LLMNR). Permite ver otros equipos y dispositivos de la red y que otros usuarios de la red vean el equipo.
    • Compartir archivos e impresoras. Habilita el uso de archivo y carpetas compartidos.
    • Uso compartido de la carpeta pública. Permite el uso compartido de la carpeta pública para los miembros del grupo hogar.
    • Uso compartido con protección de contraseña. Establece el uso de credenciales de usuario para el acceso a los recursos compartidos.
  • Centro de redes y recursos compartidos\Firewall de Windows: Desde aquí podemos configurar el firewall para los diferentes perfiles.

La detección de redes es el método de resolución de nombres que utiliza Windows para detectar otros hosts en la red cuando no existe una DNS local configurada. La detección de redes, combina varios protocolos, entre los que destacan NetBIOS y LLMNR. NetBIOS utiliza paquetes broadcast IPv4 para la resolución de nombres del segmento, mientras que LLMNR utiliza paquetes multicast IPv6 (dirección multicast FF02::1:3). Ambos protocolos dejan de estar justificados cuando hay una DNS configurada en un dominio local, ya que introducen tráfico innecesario en la red (la DNS resuelve los nombres), y además introducen mayor inseguridad en la red. Por tanto, solamente tienen sentido en caso de emplear un Grupo de Trabajo en lugar de un dominio.

Por defecto, NetBIOS sobre TCP/IP está activado en Windows. LLMNR es utilizado por Windows cuando no existe una infraestructura DNS para el segmento de red. Por ejemplo, supongamos que estamos en un host llamado ClienteA que ejecuta Windows 7 o posterior con IPv6 habilitado, y la detección de redes activada. Si ClienteA desea conectar con ClienteB escribiendo una ruta UNC del tipo \\ClienteB y no hay una DNS local, ClienteA utilizará LLMNR para intentar resolver el nombre de B para poder conectar con él.

La detección de redes con NetBIOS tiene algunas características destacables:

  • Puede funcionar en equipos que no implementan IPv6.
  • No es práctico en redes grandes, debido al tráfico broadcast que general.
  • Viene activado por defecto en los sistemas Windows.
  • No requiere ninguna configuración específica para que resuelva los nombres de los nodos del segmento.

La detección de redes con LLMNR tiene algunas características importantes:

  • Únicamente funcionará en sistemas Windos Vista y posteriores.
  • Debe estar activado el direccionamiento IPv6. Gracias al modo automático sin estado de IPv6, no hay que configurar nada.
  • Para que LLMNR resuelva el nombre de todos los hosts Windows de una red, la detección de redes debe estar activada en todos ellos.

Para desactivar la detección de redes (en caso de que haya un servidor DNS local), hay que desactivar la opción de detección de redes (para desactivar LLMNR) y desactivar NetBIOS sobre TCP/IP en cada una de las interfaces de red (Ventana Propiedades: Protocolo de Internet Versión 4 (TCP/IP) -> Botón Opciones avanzadas -> Pestaña Wins -> Desactivar NetBios a través de TCP/IP.

Ubicaciones

Existen cuatro ubicaciones diferentes. Estas ubicaciones son seleccionables desde el Centro de redes y recursos compartidos:

  • Red doméstica: para redes domésticas o cuando conozcemos y confiámos en los usuarios y dispositivos de la red. Los equipos de una red doméstica pueden pertenecer a un grupo en el hogar. La detección de redes está activada para las redes domésticas, lo que permite ver otros equipos y dispositivos de la red y que otros usuarios de la red vean el equipo.
  • Red de trabajo: para oficinas pequeñas u otras redes del lugar de trabajo. La detección de redes, que permite ver otros equipos y dispositivos de la red y que otros usuarios de la red vean nuestro equipo, está activada de forma predeterminada, pero no podremos crear un grupo en el hogar ni unirnos a él, aunque los ya existentes siguan funcionando.
  • Red pública: para las redes de lugares públicos (por ejemplo, cafeterías o aeropuertos). Esta ubicación tiene como objetivo evitar que el equipo sea visible para otros equipos. Grupo Hogar no está disponible en redes públicas, y la detección de redes está desactivada. También debemos elegir esta opción si estamos conectado directamente a Internet sin usar un router, o si tenemos una conexión de banda ancha móvil.
  • Red Dominio: se usa en redes con un dominio. Un administrador de red controla este tipo de ubicación de red, que no se puede seleccionar ni cambiar, y que solamente estará activa en caso de que el sistema esté unido a un dominio.

Compartir una carpeta en red

Para compartir una carpeta es necesario tener en cuenta lo siguiente:

  • En la ventana Configuración de uso compartido avanzado (accesible desde el panel izquierdo de Centro de redes y recursos compartidos) debe estar activada la opción Activar el uso compartido de archivos e impresoras.
  • También es conveniente activar la opción Activar la detección de redes, para así poder ver las máquinas de la red sin necesidad de conocer la ruta UNC de la carpeta compartida.

Una vez que compartimos una carpeta, debemos tener en cuenta dos tipos de permisos:

  • Los permisos establecidos para la compartición (vía SMB/CIFS).
  • Los permisos establecidos para el sistema de archivos de la carpeta compartida (NTFS).

Los permisos concedidos para el acceso en red, serán los más restrictivos de los dos. Por ejemplo, observa la siguiente imagen:

En esta imagen, se puede ver que:

  • Marketing tiene permisos de lectura (aunque localmente tenga más) al acceder a la carpeta compartida
  • Sales tiene permisos de lectura al acceder a la carpeta compartida
  • R&D tiene permisos de lectura (aunque localmente tenga más) al acceder a la carpeta compartida

Para compartir una carpeta, basta con hacer clic derecho sobre la carpeta a compartir, y elegir la opción Propiedades y después la opción Compartir. Una vez allí, hacemos clic sobre Uso compartido avanzado.

Estos permisos son configurables desde las pestañas Compartir y Segirdad, como se puede ver en las siguientes imágenes:

Permisos SMB/CIFS

Permisos NTFS

Grupo hogar

El grupo hogar es una forma de compartir recursos en una red local de forma más intuitiva para el usuario en redes domésticas. Si varios ordenadores de nuestro hogar están conectados físicamente y todos ellos utilizan Windows 7 o Windows 8, podrán pertenecer al mismo grupo hogar, para así gestionar de forma más sencilla los recursos y archivos compartidos.

Para utilizar esta opción la ubicación de la interfaz de red deberá ser Red doméstica. Además, sólo podrán formar parte del grupo hogar los sistemas con clientes Windows como Windows 7 u 8.

Para empezar la configuración del Grupo hogar, elegimos la opción "Grupo hogar" desde el "Centro de redes y recursos compartidos". A partir de ahí, los pasos a seguir para crear un Grupo hogar son:

  1. Elegir las opciones de compartición y elegir siguiente.
  2. Se nos ofrecerá una contraseña que debemos anotar.

Para unir otros equipos al Grupo hogar debemos seguir los siguientes pasos:

  1. Abrir el Centro de redes y recursos compartidos.
  2. Asegurarse de que tenemos una red doméstica configurada.
  3. Elegir la opción Grupo hogar.
  4. Seleccionar las opciones de compartición y hacer clic en siguiente.
  5. Escribir la contraseña del Grupo hogar, facilitada en el equipo en que se creó.

Para compartir un recurso en el Grupo hogar, basta con hacer lo siguiente:

  1. Abrir el explorador de Windows.
  2. Crear la carpeta si aún no existe que se desea compartir, y seleccionarla.
  3. En la barra de herramientas, elegir la opción deseada en el menú "Compartir con".

Si posteriormente se desea abandonar el grupo hogar, es posible hacerlo desde la ventana "Grupo hogar", accesible desde el "Centro de redes y recursos compartidos".

Conexiones de red

Windows configura automáticamente las conexiones de red asociadas cada interfaz de red del sistema. Estas conexiones se muestran en el Centro de redes y recursos compartidos. Se puede abrir de diferentes maneras:

  • Tareas de configuración inicial\Configurar funciones de red
  • Administrador del servidor\Ver conexiones de red
  • Centro de redes y recursos compartidos\Cambiar configuración del adaptador

Componentes predeterminados de las conexiones de red

En una conexión de área local de Windows, se encuentran los siguientes componentes predeterminados:

  • Clientes de red: en Windows solo encontramos el Cliente para redes Microsoft, que ofrece compatibilidad para acceder a los recursos compartidos en la red con otros equipos Windows.
  • Servicios de red: son componentes de software que proporcionan características adicionales a las conexiones de red, como la compartición de impresoras y archivos.
  • Protocolos de red: implementan IPv4 e IPv6 principalmente, así como el soporte a LLTD (descubridor de mapas de la topología de enlace).

Comprobar la configuración de direccionamiento

Para comprobar el direccionamiento, tanto IPv4 como IPv6, utilizamos el comando ipconfig. Alternativamente, podemos comprobar el direccionamiento del siguiente modo:

  • Centro de redes y recursos compartidos\Cambiar la configuración del adaptador
  • Hacer clic derecho sobre la interfaz, y elegir Estado
  • Hacer clic sobre el botón Detalles

Asignar manualmente una configuración IP

A una conexión de red se le puede asignar una configuración IP de forma manual o automática, tanto para IPv4 como para IPv6.

Asignar manualmente una configuración IPv4

En las propiedades de la interfaz (en Centro de redes y recursos compartidos\Cambiar la configuración del adaptador) hacemos doble clic sobre Protocolo de Internet versión 4 (TCP/IPv4).

Asignar manualmente una configuración IPv6

En las propiedades de la interfaz (en Centro de redes y recursos compartidos\Cambiar la configuración del adaptador) hacemos doble clic sobre Protocolo de Internet versión 6 (TCP/IPv6).

Definir una configuración alternativa

Si no hay un servidor DHCP que asigne una configuración válida IPv4, Windows intentará utilizar una configuración alternativa. Dicha configuración está disponible en la pestaña "Configuración alternativa" en el diálog "Propiedades de Protocolo de Internet versión 4 (TCP/IPv4)".

Reparar una conexión de red

Para reparar una conexión de red IPv4, que no ha recibido correctamente su configuración por DHCP, podemos utilizar estas dos estrategias:

  • Desactivar la interfaz y volver a activarla.
  • Ejecutar el comando ipconfig /renew

Actividad 1. Añade dos interfaces de red un sistema Windows 7. Una de ellas estará configurada en una red interna (NAT). La otra debe estar configura en modo puente con la red local del aula. Configura la interfaz de la red interna para que tenga una ubicación privada de Trabajo. Configura la segunda interfaz (en modo puente) para que tenga una ubicación pública. Después asegúrate de lo siguiente:

Para la red pública:

  1. Asegúrate de que está desactivada la "detección de redes" y la "compartición de archivos e impresoras".
  2. Configura la interfaz para que obtenga una dirección IP automáticamente.

Para la red privada (de trabajo):

  1. Asegúrate de que está activada la "detección de redes" y la "compartición de archivos e impresoras".
  2. Configura la interfaz para que obtenga una dirección IP automáticamente.
  3. Agrega la dirección IPv4 alternativa 172.16.10.5/255.255.255.0, con puerta de enlace 172.16.10.1.

Muestra por pantalla la configuración de las interfaces de red para que se pueda comprobar su direccionamiento IP y guarda una captura llamada Act1-redwindows.png.

Actividad 2. Desactiva la interfaz pública. Utiliza la detección de redes para localizar los otros equipos de la red privada.

Muestra por pantalla los equipos detectados y guarda una captura con el nombre Act2-redwindows.png.

Actividad 3. Configura la interfaz que está en la red de trabajo como red doméstica. Después, crea un grupo hogar, y une a él otra máquina Windows 7 del aula.

Muestra desde el explorador de Windows las máquinas del grupo hogar.

Actividad 4. Comparte una carpeta llamada "PAR" en uno de los equipos. Configura dicha carpeta para que se pueda acceder desde otros equipos del grupo de trabajo, con el siguiente criterio:

  • El usuario propietario tiene permisos de lectura y escritura.
  • El resto de usuarios solamente tienen permisos de lectura.

Accede a la carpeta compartida desde el otro equipo Windows como el usuario propietario de la carpeta, y crea un documento llamado "Actividad4.txt". Toma una captura y guárdala con el nombre Act4-redwindows.png

Cuestiones adicionales. Compartir archivos con Ubuntu

En esta sección me voy a referir a Ubuntu. Supongamos que deseamos compartir archivos desde Ubuntu, y acceder a los recursos compartidos de una red Windows.

Accecer a recursos compartidos en red desde Windows

Para acceder en red a una carpeta compartida en red, no es preciso hacer nada especial, salvo abrir el navegador de archivos y elegir la opción examinar la red. Tal y como se puede apreciar en la siguiente imagen.

Accediendo a los recursos de la red Microsoft mediante el explorador de archivos.

Si intentamos acceder a un recurso compartido, se nos pediran las credenciales del usuario, así como el grupo de trabajo (que se establece por defecto) durante la detección de redes.

La máquina destino pide las credenciales del usuario para controlar el acceso.
Creando un archivo en la carpeta compartida tras acceder con las credenciales adecuadas.

Compartir archivos con Windows desde Ubuntu

En primer lugar debemos instalar el software necesario para que Ubuntu pueda trabajar con el protocolo SMB:

sudo apt-get instal samba samba-common system-config-samba

Una vez que lo hemos instalado, podemos abrir system-config-samba desde la terminal.

Desde system-config-samba podemos configurar los recursos compartidos y las credenciales para el control de acceso.

Para crear una compartición desde Ubuntu, primero tenemos que crear al menos un usuario para controlar el acceso via SMB. Lo más lógico es utilizar las credenciales existentes en los sistemas Windows del grupo de trabajo. Para crear al usuario hay que abrir la opción Preferencias\Usuarios Samba

Se ha añadido un usuario.

Si tenemos que cambiar el nombre del grupo de trabajo por defecto, podemos hacerlo en la opción Preferencias\Configuración del servidor.

Una vez creado el usuario, podemos crear una compartición, haciendo clic sobre el botón +, o bien en la opción Archivo\Añadir recurso compartido.

Agregando una carpeta compartida.
Seleccionando los usuarios permitidos. Sólo hay un usuario, por lo que solo podemos seleccionar ese.

Si volvemos inspeccionar la red en busca de recursos compartidos, y podremos comprobar que aparece, además de las máquinas Windows, la máquina con Ubuntu instalado.

El servidor Ubuntu aparece entre los recursos de la red Microsoft.
Creando un recurso desde Windows en la carpeta compartida de Linux.

Compartir archivos con Windows desde Debian

En Ubuntu tenemos system-config-samba, y en debian tenemos gadmin-samba. Las siguientes capturas muestran el proceso seguido en Debian 8 para conseguir lo mismo que hemos hecho con Ubuntu.

Debemos conocer la ip de la máquina Debian. Con el comando ifconfig podemos obtenerla.

Los paquetes a instalar en Debian (para esta práctica concreta de compartir archivos), son samba, samba-common y gadmin-samba, una herramienta gráfica para configurar Samba.

apt-get install samba samba-common gadmin-samba
Instalamos el software necesario.

gadmin-samba debe ser abierto como superusuario, por lo que tendremos que introducir la contraseña de root. Nada más iniciar Gadmin-Samba, nos preguntará si deseamos sobreescribir la configuración de Samba. Debemos decir que sí.

Al abrir Gadmin-samba, nos pregunta si deseamos sobreescribir la configuración existente. Al decirle que sí, obtendremos una configuración como la mostrada en la imagen.

Es importante que cambiemos la información que aparece en la pestaña "Server settings" para que se ajuste a la configuración del servidor. Una vez que hayamos cambiado esta información, hacemos clic en Apply.

Es muy importante que la información de red sea correcta.

Samba utiliza su propia "base de datos" de usuarios válidos. Desde la pestaña "Users" podemos añadir nuevos usuarios Samba. Estos usuarios deberían coincidir con los que vamos a usar en la red Microsoft.

Una vez introducimos la información del usuario, hacemos clic en Apply.

En la pestaña "Shares" podemos añadir una nueva carpeta. Lo primero es rellenar la información sobre la carpeta a compartir.

Se puede crear una carpeta directamente desde aquí. Pero ¡OJO! el propietario de dicha carpeta será root. Por eso es mejor crearla previamente con Nautilus.

Si descendemos por la pestaña "Shares" podemos indicar además el usuario propietario de la carpeta.

Se deben cambiar algunos valores, como "writable".

Cuando accedamos desde Windows, veremos muchas más comparticiones de las esperadas. Todas esas carpetas compartidas tienen un propósito, que va más allá de nuestras intenciones (compartir una carpeta con Windows). De momento, podemos hacer una copia de seguridad del archivo de configuración de Samba, y borrar esas comparticiones desde la pestaña "Shares" de Gadmin-Samba.

Algunas de las carpetas compartidas han sido definidas por Gadmin-Samba. Podemos eliminarlas de momento.

Si configuramos la compartición empleando Gadmin-Samba empleando las opciones por defecto, podemos perder la capacidad de conectarnos desde la máquina Debian con otras comparticiones mediante SMB/CIFS.

Actividad 5. Conecta una máquina virtual con Linux instalado en la red privada.

Accede a la carpeta compartida anteriormente desde Windows, como el usuario propietario de la carpeta. Crea un archivo llamado "Actividad5-linux.txt". Toma una captura y guárdala con el nombre Act5-redwindows.png

Actividad 6. Comparte una carpeta llamada PARLinux desde Linux. Da permisos de lectura y escritura al usuario propietario de la carpeta.

Accede a la carpeta compartica desde Windows, como el usuario propietario de la carpeta. Crea un archivo llamado "Actividad6-linux.txt". Toma una captura y guárdala con el nombre Act6-redwindows.png

Si estás usando VMware

Me he encontrado con la siguiente y extraña situación. Si estoy usando VMware Workstation (en lugar de VirtualBox), pueden ocurrir cosas como la siguiente:

  • No se puede recuperar la lista de máquinas del grupo de trabajo utilizando Nautilus: este problema, se puede solventar parcialmente del siguiente modo:
    1. Instalar smbclient
    2. Ejecutar desde consola el comando smbtree para recuperar la lista de máquinas del grupo de trabajo.
    3. Conectar directamente con la comparticón deseada, ya sea utilizando el comando mount, o bien desde la opción Conectar con el servidor de Nautilus
  • Tras instalar Samba, las máquinas GNU/Linux no son visibles desde Windows: para que las máquinas sean visibles es preciso que hagamos expresamente una compartición, ya que no basta con la configuración por defecto que incluye Samba.

Enrutamiento básico con Windows Server

Resulta muy fácil convertir Windows Server en un router. Para ello, solo tenemos que añadir el rol Servicios de acceso y directivas de redes. Los pasos a seguir son los siguientes:

  • Elegir Agregar rol desde el administrador del servidor
  • Seleccionar Servicios de acceso y directivas de redes, y clicar en siguiente.
  • Como servicios de función, elegimos Servicios de enrutamiento y acceso remoto. Clicar en siguiente.
  • En la ventana de confirmación, clicar en "Instalar".

Una vez instalada la función, vamos a configurarla:

  • Abrir Inicio\Herramientas administrativas\Enrutamiento y acceso remoto.
  • Podemos comprobar, que el estado del servidor es "sin configurar", representado por una flecha roja hacia abajo en el nodo del servidor. Sobre dicho nodo, clicamos con el botón derecho y elegimos Configurar y habilitar enrutamiento y acceso remoto.
  • En la ventana de configuración, elegimos la opción Configuración personalizada.
  • Elegimos la opción enrutamiento LAN, y clicamos siguiente.
  • Finalmente el servicio se iniciará.

Lo único que nos queda es configurar las rutas estáticas. Para ello, podemos desplegar el nodo IPv4 y elegir la entrada Rutas estáticas. Con esto es suficiente para empezar a enrutar, añadiendo las rutas necesarias.

Práctica 4. Añade dos interfaces de red a un servidor Windows Server 2008. Una de las interfaces estará conectada al aula, y obtendrá su IP (del rango 192.168.42.0/24) por DHCP. La segunda interfaz de red, estará conectada a una red interna, y pertenecerá al rango 172.16.x.0/24. Configura esta interfaz estáticamente.

Ponte de acuerdo con un compañero, para configurar tu máquina virtual con Windows Server 2008 como router, de forma que el host de tu red interna pueda acceder al host que hay en la red de dicho compañero, tal y como se muestra en la siguiente imagen:.

Para comprobar que habéis resuelto el ejercicio, deberás hacer ping desde el host de tu red interna hasta el host de la red interna del compañero con quien resuelvas el ejercicio.

Toma una captura en el momento en que estés haciendo ping desde tu host hasta el host del compañero, y guárdala con el nombre Act-redwindows.png.