====== [Redes] Configuración en Linux usando Netplan ====== * [[https://zurielhdez.medium.com/como-configurar-la-red-con-netplan-en-ubuntu-dfb9bd9ffc27|Como configurar la red con Netplan en Ubuntu]] * Fichero de configuración en ''/etc/netplan/algo.yaml''. El archivo de configuración o los archivos los podemos listar con $ ls /etc/netplan/ en mi caso ''algo.yaml = 01-network-manager-all.yaml''. * Con $ ip a obtendremos información de nuestras interfaces de red. En mi caso aparecen dos con los nombres de ''lo'' y ''ens3''. * Editar el fichero de configuración, por ejemplo con nano /etc/netplan/01-network-manager-all.yaml y poner la configuración deseada. Para ello se puede consultar [[https://netplan.io/examples/|Netplan configuration examples]] * [[https://blog.desdelinux.net/configuracion-red-por-terminal/|Obtener toda nuestra configuración de red con comandos]] * [[https://ayudalinux.com/comando-ip/|Cómo usar el comando IP (el sustituto de ifconfig en Debian 9)]] \\ ===== Configuración ===== **Ejemplos de configuración de red con Netplan**. La información que aquí se cita proviene principalmente de [[https://netplan.io/examples/|Netplan configuration examples]]. Para configurar netplan, guarde los archivos de configuración ''/etc/netplan/''con una extensión ''.yaml'' (por ejemplo ''/etc/netplan/config.yaml''), luego ejecute ''sudo netplan apply''. Este comando analiza y aplica la configuración al sistema. La configuración escrita en el disco en ''/etc/netplan/'' persistirá entre reinicios. ===== Usando DHCP y direccionamiento estático ===== **IP dinámica**. Para permitir que la interfaz llamada ''enp3s0'' obtenga una dirección a través de DHCP, cree un archivo YAML con lo siguiente: network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: true **IP estática**. En su lugar, para establecer una dirección IP estática, use la clave de direcciones, que toma una lista de (IPv4 o IPv6), direcciones junto con la longitud del prefijo de subred (por ejemplo, / 24). También se puede proporcionar información sobre la puerta de enlace y el DNS: network: version: 2 renderer: networkd ethernets: enp3s0: addresses: - 10.10.10.2/24 gateway4: 10.10.10.1 nameservers: search: [mydomain, otherdomain] addresses: [10.10.10.1, 1.1.1.1] ===== Conexión de múltiples interfaces con DHCP ===== Muchos sistemas ahora incluyen más de una interfaz de red. Los servidores normalmente necesitarán conectarse a múltiples redes y pueden requerir que el tráfico a Internet pase a través de una interfaz específica a pesar de que todos ellos proporcionan una puerta de enlace válida. Se puede lograr el enrutamiento exacto deseado a través de DHCP especificando una métrica para las rutas recuperadas a través de DHCP, lo que garantizará que algunas rutas se prefieran sobre otras. En este ejemplo, se prefiere ''enred'' sobre ''engreen'', ya que tiene una métrica de ruta más baja: network: version: 2 ethernets: enred: dhcp4: yes dhcp4-overrides: route-metric: 100 engreen: dhcp4: yes dhcp4-overrides: route-metric: 200 ===== Conexión a una red inalámbrica abierta ===== Netplan admite fácilmente la conexión a una red inalámbrica abierta (una que no está protegida por una contraseña), solo requiere que el punto de acceso esté definido: network: version: 2 wifis: wl0: access-points: opennetwork: {} dhcp4: yes ===== Conexión a una red inalámbrica personal WPA ===== Los dispositivos inalámbricos utilizan la clave 'wifis' y comparten las mismas opciones de configuración con los dispositivos ethernet cableados. También se deben especificar el nombre y la contraseña del punto de acceso inalámbrico: network: version: 2 renderer: networkd wifis: wlp2s0b1: dhcp4: no dhcp6: no addresses: [192.168.0.21/24] gateway4: 192.168.0.1 nameservers: addresses: [192.168.0.1, 8.8.8.8] access-points: "network_ssid_name": password: "**********" ===== Conexión a redes inalámbricas WPA Enterprise ===== También es común encontrar redes inalámbricas protegidas mediante WPA o WPA2 Enterprise, lo que requiere parámetros de autenticación adicionales. Por ejemplo, si la red está protegida mediante WPA-EAP y TTLS: network: version: 2 wifis: wl0: access-points: workplace: auth: key-management: eap method: ttls anonymous-identity: "@internal.example.com" identity: "joe@internal.example.com" password: "v3ryS3kr1t" dhcp4: yes O, si la red está protegida mediante WPA-EAP y TLS: network: version: 2 wifis: wl0: access-points: university: auth: key-management: eap method: tls anonymous-identity: "@cust.example.com" identity: "cert-joe@cust.example.com" ca-certificate: /etc/ssl/cust-cacrt.pem client-certificate: /etc/ssl/cust-crt.pem client-key: /etc/ssl/cust-key.pem client-key-password: "d3cryptPr1v4t3K3y" dhcp4: yes Se admiten muchos modos diferentes de cifrado. Consulte la página de referencia de Netplan . ===== Usando múltiples direcciones en una sola interfaz ===== La clave de direcciones puede tomar una lista de direcciones para asignar a una interfaz: network: version: 2 renderer: networkd ethernets: enp3s0: addresses: - 10.100.1.38/24 - 10.100.1.39/24 gateway4: 10.100.1.1 Los alias de interfaz (por ejemplo, eth0: 0) no son compatibles. ===== Usando múltiples direcciones con múltiples puertas de enlace ===== Al igual que en el ejemplo anterior, las interfaces con varias direcciones se pueden configurar con varias puertas de enlace. network: version: 2 renderer: networkd ethernets: enp3s0: addresses: - 9.0.0.9/24 - 10.0.0.10/24 - 11.0.0.11/24 #gateway4: # unset, since we configure routes below routes: - to: 0.0.0.0/0 via: 9.0.0.1 metric: 100 - to: 0.0.0.0/0 via: 10.0.0.1 metric: 100 - to: 0.0.0.0/0 via: 11.0.0.1 metric: 100 Dado que hay varias direcciones, cada una con su propia puerta de enlace, no especificamos gateway4aquí y, en su lugar, configuramos rutas individuales a 0.0.0.0/0 (en todas partes) utilizando la dirección de la puerta de enlace para la subred. El metricvalor debe ajustarse para que el enrutamiento se realice como se esperaba. Se puede utilizar DHCP para recibir una de las direcciones IP de la interfaz. En este caso, la ruta predeterminada para esa dirección se configurará automáticamente con un metricvalor de 100. Como forma abreviada de una entrada inferior routes, gateway4se puede establecer la dirección de puerta de enlace para una de las subredes. En ese caso, se puede omitir la ruta para esa subred routes. Su metric se establece en 100. ===== Usando Network Manager como renderizador ===== Netplan admite tanto networkd como Network Manager como backends. Puede especificar qué backend de red se debe usar para configurar dispositivos particulares usando la rendererclave. También puede delegar toda la configuración de la red al propio Network Manager especificando solo la rendererclave: network: version: 2 renderer: NetworkManager ===== Configurar la vinculación de interfaces ===== La vinculación se configura declarando una interfaz de vinculación con una lista de interfaces físicas y un modo de vinculación. A continuación, se muestra un ejemplo de un enlace de respaldo activo que usa DHCP para obtener una dirección: network: version: 2 renderer: networkd bonds: bond0: dhcp4: yes interfaces: - enp3s0 - enp4s0 parameters: mode: active-backup primary: enp3s0 A continuación se muestra un ejemplo de un sistema que actúa como un enrutador con varias interfaces vinculadas y diferentes tipos. Tenga en cuenta las declaraciones de clave 'opcional: verdadero' que permiten que se produzca el arranque sin esperar a que esas interfaces se activen por completo. network: version: 2 renderer: networkd ethernets: enp1s0: dhcp4: no enp2s0: dhcp4: no enp3s0: dhcp4: no optional: true enp4s0: dhcp4: no optional: true enp5s0: dhcp4: no optional: true enp6s0: dhcp4: no optional: true bonds: bond-lan: interfaces: [enp2s0, enp3s0] addresses: [192.168.93.2/24] parameters: mode: 802.3ad mii-monitor-interval: 1 bond-wan: interfaces: [enp1s0, enp4s0] addresses: [192.168.1.252/24] gateway4: 192.168.1.1 nameservers: search: [local] addresses: [8.8.8.8, 8.8.4.4] parameters: mode: active-backup mii-monitor-interval: 1 gratuitious-arp: 5 bond-conntrack: interfaces: [enp5s0, enp6s0] addresses: [192.168.254.2/24] parameters: mode: balance-rr mii-monitor-interval: 1 ==== Configurar puentes de red ==== Para crear un puente muy simple que consta de un solo dispositivo que usa DHCP, escriba: network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: no bridges: br0: dhcp4: yes interfaces: - enp3s0 Un ejemplo más complejo, para que libvirtd use un puente específico con un vlan etiquetado, mientras continúa proporcionando una interfaz sin etiquetar también implicaría: network: version: 2 renderer: networkd ethernets: enp0s25: dhcp4: true bridges: br0: addresses: [ 10.3.99.25/24 ] interfaces: [ vlan15 ] vlans: vlan15: accept-ra: no id: 15 link: enp0s25 Entonces libvirtd se configuraría para usar este puente agregando el siguiente contenido a un nuevo archivo XML bajo /etc/libvirtd/qemu/networks/. El nombre del puente en la etiqueta y en deben coincidir con el nombre del dispositivo de puente configurado mediante netplan: br0 ==== Adjuntar VLAN a interfaces de red ==== Para configurar varias VLAN con interfaces renombradas: network: version: 2 renderer: networkd ethernets: mainif: match: macaddress: "de:ad:be:ef:ca:fe" set-name: mainif addresses: [ "10.3.0.5/23" ] gateway4: 10.3.0.1 nameservers: addresses: [ "8.8.8.8", "8.8.4.4" ] search: [ example.com ] vlans: vlan15: id: 15 link: mainif addresses: [ "10.3.99.5/24" ] vlan10: id: 10 link: mainif addresses: [ "10.3.98.5/24" ] nameservers: addresses: [ "127.0.0.1" ] search: [ domain1.example.com, domain2.example.com ] ===== Llegar a una puerta de enlace conectada directamente ===== Esto permite configurar una ruta predeterminada, o cualquier ruta, usando la palabra clave "en el enlace" donde la puerta de enlace es una dirección IP que está conectada directamente a la red, incluso si la dirección no coincide con la subred configurada en la interfaz. network: version: 2 renderer: networkd ethernets: addresses: [ "10.10.10.1/24" ] routes: - to: 0.0.0.0/0 via: 9.9.9.9 on-link: true Para IPv6, la configuración sería muy similar, con la diferencia notable de un alcance adicional: se requiere vincular la ruta del host a la dirección del enrutador: network: version: 2 renderer: networkd ethernets: addresses: [ "2001:cafe:face:beef::dead:dead/64" ] routes: - to: "2001:cafe:face::1/128" scope: link - to: "::/0" via: "2001:cafe:face::1" on-link: true ===== Configurar el enrutamiento de origen ===== Se pueden agregar tablas de ruta a interfaces particulares para permitir el enrutamiento entre dos redes: En el siguiente ejemplo, ens3 está en la red 192.168.3.0/24 y ens5 está en la red 192.168.5.0/24. Esto permite a los clientes de cualquiera de las redes conectarse a la otra y permitir que la respuesta provenga de la interfaz correcta. Además, la ruta predeterminada todavía está asignada a ens5, lo que permite que cualquier otro tráfico la atraviese. network: version: 2 renderer: networkd ethernets: ens3: addresses: - 192.168.3.30/24 dhcp4: no routes: - to: 192.168.3.0/24 via: 192.168.3.1 table: 101 routing-policy: - from: 192.168.3.0/24 table: 101 ens5: addresses: - 192.168.5.24/24 dhcp4: no gateway4: 192.168.5.1 routes: - to: 192.168.5.0/24 via: 192.168.5.1 table: 102 routing-policy: - from: 192.168.5.0/24 table: 102 ===== Configurar una interfaz de bucle invertido ===== Networkd no permite la creación de nuevos dispositivos de bucle invertido, pero un usuario puede agregar nuevas direcciones a la interfaz de bucle invertido estándar, lo, para que se considere una dirección válida en la máquina, así como para enrutamiento personalizado: network: version: 2 renderer: networkd ethernets: lo: match: name: lo addresses: [ 7.7.7.7/32 ] ===== Integración con un servidor DHCP de Windows ===== Para redes en las que un servidor Windows proporciona DHCP, el uso de la clave dhcp-identifier permite la interoperabilidad: network: version: 2 ethernets: enp3s0: dhcp4: yes dhcp-identifier: mac ===== Conexión de un túnel IP ===== Los túneles permiten a un administrador extender redes a través de Internet configurando dos puntos finales que conectarán una interfaz de túnel especial y realizarán el enrutamiento requerido. Netplan admite túneles SIT, GRE, IP-in-IP (ipip, ipip6, ip6ip6), IP6GRE, VTI y VTI6. Un uso común de los túneles es habilitar la conectividad IPv6 en redes que solo admiten IPv4. El siguiente ejemplo muestra cómo se puede configurar un túnel de este tipo. Aquí, 1.1.1.1 es la propia dirección IP del cliente; 2.2.2.2 es la dirección IPv4 del servidor remoto, "2001: dead: beef :: 2/64" es la dirección IPv6 del cliente según lo definido por el túnel, y "2001: dead: beef :: 1" es la dirección IPv6 del servidor remoto . Finalmente, "2001: cafe: face :: 1/64" es una dirección para el cliente dentro del prefijo IPv6 enrutado: network: version: 2 ethernets: eth0: addresses: - 1.1.1.1/24 - "2001:cafe:face::1/64" gateway4: 1.1.1.254 tunnels: he-ipv6: mode: sit remote: 2.2.2.2 local: 1.1.1.1 addresses: - "2001:dead:beef::2/64" gateway6: "2001:dead:beef::1" ===== Configuración de funciones virtuales SR-IOV ===== Para las tarjetas de red SR-IOV, es posible asignar dinámicamente interfaces de función virtual para cada función física configurada. En netplan, un VF se define por tener un vínculo: propiedad que apunta al PF principal. network: version: 2 ethernets: eno1: mtu: 9000 enp1s16f1: link: eno1 addresses : [ "10.15.98.25/24" ] vf1: match: name: enp1s16f[2-3] link: eno1 addresses : [ "10.15.99.25/24" ]