Netplan e como prepará-lo corretamente

Ubuntu é um sistema operacional incrível. Eu não trabalhava com o Ubuntu Server há muito tempo e não fazia sentido atualizar meu Desktop a partir de uma versão estável. Recentemente, tive que lidar com o lançamento do Ubuntu Server 18.04 e fiquei surpreso ao perceber que estava extremamente desatualizado e não conseguia configurar a rede, pois o sistema antigo de configuração de interfaces de rede, editando o arquivo /etc/network/interfaces, passou a ser obsoleto. O que veio em seu lugar? Algo assustador e, à primeira vista, completamente incompreensível: conheçam o «Netplan».

Para ser honesto, no início eu não conseguia entender qual era a necessidade, já que tudo era tão conveniente, mas após algumas práticas, percebi que havia seu charme. Então, basta de lirismo, vamos continuar. O que é o Netplan? É uma nova ferramenta para configuração de rede no Ubuntu; pelo menos, nunca vi algo parecido em outras distribuições. A principal diferença do Netplan é que a configuração é escrita em uma linguagem YAML, sim, sim, você não ouviu errado: YAML. Os desenvolvedores decidiram acompanhar os tempos (e, por mais que o elogie, ainda considero esta linguagem terrível). O principal problema dessa linguagem é que ela é muito sensível a espaços. Vamos examinar a configuração com um exemplo.

Os arquivos de configuração estão localizados em /etc/netplan/nome_do_arquivo.yaml; entre cada bloco, deve haver + 2 espaços.

1) O cabeçalho padrão se parece com isto:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0f0:
      dhcp4:no

Vamos analisar o que fizemos até agora:

  • network: — este é o bloco de início da configuração.
  • renderer: networkd — aqui especificamos o gerenciador de rede que estaremos usando, que pode ser networkd ou NetworkManager.
  • version: 2 — aqui, conforme entendi, está a versão do YAML.
  • ethernets: — este bloco indica que vamos configurar o protocolo Ethernet.
  • enp3s0f0: — especificamos qual adaptador de rede vamos configurar.
  • dhcp4:no — desativamos o DHCP v4; para o v6, seria dhcp6, respectivamente.

2) Vamos tentar assignar endereços IP:

    enp3s0f0:
      dhcp4:no
      macaddress: bb:11:13:ab:ff:32
      addresses: [10.10.10.2/24, 10.10.10.3/24]
      gateway4: 10.10.10.1
      nameservers:
        addresses: 8.8.8.8

Aqui estamos definindo o MAC, o IPv4, o gateway e o servidor DNS. Observe que, se precisarmos de mais de um endereço IP, devemos escrevê-los separados por vírgula, com um espaço obrigatoriamente após a vírgula.

3) E se precisarmos de bonding?

  bonds:
    bond0:
      dhcp4: no
      interfaces: [enp3s0f0, enp3s0f1]
      parameters: 
        mode: 802.3ad
        mii-monitor-interval: 1

  • bonds: — um bloco explicativo sobre o que vamos configurar no bonding.
  • bond0: — um nome arbitrário para a interface.
  • interfaces: — um conjunto de interfaces reunidas em bonding, »como mencionado anteriormente, se houver vários parâmetros, descrevemos eles entre colchetes".
  • parameters: — descrevemos o bloco de configuração dos parâmetros.
  • mode: — especificamos o modo em que o bonding funcionará.
  • mii-monitor-interval: — definimos um intervalo de monitoramento de 1 segundo.

Dentro do bloco nomeado bond também é possível configurar parâmetros como addresses, gateway4, routes, etc.

Adicionamos redundância para nossa rede, agora só falta configurar vlan e a configuração pode ser considerada finalizada.

vlans: 
    vlan10:
      id: 10
      link: bond0
      dhcp4: no
      addresses: [10.10.10.2/24]
      gateway: 10.10.10.1
      routes:
        - to: 10.10.10.2/24
          via: 10.10.10.1
          on-link: true

  • vlans: — declaramos o bloco de configuração de vlan.
  • vlan10: — um nome arbitrário para a interface vlan.
  • id: — a tag da nossa vlan.
  • link: — a interface pela qual a vlan estará acessível.
  • routes: — declaramos o bloco de descrição das rotas.
  • — to: — especificamos o endereço/sub-rede para a qual a rota é necessária.
  • via: — indicamos o gateway pelo qual nossa sub-rede estará acessível.
  • on-link: — indicamos que as rotas devem ser sempre configuradas ao ativar o link.

Observe como eu distribuo os espaços, na linguagem YAML isso é muito importante.

Aqui descrevemos as interfaces de rede, criamos o bonding e até adicionamos vlans. Vamos aplicar nossa configuração, o comando netplan apply verificará nossa configuração em busca de erros e aplicará caso tenha sucesso. Depois, a configuração será iniciada automaticamente na reinicialização do sistema.

Reunindo todos os blocos de código anteriores, aqui está o que conseguimos:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0f0:
      dhcp4: no
    ensp3s0f1:
      dhcp4: no
  bonds:
    bond0:
      dhcp4: no
      interfaces: [enp3s0f0, enp3s0f1]
      parameters: 
        mode: 802.3ad
        mii-monitor-interval: 1
  vlan10:
      id: 10
      link: bond0
      dhcp4: no
      addresses: [10.10.10.2/24]
      routes:
        - to: 10.10.10.2/24
          via: 10.10.10.1
          on-link: true
  vlan20:
    id: 20
    link: bond0
    dhcp4: no
    addresses: [10.10.11.2/24]
    gateway: 10.10.11.1
    nameserver:
      addresses: [8.8.8.8]
    

Aqui está nossa rede pronta para uso, tudo se revelou mais simples do que parecia no início e o código ficou muito bonito e legível. P.S. Obrigado por haver um ótimo manual sobre netplan no link https://netplan.io/.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster