Práctica 1. Elementos básicos de la red 1. Introducción Los objetivos de esta práctica son: • • • • Aprender aspectos prácticos de TCP/IP. Familiarizarnos con el entorno de trabajo. Configurar manualmente una conexión a Internet. Montar una red básica. Las prácticas se desarrollarán sobre plataformas GNU/Linux por la gran flexibilidad que tiene para configurar redes y servidores, además de las ventajas que aporta por tratarse de software libre. Los equipos se reinstalan periódicamente. No podemos confiar en dejar archivos o configuraciones en el equipo y volverlos a encontrar en otra sesión. Los ordenadores tienen dos tarjetas de red. Una está conectada a la red de la UJI y nos da acceso a Internet. La otra tarjeta en principio no tiene nada conectado y la usaremos para hacer montajes internos. En cada equipo los nombres de los dispositivos o tarjetas de red pueden variar. En los equipos del laboratorio, debes iniciar Linux eligiendo la opción Ubuntu. La instalación de Linux sólo tiene un usuario (login usuario y contraseña practicas); esta cuenta tiene privilegios de administrador. Por favor, no modifiques la contraseña de esta cuenta porque eso puede impedir el uso del equipo en la siguiente sesión de prácticas. Inicia sesión gráfica con la cuenta usuario y abre un terminal Terminal o Konsole. 2. Conceptos básicos Introducimos resumidamente conceptos necesarios que se verán a lo largo del curso. Capa de enlace de datos Un equipo se conecta en red a través de algún dispositivo, habitualmente integrado en el hardware básico. En el laboratorio, los ordenadores se conectan mediante una red cableada ethernet. Otro modo habitual de conectar en red es el WiFi. En ambos tipos de redes, el dispositivo o tarjeta de red es mostrado por el sistema operativo a través de un nombre, por ejemplo wlan0 o eth0. El dispositivo tiene un número o dirección única asignado por el fabricante, denominado dirección MAC, o coloquialmente “la MAC”. La MAC tiene 48 bits que se escriben como 6 parejas de cifras hexadecimales. Por ejemplo, 00:18:8b:de:06:db. Los equipos conectados entre sí directamente por ethernet o WiFi forman lo que denominamos una LAN (Local Area Network) o red de área local. Son redes de capa 2 (capa de enlace de datos). Capa de red Internet es una red IP (Internet Protocol). Se trata de una red de capa 3 (capa de red) que se extiende mundialmente. Pero existen y podemos hacer otras redes de capa 3, conectadas o no con Internet. Los componentes de una red IP necesitan dispositivos de red (de capa 2 ) para poder comunicar. Las ideas fundamentales de una IP son: • Cada dispositivo conectado a la red tiene un número o dirección de protocolo IP que debe ser único en la red. La llamaremos dirección IP o simplemente, la IP. • En IPv4 (la versión 4 del protocolo IP), una IP tiene 32 bits. • Para una escritura más cómoda, la IP en IPv4 se escribe como 4 números decimales, x.y.z.k, donde cada número tiene 8 bits. Así por ejemplo, 150.128.97.91 es la IP de un ordenador de la UJI. • Grupos de direcciones IP forman una red IP. Normalmente las direcciones IP de una red IP son directamente accesibles a través de la misma red de capa 2 (en nuestro caso una LAN ethernet). • Las IPs de una red IP tienen una característica común. Todas estas direcciones tienen un mismo prefijo (un grupo de bits consecutivos, empezando por el primer bit). La denominada máscara de red indica la longitud de este prefijo. Así 192.168.27.5/21 indica una IP que forma parte de un conjunto de IPs cuyos 21 primeros bits son los mismos. La primera dirección de esta red sería la 192.168.24.0. Esta dirección no se suele asignar a ningún equipo, sino que representa la dirección de la red. Sería la dirección 192.168.24.0/21. La última dirección sería 192.168.31.255/21. También tiene un significado especial y no se asigna a los equipos. A esta dirección de la llama dirección de difusión o broadcast. • La máscara de red antiguamente solía especificarse en notación decimal similar a la de la IP, de modo que una máscara /21 se escribía como 255.255.248.0 que es un número de 32 bits con los 21 primeros a 1 y el resto a 0. • Dentro del conjunto de direcciones de Internet, existen ciertas IPs reservadas (a veces se les llama privadas) que se caracterizan por no ser nunca encaminadas dentro de Internet. Su propósito es que podamos construir otras redes IP (otras internets), separadas de Internet, y con IPs que no coincidan con IPs que puedan estar usándose en Internet (las llamadas direcciones públicas para distinguirlas de las privadas). Los prefijos de direcciones IPs privadas son: 10.x.x.x/8, 172.16.x.x/12 y 192.168.x.x/16. Es decir, que emplearemos estas IPs por ejemplo para montar una red en casa, separada de Internet, pero que podrá conectar con Internet haciendo algunas transformaciones en los mensajes. Obsérvese que las mismas IPs pueden usarse en muchos sitios, puesto que jamás se encaminan en Internet. • Los mensajes o paquetes IP se transmiten encapsulados en un protocolo de nivel inferior (ethernet, WiFi, etc.). • El nivel inferior no entiende las direcciones de IP, necesita una dirección física (dirección MAC en el caso de Ethernet). Cuando un ordenador con una IP necesita acceder a otra IP de su red, usa el nivel inferior, y a través del protocolo ARP (Address Resolution Protocol), pregunta qué ordenador tiene la IP que busca y éste le responde cuál es su dirección en el protocolo inferior, de modo que enviará los mensajes a esa dirección. El comando: ip n nos muestra las direcciones físicas de equipos de nuestra red que recientemente han intercambiado mensajes con el nuestro. Se trata de una tabla donde se “cachean” durante un breve periodo de tiempo las direcciones aprendidas. • Si una IP no es directamente alcanzable (a través de la capa 2), al menos un equipo directamente alcanzable (encaminador o router que está en nuestra red IP) se encargará de encaminar los mensajes hacia dicha IP destino. • El encaminador estará conectado a otra u otras redes con la misma situación, con lo que por inducción podemos enviar mensajes IP a través de Internet. En la práctica, para que un equipo quede conectado en una red IP es necesario: • Saber qué IP debemos asignarle. No podemos poner una IP cualquiera sino la que nos indique el administrador de la red. De hecho es habitual que la IP se asigne automáticamente desde un servidor de configuración automática (DHCP Dynamic Host Configuration Protocol), que ha sido configurado por el administrador de la red. • Que conozca qué IPs son directamente alcanzables. Es decir, conocer la máscara de nuestra red. • Qué IP actuará de puerta o router para conectarlo con otras redes IP. Este encaminador es un equipo más de nuestra red. Debemos conocer su IP, por lo tanto nos la debe facilitar el administrador de la red o también se puede configurar por DHCP. DNS (situado en la capa de aplicación) Las personas no recordamos números de 32 bits con facilidad, ni siquiera escritos en la notación decimal. Y además, dada una empresa o institución, no tenemos forma de saber, la IP de sus servidores, ya que la asignación de IPs no guarda relación con el nombre de la organización. Para resolver este problema, existe un servicio denominado DNS (sistema de nombres de dominio) que traducirá un nombre a una IP. Se trata de una base de datos distribuida y tolerante a fallos. Por ejemplo, es fácil recordar www.uji.es. El servidor de nombres lo traduce, por ejemplo, a la dirección 54.216.177.179. El DNS, pese a ser un servicio básico, opera en la capa de aplicación. Los nombres de dominio forman una estructura jerarquizada. Mirando www.uji.es, debemos leerlo como 'dominio www' (en este caso el dominio coincide con una máquina) que pertenece a uji, que pertenece a es. La consulta al DNS es un proceso automatizado a nivel de sistema operativo, pero es importante conocerlo. Supongamos que escribimos en el navegador la URL https://es.wikipedia.org. El navegador necesita saber la IP que corresponde a es.wikipedia.org. Para ello hace una llamada a una biblioteca estándar del sistema operativo. Dicha llamada realiza la resolución del nombre y para ello actúa como sigue: • • • • Accede al archivo /etc/resolv.conf. Busca en él el primer nameserver. Le pregunta a la IP de este nameserver (servidor DNS) por el dominio es.wikipedia.org. El servidor puede que tenga la IP en caché, en ese caso, nos la devuelve y listo. Si no la tiene, • Pregunta a los servidores DNS de más alto nivel quién se encarga de org. • Consulta a los servidores de 'org' cuál es el servidor de wikipedia. • Consulta al servidor de wikipedia cuál es la IP de es y nos devuelve la respuesta. En Ubuntu el fichero /etc/resolv.conf suele tener como servidor de nombres una IP de tipo 127.0.0.x. Esa IP es una dirección especial llamada que conecta con el propio ordenador. El ordenador tiene un servidor de nombres con la configuración de servidores de nombres externos. Estos servidores externos pueden verse con la orden nmcli device show (las líneas donde pone DNS). Puedes averiguar por tu cuenta cuáles son los dominios de primer nivel (es, org, com, etc.). Los de segundo nivel, en España por ejemplo, pueden alquilarse, de modo que el arrendatario obtiene los derechos de explotación de ese dominio, de ahí la palabra dominio. Existen unas empresas registradoras, que permiten dar de alta y arrendar los nombres de dominio. 3. Órdenes a utilizar en la práctica Aunque hay entornos gráficos para realizar algunas de las configuraciones que se hacen durante las prácticas, para aprender el funcionamiento es preferible usar directamente las órdenes en un terminal, los scripts y los ficheros de configuración. Por un lado, vemos exactamente los cambios que aplicamos y es más fácil restaurar el sistema. Por otro, en muchas ocasiones trabajando sobre redes nos vemos obligados a emplear únicamente un terminal y un editor simple. A continuación se presentan algunas de las órdenes que se van a utilizar. Puedes buscar más información sobre estas órdenes, pero siempre es de ayuda la orden man para consultar las opciones disponibles. • sudo su. Con esta orden pasaremos a ser administrador del sistema con la misma cuenta usuario. El carácter de espera de orden del teminal (prompt) cambia de $ a #. • ip address. Orden usada para configurar la IP de dispositivos o interfaces de red. Ejemplos (no los ejecutes): • ip address muestra la lista de dispositivos con sus MAC y las IPs asignadas. • ip link set dev eth0 up activan el dispositivo de red eth0. • ip link set dev eth0 down desactiva el dispositivo de red eth0. • ifconfig eth0 192.168.1.50 netmask 255.255.255.0 broadcast 192.168.1.255 activa y configura el dispositivo eth0 con la IP 192.168.1.50 con la máscara indicada y su correspondiente dirección de broadcast. Se borra cualquier dirección IP que tuviese antes. También añade automáticamente la ruta a la red a la que pertenece la IP configurada. (Esta orden está obsoleta). • ip address add 192.168.1.50/24 broadcast 192.168.1.255 dev eth0 configura el dispositivo eth0 con la IP 192.168.1.50 con la máscara indicada (24 bits) y su correspondiente dirección de broadcast. Un dispositivo de red puede tener asignadas más de una dirección IP. Esta orden no activa la tarjeta de red. Cuando se active la tarjeta de red (o si está activa previamente), la orden también añade automáticamente la ruta a la red a la que pertenece la IP configurada. En este ejemplo la red es 192.168.1.0/24. • ip address del 192.168.1.50/24 dev eth0 borra esa IP. La orden no desactiva la tarjeta de red. • ip route. Con esta orden se consulta o se modifica la tabla de rutas del ordenador. La tabla de rutas indica por qué dispositivo de red debe enviarse cada paquete IP según la dirección destino. Ejemplos: • ip route (ip r) muestra las rutas (de la tabla principal de encaminamiento). • ip route add 192.168.33.44/32 dev eth0 añade una ruta a esa IP (sólo a esa dirección porque se indica una máscara /32) y dice que está directamente alcanzable por eth0. • ip r a 192.168.33.44/32 via 192.168.1.56 añade una ruta a la dirección IP 192.168.33.44 a través del router con IP 192.168.1.56. La interfaz utilizada, si no se especifica, se deduce a partir de la interfaz por la que es directamente alcanzable el router. La dirección IP del router debe ser alcanzable directamente (debe haber una ruta en la tabla de rutas y de debe estar conectada por la capa de enlace de datos). • ip route add default via 192.168.1.1 añade la “ruta por defecto”, es decir, todo lo que no tiene una ruta específica se encamina por ese router. • ip route del default borra la ruta por defecto. • ping. Es la orden con la que se suele hacer la primera prueba de conectividad. Es como si jugásemos al “ping pong” con un destino. Si funciona, sabemos que puede fluir tráfico en los dos sentidos (ida y vuelta). Si no funciona, no sabemos en qué sentido está el problema (la ida al destino o la vuelta desde el destino). Veamos un ejemplo (no es para probarlo en el ordenador). Tenemos un dispositivo de red eth0 que conectamos debidamente poniendo el cable de red. Supongamos que el administrador de la red nos dice que la IP que debemos asignar a nuestro equipo es 1.2.3.4 y la red ip tiene 8 bits para diferenciar las direcciones de su red. La puerta por defecto es la primera IP de la red. Entonces, como 32-8=24, la máscara a emplear es /24, es decir los 3 primeros bytes son fijos (es el prefijo común de la red) y el último cambia para cada dirección IP de la red. Por ello, el primer equipo de la red es el 1.2.3.1, de modo que la configuración puede hacerse, siguiendo las 3 reglas expuestas en el apartado anterior: 1. ip link set eth0 up (abreviable a ip l s eth0 up). Activamos el dispositivo de red. 2. ip address add 1.2.3.4/24 dev eth0 Configura la IP y añade ruta a su red IP; podríamos comprobar los cambios con ip address e ip route. 3. ip route add default via 1.2.3.1 Configura la ruta por defecto. En ese momento podríamos hacer pruebas, en este orden (si una falla, hay que corregir la configuración antes de pasar a la siguiente): 1. ping 1.2.3.1 (ping al router). Sabríamos que la red local funciona y el router parece que existe. 2. ping 8.8.8.8 (es un equipo de Google siempre encendido). Aquí ya sabemos que tenemos acceso a Internet. 3. ping www.google.com con lo que comprobamos que la resolución DNS también funciona. 4. Configuración manual Vamos a desconfigurar la red del ordenador y luego intentaremos configurarla manualmente. Para que los ordenadores del laboratorio tengan acceso a Internet hay que autenticarse antes a través de algún navegador web. En los ejercicios se supone que inicialmente habéis abierto alguna página web ajena a la UJI. No cerréis la ventana del navegador con la que os habéis autenticado. Ejercicio 1: 1. Observa tu ordenador por detrás. Hay un cable que lo conecta a una roseta de color blanco. Las rosetas con etiquetas azules y amarillas las usaremos para montajes internos. 2. Desde el terminal, hazte administrador con la orden sudo su. 3. Comprueba la configuración de tu equipo con las órdenes ip address e ip route. La IP de la red de la UJI es del tipo 150.128.x.y. Fíjate en qué dispositivo está asignada. Puede que todos los equipos no tengan los mismos nombres para los dispositivos de red. También verás unos dispositivos especiales (por ejemplo lo y docker0) que no vamos a usar. Estos últimos son dispositivos de red virtuales. 4. Averigua y guarda la configuración de red del ordenador (IP, máscara y puerta por defecto) correspondiente a la tarjeta que conecta con la red de la UJI. 5. Anota los servidores de nombres configurados (si en el fichero /etc/resolv.conf aparece nameserver 127.0.0.1, consúltalo con nmcli dev show). 6. Vamos a desconfigurar la red. La red está configurada automáticamente por DHCP. Debes introducir la órden siguiente para evitar que el sistema de configuración automática del equipo interfiera con las órdenes manuales que daremos después: systemctl stop NetworkManager 7. Fíjate que sigues teniendo acceso a Internet ya que la tarjeta de red sigue teniendo la dirección IP. Desactiva el dispositivo de red que tiene la IP de la UJI (ip link set eth0 down, en el caso de que el dispositivo sea el eth0). Después es esto ya no debes tener acceso a Internet ni a la red local. 8. Cambia el cable de red a la otra tarjeta de red del ordenador y prueba a conectarte a Internet. No deberías tener acceso porque el servidor DHCP de la UJI no debe asignar una dirección IP a esa tarjeta. 9. Configura manualmente todos los parámetros de la red para salir a Internet con la tarjeta que acabas de conectar, usando las órdenes explicadas anteriormente en esta práctica. 10. Cuando esté configurado, comprueba que hay conectividad, mediante el comando ping, siempre en este orden: a. Primero al router 150.128.48.1 b. Después a un ordenador externo, elegimos el 8.8.8.8, servidor de nombres de Google. c. Por último a un nombre, por ejemplo wikipedia.org. 11. Vuelve a dejar el cable en la tarjeta que debe conectar con la red de la UJI de forma que volverás a tener acceso a Internet por esa tarjeta. 12. Activa la tarjeta que usabas inicialmente y desactiva la que acabas de configurar manualmente. 13. Reinicia NetworkManager para que configure la tarjeta de forma automática, usando la orden: systemctl start NetworkManager. Esto invocará al DHCP y lo configurará todo. NetworkManager puede tardar en reconfigurar la red. Si necesitáis la red podéis reiniciar el ordenador. 14. Comprueba que todo está como al principio, con un ping wikipedia.org Fin Ejercicio 1 5. Finalización de la práctica Por favor deja los equipos conectados a la red de la UJI y quita los cables adicionales. Apaga el ordenador al finalizar la clase. 6. Cuestiones Algunas cuestiones de repaso sobre la práctica. 1. ¿Cuántos bits tendría el prefijo de red de una red IP con máscara 255.255.248.0? 2. En un dispositivo o tarjeta de red, ¿podemos tener asignada más de una dirección IP? 3. ¿Crees que tener asignadas direcciones IP de la misma red IP en diferentes dispositivos del mismo ordenador puede dar problemas? 4. ¿Es necesario tener configurado un servidor DNS externo para que funcione nuestra red IP?