Domingo, 24 Febrero 2019 11:33

Configuración de la red con netplan, base y trucos Destacado

Escrito por
Valora este artículo
(0 votos)

Configurar la red en modo gráfico (versión Ubuntu Desktop)

Realmente lo más interesante para un administrador de sistemas es saber configurar la red desde consola -como se explicará posteriormente-, teniendo claros estos conocimientos podrás configurar la red en cualquier distribución con entorno o sin entorno gráfico como son las ediciones "Server" de Ubuntu y de cualquier Debian o derivado. A continuación aprenderemos cómo configurar una interfaz de red (tarjeta de red) en Ubuntu con el objetivo de poder comprobar y solucionar posibles problemas de conectividad en un momento dado. Esta labor es básica y muy habitual en trabajos de auditoría y seguridad de red con distribuciones como kali linux, wifislax, etc.. Antiguamente una configuración modo texto con el demonio networkd era incompatible con otra en modo gráfico con NetworkManager o wicd, pero desde la versión 17.10 gracias a netplan pueden coexistir a la vez.

La configuración de las interfaces de red desde versión 12.04 Desktop y posteriores, se realiza desde:

  • Configuración del sistema (icono de rueda dentada con llave inglesa) → opción Red (flechas amarillas de la imagen) 
  • o con el applet del network-manager (flechas rojas y verdes de la imagen)
network-manager-applet

Como ya sabes, la dirección IP de una interfaz de red (tarjeta o adaptador de red) puede ser establecida de forma manual, o de forma automática utilizando un servidor DHCP (acrónimo en inglés de Dynamic Host Configuration Protocol  protocolo de configuración dinámica de máquina). El servicio DHCP asigna la dirección IP a la interfaz así como toda la configuración necesaria: máscara, puerta de enlace, servidores de dns a utilizar, etc.

Por defecto, la configuración de la interfaz está establecida de forma automática, para facilitar la conexión del equipo con un router para salir a Internet. Pero, si por algún motivo, necesitas establecer la configuración de red de forma manual, también es posible hacerlo en Linux modo gráfico. Te invito a que veas los primeros 10 minutos del siguiente vídeo para aprender a hacerlo de manera gráfica:

QR Code - 04_Configuracion de red en Linux virtualizado - parte1 - bridge

Lo normal cuando vemos las conexiones del equipo por comando (ip addr o ifconfig) es que te encuentres con dos dispositivos de red:

  • Interfaz de bucle local (lo).
  • Interfaz Ethernet (ens# o eno# o enp#s# o eth# dependiendo del hardware y de la versión de Ubuntu).

La interfaz de bucle local está referida a nuestra propia máquina, y su dirección IP siempre es 127.0.0.1; es una dirección IP reservada que tienen todos los equipos que se utiliza para establecer conexiones entre los propios programas de los mismos.

La interfaz Ethernet es realmente la que se corresponde con la tarjeta de red instalada físicamente en tu equipo y a través de la cual, tienes conexión a la red cableada mediante el correspondiente cable de red.

Ficheros de configuración y reinicio del servicio de red

Los ficheros de configuración de red en las distribuciones basadas en Debian se guardan en /etc/netplan/. Hay que editarlos como root y guardar los cambios.

Después hay que reiniciar el servicio de red con el comando:

$ sudo netplan apply     #Para ver información de dicho reinicio recomiendo añadir la opción --debug

o también

$ sudo systemctl restart NetworkManager   #Puedes cambiar la palabra restart por stop o start o status para ver el estado del servicio

Configuración por defecto con NetworkManager en Ubuntu Desktop

En Ubuntu Desktop el fichero que viene por defecto es /etc/netplan/01-network-manager-all.yaml y utiliza NetworkManager como gestor de red o renderer por defecto; no obstante si por cualquier circunstancia no estuviese podríamos copiar la plantilla que incorpora el programa para estos casos:

$ sudo cp /usr/share/doc/netplan.io/network_manager.yaml /etc/netplan/

o también

$ sudo netplan generate     

que generaría automáticamente la configuración requerida. La ventaja de NetworkManager es que administra todos los dispositivos de red automáticamente, de manera que cualquier dispositivo Ethernet que añadamos en caliente, será reconocido y tendrá DHCP una vez que se detecte que hay señal en la tarjeta. Networkd, renderer por defecto en Ubuntu Server/Cloud no tiene esta cualidad por lo que seguiremos utilizando NetworkManager como renderer aunque aprenderemos a configurarlo editando el fichero con la terminal.

Configurar la red en modo terminal (por defecto en Ubuntu Server/Cloud)

Configuración con networkd

En Ubuntu Server y Cloud los ficheros que vienen por defecto son 01-netcfg.yaml y 50-cloud-init.yaml respectivamente. Ambos utilizan el demonio systemd-networkd como gestor de red o renderer por defecto y al no disponer de gráficos deberemos configurar los parámetros de red en dichos ficheros. Vamos a aprender cómo se haría pero utilizando

renderer: NetworkManager

en vez de

renderer: networkd

Dirección IP dinámica (cliente de DHCP también llamado dhclient)

Si queremos utilizar DHCP (configuración de red automática) para una interfaz ethernet identificada como ens33, una configuración podría ser:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:
      dhcp4: true

Nota: Presta especial atención a los espacios: barra espaciadora o tabulador, no os recomiendo mezclarlos dado que la edición de ficheros yaml tiene la peculiaridad que no es lo mismo un espacio+tabulador que 2 espacios, y si un cierto parámetro debe estar a la altura de otro/s puede que netplan no lo coja. Por ejemplo esta configuración nos daría un error en línea 4 y la que está movida es la 6:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:
    dhcp4: true

Es por ello que vuelvo a recomendar utilizar la plantilla antes de editar

$ sudo cp /usr/share/doc/netplan.io/dhcp.yaml /etc/netplan/

Dirección IP estática

Si queremos configurar IP estática en ens33 y dinámica en ens38 por ejemplo:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens33:
      dhcp4: true
    ens38:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.110/24, ]
      gateway4: 192.168.1.1
      nameservers:
              addresses: [8.8.4.4, 208.67.222.222]

$ sudo netplan --debug apply  #Aplicar configuración
$ sudo ip addr 
#Ver configuración de las tarjetas
$ sudo ip route 
#Ver tabla de enrutamiento
$ sudo systemd-resolve --status  #Ver configuración de servidores DNS utilizados
$ netplan ip leases ens33  
#Ver concesiones hechas a la interfaz ens33

Cliente de DNS

El archivo de configuración de los servidores de nombres es /etc/resolv.conf, un contenido de ejemplo podría ser:

nameserver 8.8.4.4
nameserver 208.67.222.222

Un cliente DNS irá preguntando a los servidores de nombres por orden de aparición en el fichero. Esto no ha cambiado, pero como desde versión 17.10 Ubuntu incorpora un servidor interno de DNS con caché llamado systemd-resolved (también lo llaman DNSStub o nameserver 127.0.0.53 y para terminar de liarlo corre con el usuario "systemd-resolve"), encontraréis que por defecto el fichero resolv.conf es un acceso directo a los DNS que este programa mantiene en /run/systemd/resolve/stub-resolv.conf. En la cabecera de dicho fichero podéis ver el comando:
$ systemd-resolve --status
muy útil para ver qué configuración de cliente DNS se está aplicando a nivel general y por tarjeta: ésta es la principal ventaja de dejarlo como está (uso particularizado de servidores de DNS por tarjeta):

nameserver 127.0.0.53  
search localdomain

Comando ip

Este comando permite la gestión de la red en tiempo real en el equipo, si queremos que nos muestre las interfaces:

$ ip addr

$ ip a

Si queremos ver la tabla de rutas o rutas hacia una IP concreta:

$ ip route

$ ip r

$ sudo ip route get 8.8.8.8

 Asimismo con ip podemos configurar una ip con dirección de broadcast directamente:

$ sudo ip addr add 192.168.1.110/24 brd + dev ens33

eliminar dicha configuración

$ sudo ip addr del 192.168.0.110/24 dev ens33

deshabilitar interfaz

$ sudo ip link set dev ens33 down

establecer una ruta de conexión por defecto

$ sudo ip route add default via 192.168.1.1

y ver estadísticas de la red

$ ip -s link

Para más info: https://ayudalinux.com/comando-ip/

route (necesario instalar paquete net-tools)

Imprime la tabla de rutas del sistema. Donde ponga la ruta default o 0.0.0.0, tendrá que aparecer la puerta de enlace G, es decir la dirección IP del router. Se pueden añadir manualmente con route add, y borrar con route delete (Ejemplos: route add default gw 10.0.0.1, route add -host 192.168.10.12 gw 10.0.0.1, route add -net 80.0.0.0 netmask 255.0.0.0 dev ens33)

$ route

$ route -n    // este funciona más rápido porque obligamos a que no haga resolución de nombres

Comprobar funcionamiento de red

ping

Para comprobar que tenemos red, lo mejor es hacer un ping a un sitio de internet. Si falla, probaremos a poner una dirección IP en lugar de un nombre.

$ ping 8.8.8.8  #en Linux está enviado paquetes hasta que no se para con Ctrl+C

$ ping -c5 google.es #envía 5 paquetes al destino

traceroute

Para observar los saltos que hay hasta un determinado lugar. Por defecto no viene instalado en muchas distribuciones, habrá que instalarlo (apt install traceroute).

$ traceroute google.es

netstat

netstat muestra las conexiones que se están usando en la tarjeta de red. Para saber los puertos abiertos en el sistema:

$ netstat –lant

-l    muestra conexiones que están escuchando

-a    muestra todas las conexiones

-n    muestra ips en lugar del nombre

-t    sólo muestra conexiones tcp

-p    muestra el identificador del proceso que está usando el puerto

arp

Muestra la tabla caché de arp. Las direcciones mac aprendidas. Con –d podemos borrarla, con –s añadir entradas estáticas

$ arp

Cambiar el nombre del equipo en Ubuntu en 2 pasos sin reiniciar

Tal y como explico en este vídeo: https://www.youtube.com/watch?v=SeYkx8cQMMk para cambiar el nombre de un host en Ubuntu vamos a modificar el fichero /etc/hosts, en la línea donde asocia 127.0.1.1 al nombre del equipo, hay que sustituir el antiguo por el nuevo-nombre-del-host. Posteriormente hay que ejecutar

$ sudo hostnamectl set-hostname nuevo-nombre-host

Búsquedas estáticas con /etc/hosts y /etc/resolv.conf

Hemos hablado del fichero /etc/hosts porque este fichero se utiliza para resolver nombres por IPs de manera fija o estática. Si nuestro host pertenece a una red con dominio habría que copiar el FQDN o nombre completo de nuestro servidor en dicho fichero, por ejemplo, si nuestra máquina se llama ubuntu-vm, tiene la IP 192.168.13.128 y además pertenece a la red/dominio delarioja.org habría que copiar en el /etc/hosts la siguiente línea:

192.168.13.128  ubuntu-vm.delarioja.org   ubuntu-vm

De esta manera tanto un ping a ubuntu-vm como a ubuntu-vm.delarioja.org haría que se emitiesen paquetes con IP destino 192.168.13.128.

Ya sabemos que si queremos hacer que la máquina consulte nombres con un servidor en particular, simplemente se agrega la dirección al archivo /etc/resolv.conf. Por ejemplo si se desea realizar búsquedas con el servidor DNS 192.168.13.1, se debe tener un archivo resolv.conf de esta manera:

nameserver 192.168.13.1
search delarioja.org

En este caso el search delarioja.org causa que las búsquedas de nombres de host (hostnames) que no tengan dominio tengan delarioja.org por defecto añadido. Por eso si hacemos ping al host fernando-pc el sistema intentará resolver el nombre fernando-pc y si no da con él, probará con fernando-pc.delarioja.org para dar con su IP.

Visto 12235 veces Modificado por última vez en Domingo, 24 Febrero 2019 12:18
Fernando Barcina

Autor y director de la web

Deja un comentario

Asegúrese de introducir toda la información requerida, indicada por un asterisco (*). No se permite código HTML.