Featured image of post Netplan

Netplan

Netplan es la nueva utilidad de Linux para la configuración de red de los sistemas. Se basa en crear un fichero de texto siguiendo las especificaciones YAML. Este fichero tiene que estar ubicado en el directorio _/etc/netplan_. Por defecto se crea el fichero _50-cloud-init.yaml_ que tendrá la primera interfaz puesta en DHCP, a no ser que durante la instalación se haya indicado lo contrario.

Netplan es la nueva utilidad de Linux para la configuración de red de los sistemas. Se basa en crear un fichero de texto siguiendo las especificaciones YAML. Este fichero tiene que estar ubicado en el directorio /etc/netplan. Por defecto se crea el fichero 50-cloud-init.yaml que tendrá la primera interfaz puesta en DHCP, a no ser que durante la instalación se haya indicado lo contrario.

Es importante destacar que YAML no funciona bien con tabuladores y que aunque no hay una especificación formal de como formatear los ficheros, mi recomendación de usar espacios y que cada subsección este separada por dos espacios del padre. También indicar que permite un formato amplio a la hora de especificar las configuraciones, muchas veces se pueden indicar en formato lineal o multi-lineal.

netplan{:height=“auto” width=“50%”}

Para modificar las interfaces, lo recomendable es cambiar la extensión de ese fichero, para que netplan no lo reconozca y crear uno nuevo, por ejemplo 01-netcfg.yaml. Este fichero es el que debería de tener toda la configuración de las interfaces, aunque se puede crear un fichero diferente por cada interfaz.

Si se tiene la misma interfaz en distintos ficheros y se les asignan IPs en cada uno, se crearan varias IPs virtuales.

Hay que tener en cuenta que netplan admite dos formas de configurar el host:

  • NetworkManager: que será utilizado cuando disponemos de entorno gráfico o dejamos que este se encarga de la configuración.
  • Systemd-networkd: será usando cuando no disponemos de entorno gráfico o cuando hacemos la configuración manualmente.

A continuación se puede ver un ejemplo de como se especifica estas formas:

1
2
3
4
5
6
7
8
9
# Opción Network Manager
network:
  version: 2
  renderer: NetworkManager

# Opción Systemd-networkd
network:
  version: 2
  renderer: networkd

IPv4

A continuación se muestra un ejemplo de un fichero de configuración con tres interfaces. La configuración de estas interfaces también se ven en la siguiente tabla:

INTERFAZIPVLAN
enp0s310.0.2.16No
enp0s8192.168.10.11100
enp0s9DHCPNo
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# This file describe the network interfaces avaliable on your system
# For more information, see netplan(5)

network:
  version: 2
  renderer: networkd
  ethernets:
    # IP FIJA
    enp0s3:
      dhcp4: no
      dhcp6: no
      addresses: [10.0.2.16/24]
      gateway4: 10.0.2.2
      nameservers:
        search: [localhost]
        addresses: [1.1.1.1, 9.9.9.9]
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# This file describe the network interfaces avaliable on your system
# For more information, see netplan(5)

network:
  version: 2
  renderer: networkd
  ethernets:
    # IP con VLAN
    enp0s8: {}
    # IP con DHCP
  vlans:
    vlans.100:
      ip: 100
      link: enp0s8
      addresses: [192.168.10.11/24]
1
2
3
4
5
6
7
8
9
# This file describe the network interfaces avaliable on your system
# For more information, see netplan(5)

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s9:
      dhcp4: true

El fichero completo seria el siguiente:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# This file describe the network interfaces avaliable on your system
# For more information, see netplan(5)

network:
  version: 2
  renderer: networkd
  ethernets:
    # IP FIJA
    enp0s3:
      dhcp4: no
      dhcp6: no
      addresses: [10.0.2.16/24]
      gateway4: 10.0.2.2
      nameservers:
        search: [localhost]
        addresses: [1.1.1.1, 9.9.9.9]
    # IP con VLAN
    enp0s8: {}
    # IP con DHCP
    enp0s9:
      dhcp4: true
  vlans:
    vlans.100:
      ip: 100
      link: enp0s8
      addresses: [192.168.10.11/24]

IPv6

También se puede configurar direcciones IPv6, la configuración es prácticamente la misma, solo hay que tener en cuenta dos cambios:

  • El formato en el que se introducen las direcciones IP en vez de colocarse en una única linea, tienen que hacerse en una linea por dirección IP.
  • La dirección IPv6 tiene que colocarse dentro de comillas.

Estos cambios no se porque son necesarios, pero es de la única forma que me ha funcionado en las pruebas realizadas.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# This file describe the network interfaces avaliable on your system
# For more information, see netplan(5)

network:
  version: 2
  renderer: networkd
  ethernets:
    # IP FIJA
    enp0s3:
      dhcp4: no
      dhcp6: no
      addresses:
        - 10.0.2.16/24
        - "3bb7::15/64"
      gateway4: 10.0.2.2
      gateway6: "3fb7::1"
      nameservers:
        search: [localhost]
        addresses: [1.1.1.1, 9.9.9.9]
    # IP con VLAN
    enp0s8: {}
    # IP con DHCP
    enp0s9:
      dhcp4: true
  vlans:
    vlans.100:
      ip: 100
      link: enp0s8
      addresses: [192.168.10.11/24]

Si no se va a usar IPv6 lo mas recomendable es desactivarlo, esto se puede hacer con los siguientes comandos de forma termporal

1
2
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Para hacer os cambios persistentes habría que añadir en el fichero /etc/sysctl.conf las siguientes lineas:

1
2
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1

Aplicar cambios

Una vez que se ha realizado la configuración necesaria, se puede comprobar que el fichero esta correctamente escrito y aplicar los cambios con los siguientes comandos:

1
2
3
4
5
# Comprobar la configuración
netplan --debug generate

# Aplicar los cambios
netplan --debug apply

Fuentes

Fuentes: 1, 2, 3

comments powered by Disqus
Esto es el footer
Creado con Hugo
Tema Stack diseñado por Jimmy