Usando o NetworkManager no Ubuntu Server ou Debian (e também DNSMasq via NetworkManager)
Tanto o Debian (sem interface gráfica) quanto Ubuntu Server não utilizam o Network Manager como software gerenciador de redes por padrão e para usá-lo é preciso fazer alguns passos.
O Ubuntu server utiliza o networkd juntamente com o netplan.
O Debian utiliza o interfaces (/etc/network/interfaces)
Instalar o Network Manager:
# Para uma instalação padrão:sudo apt install network-manager# ou se quiser economizar ainda mais espaço:sudo apt install network-manager --no-install-recommends
Apague os arquivos antigos (.yaml) de configuração do netplan (porque o netplan une todos os arquivos .yaml na pasta, e no final o networkd fica com prioridade sobre o NetworkManager.
# Apague todos os arquivos na pasta /etc/netplan/ - Por quê?# Porque o netplan faz uma união das configurações de todos os arquivos, e o networkd parece ter prioridade sobre o NetworkManager.sudo rm -r /etc/netplan/*
Habilite o Network Manager no Netplan (Ubuntu apenas)
# Adicione um novo arquivosudo nano /etc/netplan/network-manager.yaml# E adicione o seguinte:# Using network-manager as the main network renderer softwarenetwork: renderer: NetworkManager version: 2
E aplique as configurações do netplan com:
sudo netplan apply
Pare o networkd e reinicie o NetworkManager para deixá-lo assumir o controle das interfaces de rede:
# Desabilitando o networkd e reiniciando o NetworkManagersudo systemctl stop systemd-networkd && sudo systemctl restart NetworkManager
Arrumando o DNS
....
Extra - Instalando o dnsmasq
Por que usar o dnsmasq? Ele é mais poderoso, flexível e maduro que o DNS resolver do systemd-networkd, permite fazer cache de DNS e outras funções mais.
Por padrão o dnsmasq-base já é instalado com o NetworkManager, mas você pode ter certeza instalando-o assim:
sudo apt install dnsmasq-base
Mas qual a diferença entre dnsmasq e dnsmasq-base?
O dnsmasq-base é uma versão leve do dnsmasq que funciona integrada ao NetworkManager, dessa forma não há um serviço exclusivo para ele, se não o próprio serviço do NetworkManager.
Você pode escolher instalar o dnsmasq completo também, fica à sua escolha. Neste tutorial vamos usar apenas o dnsmasq-base.
Diga para o NetworkManager usar o dnmasq da seguinte forma:
# Adicione um arquivo novo nas configurações do Network Managersudo nano /etc/NetworkManager/conf.d/dns.conf# E insira o seguinte[main]dns=dnsmasq# Agora reinicie o Network Managersudo systemctl restart NetworkManager
Continuação para o Ubuntu e outros sistemas que estejam usando o systemd-networkd para gerenciar o DNS
Agora precisamos parar e desabilitar o systemd-networkd (pois entra em conflito com o network manager) e o systemd-resolved (pois entra em conflito com o dnsmasq).
sudo systemctl stop systemd-networkdsudo systemctl disable systemd-networkdsudo systemctl stop systemd-resolvedsudo systemctl disable systemd-resolved
Temos também que apagar o arquivo /etc/resolv.conf, pois ele é um link simbólico (symlink) para um arquivo controlado pelo systemd-networkd.
sudo rm /etc/resolv.conf
Reinicie o NetworkManager para fazer com que ele tome controle do arquivo resolv.conf
sudo systemctl restart NetworkManager
Agora visualize o arquivo resolv.conf, ele terá um comentário do NetworkManager
cat /etc/resolv.conf
A saída é algo assim (perceba o "Generated by NetworkManager", isso é importante):
# Generated by NetworkManagernameserver 127.0.1.1
Testando se o dnsmask está funcionando
Para testar se o dnsmask está funcionando, verifique se o serviço dele está escutando requisições DNS na porta 53 no ip 127.0.0.1
sudo lsof -i -P -n | grep LISTEN
E aparecerá algo tipo:
lightdm 1035 root 11u IPv4 30973 0t0 TCP *:5900 (LISTEN)sshd 1038 root 3u IPv4 28056 0t0 TCP *:22 (LISTEN)sshd 1038 root 4u IPv6 28058 0t0 TCP *:22 (LISTEN)dnsmasq 1287 nobody 5u IPv4 32930 0t0 TCP 127.0.0.1:53 (LISTEN)
Verifique se um serviço chamado systemd-resolve está ativo e escutando também na porta 53... se sim, isso significa que o systemd-resolved ainda está ligado e pode entrar em conflito com o dnsmasq, desabilite-o.
Perceba o nome dnmasq, o ip e a porta
127.0.0.1:53 (LISTEN)
Você também pode verificar em um gerenciador de tarefas como htop
sudo htop# Digite F4 e dnsmasq# aparecerá algo assim:PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command1287 nobody 20 0 19768 1236 1096 S 0.0 0.0 0:02.24 │ ├+ /usr/sbin/dnsmasq --no-resolv --keep-in-foreground
Referências
Configurando dnsmasq (mas é o dnsmasq completo, não apenas dnsmasq-base)
https://computingforgeeks.com/install-and-configure-dnsmasq-on-ubuntu/
Dnsmasq tips and tricks
https://www.linux.com/topic/networking/advanced-dnsmasq-tips-and-tricks/
Alterando configurações DNS do networkd
https://askubuntu.com/questions/1012641/dns-set-to-systemds-127-0-0-53-how-to-change-permanently
Dnsmasq using network manager
https://superuser.com/questions/681993/using-dnsmasq-with-networkmanager
Resolvendo conflitos entre dnsmasq e systemd resolved
https://unix.stackexchange.com/questions/304050/how-to-avoid-conflicts-between-dnsmasq-and-systemd-resolved