Netplan no Linux: O Guia Básico para Configurar Redes com YAML

Resumo

Netplan é uma ferramenta de configuração de rede introduzida no Ubuntu 18.04 e utilizada por padrão em suas variantes, como Pop!_OS e Linux Mint. No Debian puro, o método tradicional /etc/network/interfaces ainda é o padrão, enquanto o Netplan é mais comum nas distribuições baseadas no Ubuntu. Ele atua como um frontend, lendo arquivos de configuração em /etc/netplan/ e traduzindo-os para backends como systemd-networkd ou NetworkManager. Sua principal característica é o uso da linguagem YAML, o que segundo os mantenedores facilita a configuração de redes, mas também divide opiniões entre lovers e haters.

Continuando…

Dentro de /etc/netplan, podemos ter desde um único arquivo para todas as interfaces, ou até mesmo um arquivo por interface. O uso da linguagem YAML causa pânico em muitos usuários, e eu mesmo tenho certa relutância. A indentação precisa ser perfeita, e um erro de espaço pode inutilizar a configuração. Isso sem contar os erros de sintaxe que, em alguns casos, são difíceis de identificar. Antes, para sistemas baseados em Debian, toda a configuração de rede era feita via arquivo interfaces, de forma muito fácil e raramente apresentava problemas.
O formato padrão de configuração era:

cat /etc/network/interface
# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
        address 192.168.15.201
        netmask 255.255.255.0
        gateway 192.168.15.1
# This is an autoconfigured IPv6 interface
iface eth0 inet6 auto

auto eth1
iface eth1 inet static
        address 192.168.1.1
        netmask 255.255.255.0

auto vlan10
allow-hotplug vlan10
iface vlan10 inet static
    vlan-raw-device eth1
    address 192.168.10.1
    netmask 255.255.255.0

Vejam que temos a definição da interface loopback, eth0, eth1 e vlan10.
Quando o arquivo for alterado, pode-se aplicar as novas configurações com:

# systemd modo de reiniciar um serviço
systemctl restart networking

# OU

# distribuições non-systemd ou modo legado
/etc/init.d/networking restart

Transportando a configuração acima para netplan, temos então pelo menos um arquivo .yaml com a seguinte configuração:

# Arquivo: /etc/netplan/default.yaml
network:
  version: 2
  renderer: networkd

  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.15.202/24, 2001:db::7/64]
      routes:
        - to: default
          via: 192.168.15.1
          metric: 100
      nameservers:
        addresses:
        - 10.1.2.1
        search:
        - localdomain

    eth1:
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.1.2/24

  vlans:
    vlan10:
      id: 10
      link: eth1
      addresses: [192.168.10.2/24]

Como este post é sobre o básico, vamos a algumas explicações das sintaxes utilizadas acima:

  • dhcp4/dhcp6 – Admitindo “yes” quando desejamos obter IPv4/IPv6 por DHCP, ou “no”, quando formos especificar os endereços manualmente;
  • addresses – Razoavelmente intuitiva, essa opção nos permite especificar manualmente os endereços IPv4/IPv6 da interface, podendo especificar mais de um endereço IPv4/IPv6. Note que a opção admite duas sintaxes, uma com endereços dentro de colchetes “[ ]” e separados por vírgula, e outra sintaxe onde especificamos cada endereço em uma linha;
  • routes – Aqui especificamos rotas. “to” especifica o destino, e “via” especifica o next-hop para o destino, e “metric” é o custo para o destino. Neste exemplo estamos usando uma rota default, em IPv4, mas podemos ter entradas para rota padrão em IPv6, bem como rotas para destinos específicos;
  • nameservers – Opções relacionadas a DNS, como servidor de nomes e nome de domínio vão aqui.

⚠️ Importante
Indentação e espaços em branco são a grande causa de problemas quando trabalhando com YAML. Se você já trabalhou com YAML, sabe como erros de indentação podem ser traumáticos. No Netplan, um simples espaço extra pode impedir que a rede suba corretamente. Para evitar isso, podemos usar uma ferramenta útil: o yamllint. Essa é uma SUPER DICA, utilize a ferramenta yamllint para verificar seu arquivo:

# Instalação da Ferramenta:
apt-get install yamllint

# Verificação do arquivo
yamllint /etc/netplan/default.yaml
  6:14      warning  truthy value should be one of [false, true]  (truthy)
  7:14      warning  truthy value should be one of [false, true]  (truthy)
  15:9      error    wrong indentation: expected 10 but found 8  (indentation)

Uma vez entendido o básico, vamos validar as configurações:

netplan generate
# Este comando lê os arquivos em /etc/netplan e gera a configuração necessária para o renderer

netplan try
# O netplan try permite testar as configurações antes de aplicá-las definitivamente. Ele dá um tempo de 120 segundos para confirmação, evitando que uma configuração errada te desconecte do servidor. Se algo der errado, basta esperar e o sistema reverterá para a configuração anterior automaticamente.

netplan apply
# Aplica as configurações, sem esperar por confirmação do usuário.

Caso você tenha criado o seu arquivo YAML, e não utilizado algum que tenha vindo com a distribuição, pode ser que você se depare com o seguinte erro:

WARNING: permissions for /etc/netplan/default are too open

Esse é um erro fácil de resolver, pois arquivos criados vem com a permissão 0644 por padrão, e a ferramenta espera encontrar a permissão 0600. Vamos corrigir com:

chmod 0600 /etc/netplan/00-installer-config.yaml

Não sei se notaram, mas a configuração usando o arquivo interfaces é a mesma do Server A utilizado no post anterior sobre configuração de VLAN no Linux com o comando IP, e a configuração netplan é a mesma do Server B. Prevejo que aquele setup será utilizado algumas vezes…

Finalizando

É, até que, para uma abordagem básica, vimos muita coisa, inclusive uma ferramenta para facilitar encontrar erros em arquivos YAML, e como resolver um problema comum de permissão de arquivo. Particularmente prefiro configurar interfaces no modo legado, mas as vezes temos que configurar sistemas existentes, e não podemos simplesmente alterar a ferramenta de configuração de rede, então, podemos não gostar, mas temos que entender o netplan.

E você? Já utiliza o netplan por padrão, ou tenta evitá-lo sempre que possível? Tem alguma dúvida ou sugestão? Compartilhe sua experiência nos comentários!

Referências

Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima