Funcionamento Básico do Netplan

Publicado por Bruno Dias em 07/03/2019

[ Hits: 11.643 ]

Blog: https://www.linkedin.com/in/bsilva-dias

 


Funcionamento Básico do Netplan



Netplan

Netplan é um utilitário de renderização, usado para configurar facilmente a rede em sistemas Linux. Você cria um arquivo .YAML das interfaces de rede e coloca a configuração das interfaces.

Esse sistema foi implementado no Ubuntu 17.10, atualmente é a nova forma de configurar a rede no Ubuntu 18.04 LTS.

Como funciona o Netplan

O Netplan na prática, pega as configurações .yaml e gera configurações backend, essa configurações backend são usadas pelo systemd-networkd por padrão, mas você pode usar outro renderizador como o NetworkManager.

No nosso exemplo vamos usar o renderizador default.

Explicando melhor o funcionamento:

Você pode criar arquivos de configuração .yaml em 3 locais distintos no seu sistema, são eles:
  1. /run/netplan/*.yaml
  2. /etc/netplan/*.yaml
  3. /lib/netplan/*.yaml

No momento da inicialização, o netplan é executado e lê um dos diretórios acima: /run/netplan/, /etc/netplan/ ou /lib/netplan/, após a leitura ele pega os arquivo .yaml e grava a configuração em /run/systemd/network/ para entregar o controle de dispositivos ao daemon de rede especificado (systemd-networkd nesse caso).

Nesse diretório é criado um arquivo para cada interface com a extensão .network. Esses arquivos contém a configuração de cada interface contendo: IP, Máscara, Gateway, DNS e nome do device.

Recapitulando:

Dentro de /run/systemd/network/ são criados vários arquivos contendo a configuração de cada interface que foi configurada no arquivo /etc/netplan/*.yaml.

Se você colocar alguma informação de layer 2 no arquivo do Netplan, dentro de /run/systemd/network/ também será criado um mesmo arquivo daquela interface, mas ao invés de termos um arquivo com extensão .network, vamos ter também outro arquivo com extensão .link.

Configurando a rede

Foi criada uma máquina virtual com 3 placas de rede, sendo elas: enp0s3, enp0s8 e enp0s9.

Vamos aos detalhes:

Você pode colocar as configurações de cada interface num mesmo arquivo, ou criar um arquivo para cada interface, eu gosto de deixar tudo no mesmo arquivo.

Há muitas formas de declarar um valor dentro do arquivo de configuração, eu vou tentar mostrar todas as formas em configurações de interfaces diferentes.

Renomeando o arquivo:

Vamos renomear o arquivo que está em /etc/netplan/, para que possamos criar o arquivo da nossa rede, mas vamos deixar o arquivo antigo lá, ele só não será usado.

# mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak

Crie um arquivo novo:

Vamos criar um arquivo personalizado, ele pode ter qualquer nome, desde que comece com número e termine com .yaml, por boas práticas, use o traço, ou underline como se fosse espaços.

# > /etc/netplan/01-my_network.yaml

Obs.: em sistemas Unix/Linux, tente nunca usar espaços, por uma questão de boas práticas, isso pode te evitar dor de cabeça no futuro.

Configuração do arquivo:

     1	network:
     2	    ethernets:
     3	        enp0s3:
     4	            addresses: []
     5	            dhcp4: true
     6	            nameservers:
     7	                addresses: []
     8	
     9	        enp0s8:
    10	            macaddress: 52:54:00:6b:3c:59
    11	            addresses:
    12	                - 192.168.10.15/24
    13	
    14	            gateway4: 192.168.10.1
    15	            dhcp4: false
    16	            nameservers:
    17	                addresses: [8.8.8.8,8.8.4.4]
    18	
    19	        enp0s9:
    20	            macaddress: 08:00:27:6A:7F:48
    21	            addresses: [192.168.200.15/24]
    22	            gateway4: 192.168.200.1
    23	            dhcp4: no
    24	            nameservers:
    25	                addresses:
    26	                    - 192.168.200.1
    27	                    - 8.8.4.4
    28     version: 2

Entendendo o arquivo:

Linha 1:
   network:
   Início da Configuração da rede;

Linha 2:
   ethernets:
   O protocolo que as interfaces atendem, tipo as interfaces são ethernets;

Linha 3
   enp0s3:
   Início da configuração de uma interface (Colocamos o nome da interface);

Linha 4
   addresses: []
   Colocamos o endereço da interface entre colchetes, pode-se especificar mais de um endereço, separando cada endereço por vírgula, como:

   addresses: [192.168.0.10/24,192.200.30.15/24]

   Caso tenha um IPv6, ele deve ser atribuído da mesma forma, mas deve ficar com aspas, como no exemplo abaixo:

   addresses: [192.168.0.10/24, ”2001:1::1/64”]

   Outra forma de atribuir um ou mais IP para uma interface é usando traço:

   addresses:
      - 192.168.0.10/24
      - ”2001:1::1/64”

   As duas formas são descritas no manual e eu particularmente prefiro essa.
   Essa atribuição é usado na sessão de DNS, agindo da mesma forma.

   Não foi especificado nenhum endereço porque vamos usar um DHCPv4;   

Linha 5
   dhcp4: true
   Aqui colocamos se vamos usar ou não o DHCP, atenção aos detalhes, para
   especificar o valor do DHCP, temos 4 formas, duas para sim (Vou usar) e duas para
   não (não quero servidor DHCP), são elas:

      dhcp4: true
      dhcp4: yes

      dhcp4: false
      dhcp4: no

   Qualquer uma das formas de uso está correta, porém, eu gosto de usar os valores
   true e false por estes estarem descritos no manual. Mas perceba que usei os dois
   no arquivo, exatamente para mostrar que você pode usar qualquer um dos dois.

   Você pode colocar dhcp6 para usar um servidor DHCP para IPv6, porém, se não for
   usar, é bom omitir para que o arquivo não fique muito poluído.

Linha 6
   nameservers:
   Aqui usamos uma “tag” chamada addresses, para indicar um ou mais IP de DNS.
   Como não tem nada, poderia remover isso da nossa conf, mas deixei lá para que
   você veja como seria.

   Exemplos de como definir DNSs:

   nameservers:
                  addresses: [8.8.8.8,8.8.4.4]

   nameservers:
                  addresses:
                     - 192.168.200.1
                       - 8.8.4.4

   Como eu disse, as duas formas de atribuição estão corretas, você usa da forma que
   achar melhor.

   nameservers:
                  addresses: []

   Indica que não vou usar DNS.

Linha 10
   macaddress: 52:54:00:6b:3c:59
   Aqui colocamos o MAC da interface, eu coloquei só para você saber que isso é
   possível, mesmo que você coloque o MAC errado na configuração, o MAC atribuído
   a interface irá sempre ser o correto, caso queira clonar o MAC, isso deve ser feito
   de outra forma.

   Obs.: Como explicado anteriormente, ao especificar um atributo de layer 2, será
   criado um um arquivo com a extensão .link dentro de /run/systemd/network/.

   Como colocamos o MAC na interface enp0s8 temos dois arquivos para essa
   interface:

      /run/systemd/network/10-netplan-enp0s8.network
      /run/systemd/network/10-netplan-enp0s8.link
   
   Esses arquivos foram criados pelo Netplan para que o systemd-networkd possa
   fazer o gerenciamento da rede.

   Conteúdo do /run/systemd/network/10-netplan-enp0s8.link

      [Match]
      OriginalName=enp0s8

      [Link]
      WakeOnLan=off
      MACAddress=52:54:00:6b:3c:59

   Conteúdo do /run/systemd/network/10-netplan-enp0s8.network

      [Match]
      Name=enp0s8

      [Network]
      LinkLocalAddressing=ipv6
      Address=192.168.10.15/24
      Gateway=192.168.10.1
      DNS=8.8.8.8
      DNS=8.8.4.4

   Como pode ver, é exatamente os dados que colocamos, mas dessa vez formatado para que o sistema entenda e possa cuidar de aplicar os dados.

Erro no version

Você pode encontrar um erro bem bobo, mas que pode lhe custar tempo e dor de cabeça, a tag version: 2 deve estar alinhada exatamente com a tag ethernets, caso esteja um espaço a mais ou a menos, quando for aplicar as configurações irá receber um erro parecido com esse:

Invalid YAML at /etc/netplan/01-my_network.yaml line 27 column 3: did not find expected key

Esse foi apenas um tutorial bem básico de como configurar a rede no Ubuntu 18.04 LTS.

Para mais detalhes não deixe de consultar as páginas de manual, vou deixar alguns links que podem ajudar bastante, há muitas opções que possam ser definidas com o Netplan, ele é bem completo e complexo no início.
Outras dicas deste autor

Erro: PacketTracer não abre no Linux Mint 18.1 [Resolvido]

Fazendo a Instalação do MySQL no Sistema CentOS 7

PacketTracer 7.1/7.2 com erro no Debian 9: bibliotecas libcrypto.so.1.0.0 e libQt5ScriptTools.so.5 não encontradas

Leitura recomendada

Cacti - Monitoramento de link em tempo real

Apache 2.2 - Modules

Dica de script de ttyrec

Habilitando UserDir no Fedora 27

Um manual mais da hora

  

Comentários
[1] Comentário enviado por frozendesigner em 11/09/2019 - 17:17h

Bruno, boa tarde, estou com dificuldades pra adaptar essa config. O aliases como ficou

iface eth0 inet static
metric 0
address 000.000.000.000
netmask 000.000.000.000
gateway 000.000.000.000

auto eth0:1
iface eth0:1 inet static
metric 1
address 000.000.000.000
netmask 000.000.000.000
gateway 000.000.000.000

auto eth1
iface eth1 inet static
address 000.000.000.000
netmask 000.000.000.000

auto eth1:1
iface eth1:1 inet static
address 000.000.000.000
netmask 000.000.000.000

auto eth1:2
iface eth1:2 inet static
address 000.000.000.000
netmask 000.000.000.000

auto eth1:3
iface eth1:3 inet static
address 000.000.000.000
netmask 000.000.000.000

auto eth1:4
iface eth1:4 inet static
address 000.000.000.000
netmask 000.000.000.000

auto eth1:5
iface eth1:5 inet static
address 000.000.000.000
netmask 000.000.000.000



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts