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

domingo, 27 de novembro de 2022

Avaliação: comparando o funcionamento das VMs no Proxmox e no Synology

Pessoal,


Um dos objetivos do meu servidor vai ser rodar VM. Especificamente Windows via VM, seja para algum jogo seja para algum programa que só tenha para Windows.

Algumas funções rodam no Ubuntu Server, mas esta VM requer poucos recursos do computador. O Windows, inegavelmente, é um consumidor muito mais feroz de recursos da máquina.

Assim, resolvi fazer um teste aqui em casa após instalar o Synology no Dell antigo.

Esse Dell é um guerreiro. É de 2012, se não me engano. É um Core i5-2430M, ou seja, da segunda geração, lançado em 2011, com litografia de 32nm. Tem 2 cores e 4 threads, cache 3MB e frequência base de 2.40GHz com turbo de até 3.0 GHz. É capaz de endereçar até 16GB de RAM do tipo DDR3 1333. Possui gráficos internos do tipo Intel HD Graphics 3000. Utiliza o socket PPGA988.

Já o outro computador, onde roda o Proxmox, usa um Core 13-4130, de 4a geração, lançado em 2013, com litografia de 22nm. Também tem 2 cores e 4 threads, cache de 3MB, mas frequência base de 3.40GHZ sem modo turbo. Esse aqui endereça até 32GB de RAM DDR3 1333 a 1600. Também possui gráficos integrados, aqui do tipo Intel HD Graphics 4400 e usa o socket FCLGA1150.

Para o teste, utilizei o Windows 11 rodando após uma limpeza do "ThisIsWin11", como mostrado neste post aqui. Ambos foram instalados usando este e este métodos (uma vez que estão rodando em máquinas que não o suportam) e rodam com 8GB de RAM e quatro núcleos.

A primeira percepção é visual. A máquina rodando no Proxmox está sensivelmente mais rápida. É funcional. Não serve para jogos (no máximo um FreeCell) mas dá para navegar e usar o Office. Já a máquina no Synology é de chorar! Lenta para começar, lenta para abrir os programas...

Entretanto o modo de acessar as máquinas no Synology é fantástico! Utilizando uma VPN (ou o QuickConnect, caso esteja usando o sistema da Synology em um NAS original), basta abrir a página do NAS e ligar a VM. A integração da VM com o sistema é melhor.

A minha dúvida era se esses processadores poderiam interferir tanto no funcionamento das VM. E eu acho que sim.

De acordo com o site CPUBenchMark, o i5-2430M faz 1244 pontos no single thread contra 1891 do i3-4130 (34,2% a menos) e faz 2016 pontos contra 3304 no CPU Mark (39% a menos). É muita coisa!



Cabe notar que esse modelo do i5, da linha "M", é focado em mobilidade (em um notebook) e gasta menos energia que o i3, focado em desempenho.

Com base no preço médio do kWh aqui em Minas Gerais em 2021 (R$ 0,62), o custo em energia elétrica comparando os dois equipamentos é mais favorável, obviamente, ao i5. Como os servidores aqui ficam ligados 24h/dia, em um ano o i5 custará R$47,52 e o i3 custará R$73,32.



Além disso, os processadores dependem de placas gráficas integradas e essas placas são de gerações diferentes. O i5 utiliza a HD Graphics 3000 e o i3 utiliza a HD Graphics 4400. É uma covardia:


Para ter ideia da diferença dessas specs para alguma coisa mais atual, vou comparar esses dois processadores com o do MacMini (i7-8700 com 6 núcleos e 12 threads, 14nm e frequência de 3.20GHz).



É possível notar que o i7 é absurdamente mais potente.

Desse modo, é importante observar o seguinte: mais importante que a quantidade absoluta de núcleos ou threads ou saber se é core i3, i5 ou i7, é fundamental saber diferenciar a geração do processador.

No meu caso, o i7 tem mais núcleos e threads e é mais novo (8a geração), mas repare que o i5 é bem menos potente que o i3 e é de duas gerações anteriores.

Outra coisa foi o comportamento do Windows antes e após rodar o removedor de bloatwares. As VMs ficam significativamente mais rápidas, tanto para iniciar quanto para abrir os programas.

Outra coisa interessante é como cada sistema "detecta" o hardware real que está por trás dele. O Proxmox reconhece o processador, ainda que suas VMs mostrem algo diferente:




Veja que enquanto o Proxmox reconhece que existe um core i3-4130 com quatro núcleos, a VM reconhece um processador "genérico" com a frequência correta e apenas 2 núcleos pra ela.

Já o Synology não reconhece o processador verdadeiro apesar que a VM que roda nele reconhece corretamente:




Veja que o Synology mostra o Intel Celeron J4125 como o processador do DS920+, com 2.39GHz de frequência e 16GB de RAM enquanto a VM mostra o core i5-2430M com 2.40GHz de frequência.

Esse Celeron J4125 é o processador do DS920+ original mas rodando a 2.0GHz de frequência. Ou seja, o sistema identifica a frequência correta mas nomeia o processador com o nome errado. E também  é interessante que o Synalogy mostre que tem 16GB no sistema, mas esse Celeron só trabalha com 8GB... O Celeron, apesar de ser de 2019, é ligeiramente inferior ao i3-4130 mas superior ao i5-2430M.

Assim, concluindo o teste: esse i5 roda o Synology muito bem, mas não dá conta de rodar o Windows 11 em VM. Talvez para navegação ou algo bem básico. E olhe lá.

É isso!

sábado, 26 de novembro de 2022

Tutorial: Como instalar o Docker e outros programas no Synology

Pessoal,


Após instalar o Synology em um notebook da Dell que estava parado aqui, fui dar uma olhada pra ver o que sistema tinha instalado.

Uma coisa muito interessante do Synology é que o sistema é bem bonito visualmente e é bem parecido com o MacOS.


Na foto acima, a Central de Pacotes contém diversos softwares prontos para serem instalados (softwares para backups e sincronizações, antivirus, File Station - para acessar os arquivos gravados nos discos -, servidor de email, servidor de página de internet, gerenciador de VM, dentre outros, ou seja, muita coisa legal).

O Painel de Controle contém tudo para criar e administrar o NAS (criar e compartilhar pastas, adicionar usuários e discos, configuração para acesso externo, etc).

O File Station, como mencionei acima, é tipo o Finder (do Mac) ou o Explorer (do Windows). Permite navegar pelas pastas e arquivos dos diversos discos do NAS.

Entretanto uma coisa me chamou a atenção: o Docker não veio instalado. Assim, fui dar uma olhada se era possível e como faria para instalar o Docker no Synology.

Primeiramente, é necessário saber que nem todos os equipamentos da Synology permitem instalação do Docker, geralmente por limitação do sistema mesmo. Segundo, existem diversas versões do Docker para os diversos equipamentos.

Assim, se você deseja ter um NAS da Synology, procure saber o que você precisará rodar e se o seu NAS irá suportar o Docker ou o programa que você deseja.

Bom, a própria Synology tem uma extensa lista com as várias versões do Docker (veja aqui).

Na verdade, a lista permite navegar em todos os aplicativos disponíveis para o Synology, sendo que alguns já estão instalados no NAS e outros, a maioria, não estão.

Assim, essa dica serve para instalar o Docker e qualquer um dos outros programas que você quiser (claro, a depender da capacidade do seu equipamento).

A lista dos programas disponíveis pode ser vista aqui, no próprio site da Synology.

Bom, vamos à instalação propriamente dita, algo absurdamente fácil!

Vá em "Centro de Pacotes" -> "Instalação Manual":


Agora, na página onde tem o Docker (esta aqui), procure a versão compatível com o seu equipamento e clique no nome para navegar na página. No meu caso, instalei a versão mais recente (20.10.3-1308):


Clicando no link, vai abrir isso aqui:


Pronto, agora clique nesse arquivo ".spk" e faça o download.

Agora, voltando ao Synology, depois que você clicou no "Instalação Manual", abriu essa página aqui:


Basta clicar aí no "Procurar" e procurar em qual pasta do seu computador você fez o download. Para continuar, clique em "Avançar". O sistema mostrará algumas informações (alguns programas podem solicitar algumas configurações).


Clique em "Concluído" e aguarde a instalação.

Pronto, só isso. Agora instale os Dockers que você quiser!

domingo, 20 de novembro de 2022

Tutorial: Instalar o Synology 7.1.1 em um computador antigo para fazer um NAS doméstico

Pessoal,


Enquanto o NAS definitivo não vem, a gente tenta se divertir com o que tem em mãos, certo?

Lá atrás eu tentei usar o Synology usando o XPEnology para instalação (aqui). Como falei na época, achei a instalação do XPEnology confusa e tive alguns problemas, inclusive limite de 4GB de arquivo. Acredito, agora, que talvez tenha sido por alguma configuração que fiz (errada, com certeza).

Assim, fuçando a internet descobri outra opção de instalação: TinyCore RedPill (veja o GitHub deles aqui).

Esse tutorial é um apanhado de várias coisas que vi li e apliquei na instalação aqui em casa.

Para começar, vamos baixar a última versão do TinyCore RedPill (no momento a 0.9.3.0, veja os releases aqui) e gravar em um pendrive (aqui estou usando o Balena Etcher).


Repare que há algumas versões, todas compactadas (usei o Keka para descompactar aqui no Mac). A versão "uefi" é para máquinas mais novas que usam esse modo de boot seguro. O meu é a segunda opção. A terceira opção (vmdk) é para quem vai usar o Synology em uma VM.

Nessa última opção, em VM, você baixa o arquivo, descompacta e utiliza esse disco diretamente (se for utilizar o VMWare ou transforma ele para ".raw" para usar no Proxmox ou algum outro gestor de VM. No caso de usar ele no Proxmox, é necessário passar ele pro PVE e depois converter de ".vmdk" para ".raw".

Para passar para o PVE, usei o FileZilla (usando a porta 22):


Depois, conectei ao PVE pelo Terminal do Mac e usei o comando abaixo para realizar a conversão:
#qemu-img convert tinycore-redpill.v0.9.3.0.vmdk tinycore.raw
Depois criei uma VM e adicionei um pendrive, conforme visto na imagem abaixo:


Por último, fiz o comando abaixo para enviar os dados do arquivo ".raw" para o disco da VM (no caso, o disco "vm-106-disk-0". Esse disco já está na pasta do PVE para onde copiamos o arquivo ".vmdk" (já que copiamos para a pasta onde ficam os disco das VMs, né?).
#dd if=tinycore.raw of=vm-106-disk-0
Pronto! Agora é só iniciar a VM e seguir as instruções a partir da hora que iniciaremos o TinyCore no computador (mais pra baixo).

Se você vai fazer a instalação em um computador real (e não em VM), vamos começar baixando o arquivo "tinycore-redpill.v09.3.0.img.gz" e descompactar para extrair a imagem e gravá-la no pendrive.

Feito isso, coloquei o pendrive na máquina e ligue. Configure seu computador para iniciar a partir do pendrive (no Dell é F12, em alguns é F8 ou F2).  Após o boot, entrará nessa tela aqui:


A partir daqui, quem está fazendo em VM começa a colocar os comando também.

Em outro computador, acesse o computador que vai virar NAS pelo SSH (Terminal, Shell, Putty ou qualquer outro que você queira usar).

Um detalhe, no meu caso eu já tinha reservado o IP dessa máquina no roteador (veja na foto acima, no primeiro quadro: "System Mani IP: 192.168.1.50". Como será um servidor, o IP dele deverá ser fixo. Cada roteador tem um modo de fazer isso (veja aqui, aqui para ASUS e aqui para TP-Link).

Caso você não saiba (ou não consiga ver) qual IP foi designado pelo DHCP server do seu roteador para o seu computador, digite "ifconfig" e veja:


Para esse acesso, use o username "tc" e a senha "P@ssw0rd". Use "ssh tc@<seuIP>" para acessar.


Agora serão alguns comandos (sim, o "./" dos comandos DEVE ser digitado). Os três primeiros serão para atualizar a lista dos arquivos e fazer a atualização do que houver de novo:
./rploader.sh upgrade
./rploader.sh update
./rploader.sh fullupgrade
Após o primeiro, repare que haverá uma nome lista de versões disponíveis:


Essa lista mostra os equipamentos da Synology e as versões do bootloader disponíveis. Vamos ter que escolher uma depois (teoricamente, você pode escolher versões que permitem 2, 4, 5 ou 6 discos, além de alguns recursos a mais a depender da versão). Assim, você pode montar um NAS excelente usando o software mais potente da Synology.

Após digitar alguns comandos, o sistema vai perguntar se você deseja atualizar os arquivos. Sempre escolha sim!


O próximo comando vai identificar o PID e VID do seu pendrive e salvar esses dados nos arquivos de configuração.
./rploader.sh identifyusb

Repare que no meu caso houve um erro. O meu pendrive é o SanDisk mas ele não conseguiu salvar no arquivo de configuração. Assim, vou fazer isso manualmente editando o arquivo user_config.json com o Vi (veja os comandos básicos do Vi aqui).



Entrando no Vi, temos que editar a parte "extra_cmdline, especificamente os valores do PID e VID. Para editar use "i" e depois de editar clique em <ESC> e use ":wq" para salvar e sair.


Coloque os valores que o comando "identifyusb" mostrou. Vai ficar assim:


O próximo comando vai gerar o número de série do equipamento e usar o MAC Address real do computador.
./rploader.sh serialgen DS920+ realmac

Aqui eu optei por usar o modelo "DS920+",  mas você pode escolher o modelo que quiser daquela lista do primeiro comando ("upgrade", lembra?).

Agora é a hora um pouco mais complicada. Vamos baixar e construir o bootloader. Pra isso, você precisa saber qual a máquina escolheu (no nosso caso, DS920+ ou DS920p - p de Plus e as opções disponíveis para essa máquina. No nosso caso, temos essas opções, baseada na lista que obtivemos lá atrás:


Outro modo de saber as opções é acessar o arquivo "custom_config.json" lá no GitHub deles (aqui) e procurar o nome mais atual correspondente ao DS920+ (o arquivo tem, hoje, 1417 linhas; dê um <CMD + F> para abrir uma caixa de pesquisa e procurar o nome).

O arquivo onde estão as opções

O tipo de informação que precisamos!

Passei muita raiva até entender isso e conseguir fazer o build corretamente. Bom, no nosso caso o próximo comando será assim:
./rploader.sh build ds920p-7.1.1-42962
Um longo download vai acontecer e uma série de verificações serão feitas. Aqui demorou uns poucos minutos. Algo mais ou menos assim:


Ao final, ficará assim:

Vejam que temos vários "OK", para deixar-nos bem felizes!!! :)

O último comando é para reiniciar a máquina.
exitcheck.sh reboot
Após reiniciar, é necessário achar o Synology na sua rede. Para tanto, use o programa "Synology Assistant", disponível na página da Synology (aqui).

Após o boot, a tela do computador ficará como abaixo. É sinal que tudo deu certo. 


Pronto! Agora é com o Synology Assistant.

Synology DS920+ "genérico" encontrado!!! :)

Para acessar o NAS, simplesmente digite o IP dele:

Lindeza!! :)

Agora vamos baixar o sistema atualizado para o NAS. Entre na página de downloads da Synology (aqui) e escolha o equipamento que você definiu lá atrás (aqui foi NAS -> DS920+ -> 7.1-42661).


Veja que eu escolhi o 7.1-42661 porque o 7.1.1-42962 só estava disponível como update. Assim, uso o download 1 e depois o download 2. O arquivo é grande, uns 400MB. Na página inicial do NAS clique em "Install" e escolha o arquivo do download 1.



Clique em "Avançar" e vá em frente. Demora uns dois ou três minutos aqui.



Depois de baixar, ele vai reiniciar algumas vezes. Vai ficar essa tela aqui embaixo. O meu voltou com menos de 4 minutos :)



Pronto! Instalado!!


Agora um detalhe: desative as atualizações automáticas. Siga as instruções e seja feliz!


Por enquanto é isso!