sexta-feira, 2 de maio de 2025

Como ter uma internet sempre estável no Debian


O Debian sempre teve problemas de rede, de conexão com a internet que, às vezes, do nada ou de alguma atualização se perde todo e não conecta mais no wifi, no fio ou em nenhum dos dois ou troca a precedência do fio pelo sem fio.

O Debian atualmente tem, basicamente, três Gerenciadores de Rede: network-manager, networking e systemd-networkd, além de outros.
Por aí já começamos a entender um dos problemas: conflitos, lutas, brigas... um se metendo na vida do outro!

Eu sei que quando se fica sem internet por causa de conflitos entre os gerenciadores não é nada engraçado ainda mais quando se pesquisa exaustivamente e não se consegue resolver o problema (parece bruxaria), aliás, o pessoal do Debian já deveria ter resolvido isso com uma reza brava.
A essas alturas do "campeonato informático", 35 anos de vida e ainda tem problemas de conexão?!?

Contudo, veremos se é possível resolver isso!
Vou logo dizendo que o Gerenciador de Rede escolhido foi o NetworkManager.
É o mais estável e não estou dizendo que os outros são ruins, nada a ver.
Passadas essas jocosidades, vamos colocar a mão no mouse.

Foi utilizado o Debian 12.

Configurar somente o NetworkManager (RECOMENDADO)

$ sudo systemctl stop networking
$ sudo systemctl disable networking
$ sudo systemctl stop systemd-networkd
$ sudo systemctl disable systemd-networkd

Caso eles insistirem em voltar e se auto-habilitarem (coisas do Debian) seja radical: desinstale-os:

$ sudo apt purge --remove networking
$ sudo apt purge --remove systemd-networkd

$ sudo apt update

O NetworkManager vem junto com a instalação, mas o que abunda não prejudica (nesse caso):
$ sudo apt install network-manager
$ sudo systemctl enable NetworkManager
$ sudo systemctl start NetworkManager

Configurando o NetworkManager para Controlar o Arquivo /etc/network/interfaces

A única mudança que faremos é caso estiver "false" em "managed", coloque "true".

Utilizo o Vim, você utilize o teu editor de texto favorito.

$ sudo vim /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile

[ifupdown]
managed=true

Salve e saia.

Inicie ou reinicie o NetworkManager:
$ sudo systemctl start NetworkManager
ou
$ sudo systemctl restart NetworkManager

Para ver o estado:
$ sudo systemctl status NetworkManager

A partir do Debian 11 se deve usar "sudo systemctl restart NetworkManager" em vez de "sudo service network-manager restart".

Não sei porque os caras não colocaram tudo em minúsculo em "NetworkManager", deve ter sido um brasileiro que teve essa idéia.

Exemplo do arquivo /ETC/NETWORK/INTERFACES para estudarmos:

$ sudo vim /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
#
# The primary - offboard
allow-hotplug enp3s0
iface enp3s0 inet dhcp
#
# The secondary - onboard
auto eno2
iface eno2 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255

Para IP estático (static) tem de ser "auto nome_placa".
Para IP dinâmico (dhcp) tem de ser "allow-hotplug nome_placa".
"auto" é para IPs estáticos e para dispositivos permanentes.
"allow-hotplug" é para IPs dinâmicos e dispositivos hotplug de rede como usb, wifi, etc.

Contribuição do meu amigo Chat GPT (apesar de que às vezes ele dá umas opiniões um tanto quanto estranhas):
"**allow-hotplug**: A interface é trazida online automaticamente quando detectada, ideal para dispositivos que podem ser conectados ou removidos (ex: USB, ou interfaces que nem sempre estão presentes).

**auto**: A interface é ativada automaticamente durante o boot, ideal para interfaces que estão sempre presentes e/ou ativas (como onboard ou IPs estáticos)."

Ordem de precedência:
Quando for placa de rede offboard com IP estático coloque "auto".
Quando for placa de rede offboard com IP dinâmico coloque "allow-hotplug".
Quando for placa de rede onboard com IP estático coloque "auto".
Quando for placa de rede onboard com IP dinâmico coloque "allow-hotplug".

Resumo:
Com IP estático coloque "auto" (a não ser que seja um servidor DHCP, daí coloque allow-hotplug mesmo com IP estático, isso é necessário porque, dependendo do hardware, estando "auto" pode acontecer de o driver da placa de rede subir depois do serviço DHCP, daí o serviço DHCP também não inicia; e com allow-hotplug iniciará automaticamente quando é detectada e o NetworkManager com as configurações abaixo controlará tudo).
Com IP dinâmico, via de regra, coloque "allow-hotplug".

Caso não for assim como acima os Gerenciadores de Rede se perdem todos e não adianta reiniciar o gerenciador, o sistema... reiniciar a vida enchendo a cara, etc.
Aliás, para entender isso o cara tem de ler vários manuais, sites, pesquisar, entender a ciência do prego e do martelo para dar uma simples martelada no prego!
E depois não entendem porque o Linux não é utilizado como desktop!

Brincadeiras à parte, o Linux não é utilizado como desktop porque ele não foi feito para isso; como desktop o Linux é muito ruim e está de boa.
Parece-me que os desenvolvedores do Linux tem um truque que somente eles sabem, porém, a esmagadora maioria deles não conseguem resolver os problemas mais básicos que afligem o Linux há 35 anos.
A famosa Liberdade também está em você escolher o sistema operacional que você quer no seu computador!

Para o Wifi não é necessário nenhuma configuração.

Testei o NetworkManager durante 3 meses até escrever essas mal traçadas linhas.
Troquei o cabo de rede entre as placas onboard e offboard sem alterar arquivos, testei com cluster, etc.

Acrescentei uma linha estranha no /etc/network/interfaces:


Reiniciei com:
$ sudo systemctl restart NetworkManager

E o que aconteceu foi que a conexão com fio caiu, óbvio, mas imediatamente o NetworManager levantou o Wifi.
Não satisfeito reiniciei o sistema inteiro com o arquivo /etc/network/interfaces do mesmo jeito.

Ao reiniciar apareceu a mensagem "Você agora está conectado ao Wired Conection..." e logo depois "Você agora está conectado ao Wifi...", ou seja, como o arquivo /etc/network/interfaces está com aquela linha toda errada ele desconsiderou e habilitou o wifi para você não ficar sem internet.

Não satisfeito desabilitei o Wifi e para minha surpresa apareceu: "Você agora está conectado a Wired conection..." e continuei com internet.

Daí fui em "Informações da Conexão" no Cinnamon para ver se não estava sendo enganado, mas lá estava:


Ou seja, o NetworkManager de alguma forma forçou o arquivo /etc/network/interfaces a funcionar mesmo com a linha errada ou ele tem suas próprias configurações.

Não satisfeito de novo derrubei a interface wlo1 (wifi):

$ sudo ifdown wlo1

Abri o navegador e continuei conectado na internet.
Veja o estado DOWN do wifi:



Não satisfeito deixei o /etc/network/interfaces assim:


Não satisfeito reiniciei o NetworkManager:

$ sudo systemctl restart NetworkManager

E o NetworkManager habilitou o wifi e conectou no wifi.

Conclusão:
De qualquer maneira que estiver o /etc/network/interfaces ele só terá precedência no wifi caso estiver certo, caso não estiver certo o NetworkManager manterá você conectado.

O porquê isso acontece deixo para você pesquisar.

O NetworkManager só não conectou quando desabilitei a rede: desmarquei "Habilitar rede".
Aí já seria impossível conectar.

Resumindo:
Caso você opte pelo NetworkManager desabilite todos os outros Gerenciadores de Rede.
O NetworkManager manterá você conectado, mas para isso você tem de deixar somente ele como Gerenciador de Rede.

Parabéns para o pessoal do NetworkManager!

https://wiki.debian.org/NetworkManager

Nenhum comentário:

Postar um comentário