domingo, 25 de dezembro de 2022

Resolvido: erro no FireWall após atualização do Ubuntu Server para 22.04 LTS

Pessoal,


Pequena nota mental aqui.

Hoje fui atualizar o Ubuntu Server aqui na VM do Proxmox da 20.04 para a 22.04. Essa atualização foi com o comando:
# do-release-upgrade

Atualização demorada mas bem tranquila. O susto veio após o término. Após o reboot, dei um "apt update" e deu um monte de erro de atualização.



 Aí fui ver se estava pingando. Nada de internet.


Bom, vamos pesquisar. Achei vários lugares citando um erro na criação do arquivo "/etc/netplan/01-network-manager-all.yaml". Alguns lugares citam o nome "01-network-manager-all", outros citam "01-netcfg". No meu estava "00-netcfg". Assim, renomeei o arquivo para "01-netcfg.yaml" mas não alterei o conteúdo já que estava tudo certo:


Depois usei os comandos abaixos para gerar a configuração no sistema e aplicá-la.
# netplan generate
# netplan apply

Dei outro ping e tive o mesmo erro de falha na resolução de nomes e perda de pacotes. Sem conexão ainda. Reiniciei e nada.


Cavucando um pouco mais na internet, achei uma dica de desabilitar o firewall do Ubuntu Server usando:

# ufw disable

O resultado está aqui:


Bom, o problema está no firewall. Testei reiniciar o firewall e rebootar. Mesmo problema. Inclusive, após reiniciar a VM, desligar o firewall e religá-lo novamente, dá esse erro aqui:


Costumo usar o Console do Proxmox para acessar o shell das VM mas para algumas coisas eu prefiro usar o Terminal do MacOS. Interessante, bem interessante, que quando eu ativo o firewall do Ubuntu Server, a conexão via SSH cai. Então realmento o firewall é o vilão dessa história.

Até pensei em fazer as regras "na unha", mas aí procurei um pouco mais sobre esse erro no ufw-init e fiz os seguintes comandos:
# ufw disable
# ufw reset
E apaguei as regras todas do ufw. Depois conferi os requerimentos do ufw:
# /usr/share/ufw/check-requirements
Esse script cria várias regras para IPV4 e IPV6. Muito interessante é o que mostrou no final:


Esse  "netfilter-persistent" é parte, pelo que entendi, de um sistema firewall antigo (junto com o iptables) do Ubuntu e que foi / está sendo substituido pelo ufw (Ubuntu FireWall ou Uncomplicated FireWall). Então, parece que deu pau entre os dois nessa atualização do 20.04 para o 22.04. Vários relatos na internet e fóruns dedicados reforçam essa ideia.

Assim, vou ficar com o ufw e vou apagar o netfilter-persistent:
# apt-get remove --purge netfilter-persistent

Depois fiz o /usr/share/ufw/check-requirements novamente e a resposta agora foi outra:


Agora que o netfilter-persistent foi removido, vamos configurar o ufw com três comandos simples: os dois primeiros configuram os padrões para negar as conexões de entrada e permitir as conexões de saída; o terceiro permite conexões de entrada via SSH que por padrão utiliza a porta 22.


E agora ativamos o ufw com:
# ufw enable

No final deste post deixarei algumas referências para configurar corretamente o ufw.

Para ter certeza que tudo estava funcionando bem, rebootei o Ubuntu Server e testei a internet:


Resumindo: o ufw não conseguia iniciar (ou funcionar adequadamente) como iptables-persistent e/ou netfilter-persistent instalados. A solução era desinstalar um deles. Optei por ficar com ufw por ser mais novo e, teoricamente, mais fácil de configurar / manter / gerir.

É isso então!


Sugestão de leitura:

https://www.cyberithub.com/solved-no-internet-connection-after-installation-of-ubuntu-20-04/

https://www.reddit.com/r/Ubuntu/comments/wpwflx/no_internet_connection_after_upgrading_to_2204/

https://upcloud.com/resources/tutorials/troubleshoot-network-connectivity-linux-server

https://askubuntu.com/questions/585430/error-problem-running-ufw-init

https://www.cyberciti.biz/faq/ubuntu-22-04-lts-set-up-ufw-firewall-in-5-minutes/

https://ubuntuforums.org/showthread.php?t=1660916

https://bugs.launchpad.net/ufw/+bug/1987227

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04-pt