# Configuración de la red ===== Conceptos ===== ==== Parámetros de configuración ==== Para que un equipo pueda tener conectividad a nivel de red utilizando el protocolo TCP/IP necesita tener configurados cuatro elementos: * **Dirección IP**: identificador único que identifica al equipo dentro de la red. Es de la forma: x.y.z.w (con x, y, z y w entre 1 y 255). Ejemplos: 192.168.1.23, 172.16.1.103, 10.43.53.12, 121.212.3.1 * **Mascara de red**: le sirve al equipo para saber que otros equipos están en la misma red y cuales no. Ejemplos: 255.255.255.0, 255.255.0.0, etc * **Puerta de enlace**: dirección IP del equipo encargado de entregar la información cuando el destinatario no esta en mi red. En nuestra casa sería la dirección IP del router ADSL. En la red de clase el router está en la dirección 172.16.0.1 * **Servidor de DNS**: El servidor de DNS se encarga de darle a nuestro equipo la dirección IP de otro equipo al que queremos acceder y del que sólo sabemos su nombre. Por ejemplo si queremos en el navegado abrir la página de google.es el equipo le pregunta al servidor de DNS por su IP y obtendría la dirección 74.125.230.247 Además para la configuración de los servidores de DNS se suele configurar también en **sufíjo de DNS** al que se le suele asociar el **nombre de dominio de la red** a la que pertenece el equipo. Este parámetro facilitará localizar la dirección de equipos utilizando nombres cortos (sin tener que utilizar el nombre completo del equipo). Ejemplo: si hemos configurado en nuestro equipo como **sufijo de DNS** ''smr.iesharia.org'' podamos obtener la dirección del equipo con nombre ''nas.smr.iesharia.org'' escribiendo únicamente ''nas''. ==== Formas de configurar la red ==== A la hora de asignar la configuración de red a un adaptador tenemos dos opciones o formas de hacerlo: * **Asignación dinámica**: se usa cuando en la red tenemos un servidor de DHCP. El ordenador cuando arranca o de forma manual solicita para la interfaz de red obtener la configuración del servicor de DHCP utiliando el protocolo del mismo nombre. * **Asignación estática**: el administrador del equipo asigna de forma manual los parámetros de la red. La configuración se puede hacer de forma temporal para hacer pruebas o de forma permanente utilizando utilidades del sistema operativo que facilitan la configuración de la red. ==== Cambiar el nombre del equipo ==== En Ubuntu Server, para que los cambios se mantengan después de reinciar el equipo debemos editar el fichero: <code bash> /etc/cloud/cloud.cfg </code> Y modificar la línea ''preserve_hostanem'' de forma que quede: <code bash> preserve_hostname: true </code> Para aplicar el nuevo nombre ejecutamos: <code bash> $ sudo hostnamectl set-hostname nuevo-nombre </code> Que hará que el nuevo nombre se almacene en el fichero ''/etc/hostname''. Además debemos asociar el nuevo nombre a la dirección de localhost del equipo. Para ello editamos el fichero ''/etc/hosts'' y al final de la primera línea ponemos el nuevo nombre: <code bash> 127.0.0.1 localhost.localdomain localhost nuevo-nombre </code> Para que el nuevo nombre aparezca en el **prompt** del sistema sólo tenemos que salir de la sesión y volver a iniciar una nueva sesión: <code bash> $ exit </code> ===== Configuración de la red en Ubuntu/Linux ===== A la hora de configurar la red en Linux en general, hemos de tener en cuenta que a los dispositivos de red el sistema operativo les asigna un identificador cuando los detecta y carga los controladores para los mismos. Este identificador suele ser **eth0** para la primera tarjeta de red Ethernet que detecta, **eth1** para la segunda , etc. Las tarjetas de red inalámbricas suelen ser **wlan0**, **wlan1**, etc. Para averiguar los identificadores de las tarjetas de red de nuestro equipo ejecutamos: <code bash> $ ls /sys/class/net enp0s3 lo wlan0 </code> O mediante el comando ip: <code bash> $ ip addr </code> ==== Configuración desde la línea de comandos ==== === Comprobando la configuración actual === Además de saber configurar la red deberíamos ser también capaces de comprobar la configuración actual de la red. Esto incluye: * Saber que dispositivos de red están presentes en nuestro equipo * Obtener los parámetros básicos de los dispositivos de red: * Nombre * Su estado (activos o inactivos) * Dirección MAC * Parámetros de capa de red de los dispositivos * Dirección IP * Máscara de red * Puerta de enlace predeterminada * Dirección de los servidores de DNS == Listando dispositivos de red == Ejecutando: <code bash> $ ls /sys/class/net enp0s3 lo </code> == Comprobando configuración actual == Para ver la configuración actual de las tarjetas de red usando el comando **ip** ejecutamos: <code bash> $ ip addr </code> Obtendremos algo como: <code bash> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether bc:5f:f4:d0:bf:d9 brd ff:ff:ff:ff:ff:ff inet 172.16.200.1/16 brd 172.16.255.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::be5f:f4ff:fed0:bfd9/64 scope link valid_lft forever preferred_lft forever </code> Se nos muestra información como: * Los dispositivos de red presentes en nuestro equipo (lo, enp0s3) * Para cada dispositivo se muestra: * El estado del dispositivo (UP, DOWN, UNKNOW) * La dirección MAC (link/ether bc:5f:f4:d0:bf:d9) * La dirección o direcciones IP y máscaras de red IPv4 e IPv6 (si está activado). Así como el alcance de las mismas (scope host, scope global, scope link) <note tip>Si quisiéramos que se mostrara sólo la configuración de un determinado dispositivo ejecutamos: <code bash> $ ip addr show <dev> </code> </note> == Comprobando la puerta de enlace == Para comprobar la puerta de enlace predeterminada de nuestro equipo ejecutamos ''ip route''. Por ejemplo: <code bash> $ ip route default via 192.168.10.1 dev enp0s3 192.168.10.0/24 dev enp0s3 proto kernel scope link src 192.168.10.29 </code> La línea de la forma ''default via <ip> dev enp0s3'' especifica la dirección IP de la puerta de enlace predeterminada (default) configurada actualmente. == Comprobando la configuración del DNS == Podemos consultar la configuración actual ejecutando: <code bash> $ systemd-resolve --status ... Link 2 (enp0s3) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 172.16.0.1 9.9.9.9 DNS Domanin: smr.iesharia.org ... </code> ===Cambiando el estado del dispositivo=== Para desactivar (echar abajo una tarjeta de red) lo hacemos ejecutando: <code bash> $ sudo ip link set dev <dispositivo> down </code> Ejemplo: <code bash> $ sudo ip link set dev enp0s3 down </code> De forma análoga, podemos activar el dispositivo ejecutando: <code bash> $ sudo ip link set dev <dispositivo> up </code> <note>El hecho de activar o desactivar un dispositivo no hace que cambie la configuración de su IP, máscara de red y servidores de DNS, pero si se pierde la puerta de enlace predeterminada</note> === Configuración estática temporal === ==Eliminando IP asignada== Si nuestro equipo ya tiene IP, antes de asignar una nueva debemos quitar la actual. Para ello ejecutamos: <code bash> $ sudo ip addr del <ip>/<masq> dev <dispositivo> </code> Ejemplo: <code bash> sudo ip addr del 172.16.200.1/16 dev enp0s3 </code> ==Añadir dirección/mascara a dispositivo== Para asignar Ip y máscara a un dispositivo lo hacemos mediante: <code bash> $ sudo ip addr add <ip>/<masq> dev <dispositivo> </code> Ejemplo: <code bash> sudo ip addr add 192.168.1.14/24 dev enp0s3 </code> <note>Fíjate que se utiliza la notación **CIDR** para especificar la máscara de red</note> ==Configurando la puerta de enlace predeterminada== Para especificar la dirección del router que nos permite salir fuera de la red local, lo hacemos ejecutando: <code bash> $ sudo ip route add deault via <ip-router> </code> Ejemplo: <code bash> $ sudo ip route add default via 192.168.1.1 </code> ==Elimando la puerta de enlace predeterminada== En caso de que nos hayamos equivocado o queramos simplemente eliminar la puerta de enlace especificada lo podemos hacer con: <code bash> $ sudo ip route del deault via <ip-router> </code> Ejemplo: <code bash> $ sudo ip route del default via 192.168.1.1 </code> <note>Si quisiéramos eliminar todas las entradas en la tabla de enrutamiento lo podemos hacer con <code bash> $ sudo ip route flush 0/0 </code> </note> Normalmente, la configuración estática temporal la realizamos para hacer pruebas de conectividad local. No existe una forma manual de asignar los parámetros de DNS. Sólo podemos hacerlo a través de netplan. === Configuración dinámica temporal=== Para gestionar la configuración de red, de forma dinámica, desde la línea de comandos nos servimos de la utilidad **dhclient**. == Liberando configuración obtenida por DHCP == En caso de que previamente hubiéramos obtenido la configuración por DHCP nos aseguramos de liberar la configuración actual ejecutando: <code bash> $ sudo dhclient -r <dispositivo> </code> Ejemplo: <code bash> $ sudo dhclient -r enp0s3 </code> ==Obteniendo configuración por DHCP== Solicitamos obtener los parámetros de red ejecutando: <code bash> $ sudo dhclient -v <dispositivo> </code> Ejemplo: <code bash> $ sudo dhclient -v enp0s3 </code> ==== Configuración permanente ==== Si queremos configurar la red de forma que los cambios **no se pierdan al reiniciar** el equipo deberemos hacerlo utilizando la utilidad **networkd** a través de netplan o bien el **network-manager** que sólo está disponible en los equipos con entorno de escritorio. En estos apuntes veremos como configurar de forma permanente utilizando **networkd**. **Network-manager** utiliza una interfaz gráfica para configurar la red y no debería presentar muchos problemas. === Configuración estática permanente === Los pasos que debemos dar son los siguientes: * Editar el fichero de configuración: <code bash> $ sudo nano /etc/netplan/50-cloud-init.yaml </code> * **Añadimos** las siguientes lineas: <code bash> network: version: 2 ethernets: enp0s3: dhcp4: no addresses: [172.17.101.x/16] gateway4: 172.17.0.1 nameservers: search: [smr.iesharia.org] addresses: [172.17.0.1,8.8.8.8] </code> * Para **aplicar** la configuración ejecutamos: <code bash> $ sudo netplan apply </code> Si tenemos errores como resultado del comando anteriror, podemos ver con más detalle que ha pasado ejecutando: <code bash> $ sudo netplan --debug apply </code> === Configuración dinámica permanente=== Los pasos que debemos dar son los siguientes: * Editar el fichero de configuración: <code bash> $ sudo nano /etc/netplan/50-cloud-init.yaml </code> * **Añadimos** las siguientes lineas para que la configuración de red del dispositivo se cargue de forma automática: <code bash> network: version: 2 ethernets: enp0s3: dhcp4: true </code> * Para **aplicar** la configuración ejecutamos: <code bash> $ sudo netplan apply </code> ===== Configuración de red usando Ipv6 en Ubuntu ===== ==== Configuración estática temporal ==== Para añadir una dirección Ipv6 a un dispositivo ejecutamos <code bash> $ sudo ip -6 addr add <ipv6address>/<nbits-masq> dev <dispositivo> </code> Ejemplo: <code bash> $ sudo ip -6 addr add 2001:400::1:1/64 dev eth0 </code> Podemos comprobar que se ha configurado ejecutando **ip -6 addr show**. Ejemplo: <code bash> $ ip -6 addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:400::1:1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe3a:bac2/64 scope link valid_lft forever preferred_lft forever </code> <note>Recuerda que en IPv6 un dispositivo puede tener varias direcciones IPv6</note> Si quisieramos eliminar una dirección IPv6 de un dispositivo la sintaxis sería la misma cambiando **add** por **del** Ejemplo: <code bash> $ sudo ip -6 addr del 2001:400::1:1/64 dev eth0 </code> Para configurar la puerta de enlace ejecutamos: <code bash> $ sudo ip -6 route add default via <ipv6address> </code> ejemplo: <code bash> $ sudo ip -6 route add default via 2001:400::1 </code> ==== Configuración estática permanente ==== Pte actualizar!! ===== Referencias ===== * [[https://www.serverlab.ca/tutorials/linux/administration-linux/how-to-configure-network-settings-in-ubuntu-18-04-bionic-beaver/]] * [[https://devanswers.co/configure-ipv6-ubuntu-18-04/]] * [[https://ayudalinux.com/comando-ip/]]