sábado, 18 de julho de 2020

DHCP "Server" notebook Linux

Fala pessoal, tudo bem?

É muito comum falarmos de gambiarra no mundo de T.I, mas a verdade quanto à isso é que as vezes se não fizermos isso, não conseguimos sair do outro lado e entregar o que precisamos.

Bem, pensando nisso resolvi compartilhar uma solução que já precisei utilizar e inclusive já compartilhei com um colega de trabalho que estava no mesmo cenário. Que era a necessidade de termos um servidor DHCP!



  • Cenário
Quem nunca precisou seja no ambiete de trabalho ou em algum atendimento de cambo fazer um acesso remoto para dar um reset em um equipamento, verificar o status dele, configurar ou reconfigurar, etc?

Acontece que alguns desses equipamentos quando fazemos por exemplo um reset, a configuração default inicial dele é DHCP, ou seja, o IP que você utilizava antes não funciona mais, você as vezes sequer sabe o IP que ele deveria pegar por padrão, as vezes dado a ideal muito antiga ele nem pega mais IP, fica esperando um DHCP distribuir o IP.

Bem, nem sempre temos um servidor DHCP pronto para atender essa necessidade, as vezes ela nem faz sentido no cenário do cliente.

Foi em um destes cenários onde ao fazer o reset de uma PDU (régua de tomadas) que ficava em um data center, a mesma em sua configuração default espera uma atribuição IP de um servidor DHCP.

Acontece que no ambiente do cliente não havia um servidor DHCP e nós que estavamos fazendo a atividade no local, tínhamos apenas nosso notebook.

E agora, como resolver isso? Já que precisamos reconfigurar a PDU?
  • Solução
 No meu caso eu tenho um notebook com linux, então foi necessário apenas instalar o serviço de DHCP Server com o seguinte comando:

$ sudo apt install isc-dhcp-server

Terminando a instalação, precisamos editar o arquivo /etc/default/isc-dhcp-server

É neste arquivo que informaremos por qual interface de rede iremos prover a comunicação e distribuição dos IPs.

Edite o arquivo com o editor de sua preferência:

$ sudo vi /etc/default/isc-dhcp-server  

Localizar a linha INTERFACESv4=""

E adicionar a respectiva interface. No meu exemplo, ficou a interface INTERFACESv4="enp0s25"

Obs.: Como precisaremos utilizar um cabo de rede plugado em nosso notebook direto no equipamento que precisa receber o IP via DHCP, informar a interface física do notebook.

Agora precisamos configurar nosso escopo DHCP.
O escopo DHCP nada mais é do que o intervalo de IPs de um rede que será distribuído para os hosts cliente.

Para configurar, edite o arquivo /etc/dhcp/dhcpd.conf

$ sudo vi  /etc/dhcp/dhcpd.conf 

Não vou mostrar como configurar de forma mais ampla, pois aqui a ideia é apenas configurar de forma básica para resolver o problema proposto. OK?

Encontre o seguinte block de configuração:

# This is a very basic subnet declaration.
  #subnet 10.254.239.0 netmask 255.255.255.224 {
  #range 10.254.239.10 10.254.239.20;
  #option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
  #} 

O próprio comentário informa que esta é uma declaração básica de uma subnet para que já seja possível distribuir IPs dentro da rede 10.254.239.0/27
Este /27 nos disponibiliza 30 IPs. Mais que o suficiente para ajudar a resolver nosso problema!

  • Podemos mudar esse endereço para outro?
    • Sim, neste exemplo podemos.

Mas vou manter dessa forma para não complicar muito.

Descomente as linhas, menos a linha "# This is a very basic subnet declaration.", já que é apenas um comentário.

O trecho irá ficar dessa forma:


Agora, antes de mais nada, precisamos conectar o cabo de rede na interface do notebook e na interface do outro device.

Nas configurações da interface no notebook linux com o DHCP Server instalado, vamos configurar qualquer IP dentro do intervalo que deixamos reservado. Que vai de 10.254.239.1 até 10.254.239.9. Pois ele passará a ser o ponto de distribuição do range IP 10.254.239.10 até 10.254.239.20 (range configurado para ser do DHCP).


Salve a configuração!

Por último vamos fazer o start do serviço com o comando:

$ sudo /etc/init.d/isc-dhcp-server start

Para validar se o serviço iniciou sem nenhum problema e se o outro device já pegou IP e qual IP ele pegou vamos rodar o comando com o status:

$ sudo /etc/init.d/isc-dhcp-server status


Este trecho em vermelho:


Não atrapalha em nosso teste, pois não configuramos nenhum DNS server correto, então estes são apenas exemplos que já estavam na configuração padrão. Beleza?

Olhando mais abaixo no log, podemos ver que o equipamento que estava esperando o IP DHCP, recebeu o primeiro IP do nosso range:


É possível ver o IP entregue, o mac address do equipamento cliente, hostname e por qual interface foi feita a conexão.
Deve ser a mesma que informamos no arquivo /etc/default/isc-dhcp-server.

Agora é só acessar o equipamento.


Teste de PING - OK
Teste de SSH - OK

Se o outro device fornecer uma interface Web (o que é bem comum), basta acessar a respectiva URL no navegador e fazer a atividade.

Obs.: Após reconfigurar o equipamento com o IP fixo necessário e todos os demais ajustes, ao salvar você irá perder o acesso (Nossa, mas pra que falar isso? Não é óbvio?) ...  Sim! Mas só vale ressaltar que não precisa parar todo seviço DHCP ou desfazer tudo... é só reconfigurar a sua interface física do notebook removendo o IP "Gateway" e colocar um IP no mesmo range do que foi configurado no equipamento .... era para falar apenas isso rsrs =)

Dica:
  • Preciso fazer isso para mais de um equipamento ao mesmo tempo, é possível?
    • Sim, precisa ter apenas um HUB com uma quantidade legal de portas, conectar o cabo do notebook no HUB e os demais equipamentos no HUB também;
  • Posso usar esta solução em todo tipo de equipamento?
    • Normalmente sim. Equipamentos como Servidores, Storages, PDUs normalmente possuem alguma configuração default que permite uso de DHCP ou até mesmo com um endereço IP padrão (o que facilita muito mais e não precisa desse trampo todo de instalar um DHCP Server);
Ponto de atenção:
  • Caso alguma comunicação não funcione, pode ser necessário desabilitar o serviço de firewall do seu notebook;
Setup utilizado por mim para este post:
  • DHCP Server:
    • Notebook Lenovo ThinkPad T440
    • Ubuntu 20.04 LTS
    • Cabo de rede UTP "reto", mas pode ser cross também
  • Host Client:
    • Notebook Dell Inspiron 15
    • Ubuntu 18.04.4 LTS
Abs e até a próxima!
:wq!

terça-feira, 21 de abril de 2020

TUXGUITAR - Erro java not found

Fala pessoal?

Espero que todos estejam bem mediante à pandemia que estamos enfrentando...
Não quero falar muito sobre isso, mas tenho esperança que juntos somos mais fortes e vamos passar por tudo isso!

Esses dias resolve retomar um pouco do estudo de música, pois se tem uma coisa que me deixa muito feliz e está sempre comigo, é a música.

Alguns materiais de estudo possuem arquivos com extensão .gp3, .gp4, .gp5 dentre alguns outros... estes arquivos são para Guitar Pro.
Guitar Pro é um software para Windows que reproduz estes arquivos MIDI e proporciona você a acompanhar sua tablatura/partitura. É possível colocar efeitos, instrumentos de forma conjunta, enfim, é para fazer você se sentir tocando com uma banda ou com outros instrumentos e não ficar aquele método de estudo vago.

No Linux temos o equivalente ao Guitar Pro, chamado TuxGuitar.



Para instalar no Ubuntu:

$ sudo apt-get install tuxguitar

Porém, quando fui utilizar (depois de um bom tempo, coisa de anos atrá), mesmo estando tudo atualizado, me deparei com o seguinte erro:

"/usr/bin/tuxguitar: 88: /usr/lib/jvm/java-14-oracle/jre/bin/java: not found"

Mesmo estando com Java instalado corretamente, tentando reinstalar tudo ... o mesmo erro acontecia.

- Como resolver?

Bem, depois de pesquisar e tentar várias coisas... o que resolveu no meu caso foi alterar a chamada no comando /usr/bin/tuxguitar.
Isso mesmo, analisando a chamada que era feita para o path /usr/lib/jvm/java-14-oracle/jre/bin/java, percebi que em minha instalação não existia o path em questão ... essa parte depois do jre não existia.



Esse path é criado no arquivo através da variável JAVA_HOME.
Foi necessário remover a parte do jre e pronto... o arquivo conseguiu usar corretamente o java que tenho instalado.


Trecho de onde foi feita a alteração no arquivo.

Depois disso é só abrir o TuxGuitar e estudar com seus arquivos do Guitar Pro.

Abs e até a próxima.
:wq!





quarta-feira, 25 de dezembro de 2019

Feliz Natal =)


Mais um natal...

E o blog MarinhoTI deseja à todos um feliz natal e obrigado pelo presente de estarmos mais um natal juntos!

:wq!

domingo, 24 de novembro de 2019

VirtualBox - Configuração de rede NAT DHCP


Fala pessoal, tudo bem?

A dica de hoje vai para quem costuma ou deseja utilizar o VirtualBox para seus estudos ou até mesmo para subir máquinas no seu computador pessoal para outras finalidades, como opção ao invés de dual boot, testar distribuições linux diferentes, etc.




Utilizando a configuração padrão, ao criarmos uma máquina virtual o adaptador de rede estará como NAT.
Ou seja, ele irá utilizar um IP "fictício" e a saída para os casos de internet será feito pelo seu computador, neste caso host hospedeiro.

Porém, se criarmos mais de um servidor virtual ambos ficaram com o mesmo IP (10.0.2.15).

Até aí, tudo bem. O VirtualBox consegue subir e trabalhar com essas duas máquinas virtuais mantendo o mesmo IP e ambas vão ter a saída para internet de forma normal.

Mas e se precisamos colocar estes servidor em comunicação um com o outro? Colocar ambientes e redes diferentes?
Se precisamos ou quisermos criar uma segmentação baseada por ambiente ou o mais próximo de um cenário/ambiente "enterprise" para nossos estudos?

É simples...
Basta criarmos redes NAT especificando o range IP que queremos utilizar e habilitar a função DHCP.

Para isso, vamos abrir a console de gerenciamento do VirtualBox e clicar em File - Preferences... - Network - em NAT Networks clicar no botão + (mais).
Automaticamente ele já irá cadastrar novas redes como NAT. Para alterar o nome e o range basta dar um duplo clique na rede ou selecionar e clicar no ícone edit... no lado direto.

Uma dica para chegar na configuração em questão basta utilizar o atalho de teclado Ctrl + G =)

Informar o nome que seja para este rede, como por exemplo NAT_Network_BD (imaginando que vamos criar uma rede para servidores com banco de dados), em Network CIDR informar o range IP como por exemplo 10.0.0.0/24 e selecionar o checkbox para Supports DHCP.

Obs.: Caso queira alterar uma rede NAT já em uso por alguma VM a mesma não pode estar ligada (PowerON), OK?

Segue abaixo os prints com os passos:





Depois que tudo for salvo clicando em OK, quando consultarmos novamente devemos ter a seguinte visão das redes NAT.



Agora basta ir em cada máquina virtual e atribuir a rede correspondente:


Neste exemplo, nossa rede NAT web tem o range 10.10.10.0/24, logo ao iniciarmos a máquina virtual devemos ter um IP neste range atribuído:


Para a rede NAT de banco de dados, criamos o range 10.0.0.0/24, logo, vamos validar se a máquina virtual nesta rede recebeu o IP corretamente:



Até aqui tudo funcionado!

Mas, será que eu consigo de uma rede acessar a outra agora? Ou será que essa segmentação é bem "fajuta"?

Basta testar um ping entre as VMs que estão em rede diferente:


Não encontrei na documentação do VirtualBox ou em algum fórum uma opção para criar uma regra de comunicação entre essas redes NAT.
Porém ao que parece é possível criar uma máquina virtual par ter essa função e ela passar a ser a ponte de comunicação entre as diferentes redes.

Mas de qualquer forma, este cenário apresentado nos proporciona uma segmentação e estrutura de estudos um pouco melhor do que manter todas as VMs com o mesmo IP.

Abs e até a próxima.
:wq!

domingo, 17 de novembro de 2019

Monit - Monitoração pró-ativa de processos e serviços

Bom dia pessoal, tudo bem?

Recentemente conheci uma excelente ferramenta para nosso dia-a-dia. Além de ter a função de monitoração essa ferramenta também possui por assim dizer uma automação por asssim dizer para restabelecimento de serviços dentro do SO.

A ferramenta em questão é o Monit.



Resumindo o escopo dela: Monitoração pró-ativa de processos e programas.

Nos dias de hoje, sabemos o quanto as empresas valorizam e cobram cada vez mais por ambientes com mais autonomia, procedimentos automatizados e claro, monitoração efetiva.

Agora vamos ao procedimento de instalação e alguns exemplos de monitoração e ação de correção com o Monit.

Instalação

Para distribuições baseadas em RedHat o pacote pode ser instalado através do repo EPEL:

# yum install epel-release
# yum install monit

Para distribuições baseadas em Debian, basta apenas instalar:

# apt-get install monit

Em meu lab estou utilizando o CentOS 7, com isso vou passar os passados para utilizar essa distro.

Iniciando e habilitando o serviço do Monit

# systemctl start monit
# systemctl enable monit

O arquivo de configuração do Monit encontra-se no path abaixo:

/etc/monitrc

Cenário de testes

Para fazermos os testes e demonstrar as funcionalidades, eu criei uma máquina virtual com CentOS 7 e os seguintes serviços instalados:

- WebServer Apache: Serviço respondendo na porta padrão http - tcp/80
- Banco de Dados MariaDB: Serviço respondendo na porta padrão também tcp/3306

Obs.: Ambos os serviços estão apenas instalados e iniciados, sem nenhuma configuração.

O segundo servidor também com CentOS 7 e apenas com o serviço do Monit instalado.
- Monit: Ferramenta de monitoração pró-ativa respondendo na porta 2812

Endereços IP

Monit: 10.0.0.5
App: 10.0.0.4

Exemplo de monitoração com Monit

Abaixo está a sintaxe que deve ser utilizada para monitorar processos em servidores remotos. Para o funcionamento sem a necessidade de autenticação, eu criei chaves ssh para que o servidor do Monit possa chegar no servidor de Aplicação sem necessidade de passar autenticação.

check host host.domain.name with address ip.addy.here.ip
start program = "/usr/bin/ssh user@ipaddress /etc/init.d/servico start"
stop program = "/usr/bin/ssh user@ipaddress /etc/init.d/servico stop"
if failed port 6757
then restart


No exemplo a primeira linha devemos cadastrar o nome FQDN do servidor e seu respectivo IP, as duas linhas seguintes responsáveis pelo comando de start e stop da aplicação/processo que será monitorado e em caso de falha a ação de restart.

Vale uma observação quanto a monitoração do processo SSH de forma remota, caso o serviço fique indisponível seja por queda ou por algum bloqueio no servidor destino o Monit não conseguirá intervir para tentar fazer o start do serviço, mas pode servir para alarmar e notificar. OK?

Uma dica...

Ao informarmos o hostname do servidor no formato FQDN, caso não utizemos tudo por DNS podemos criar entradas na configuração do Monit contendo o nome do servidor + o serviço ao qual estamos monitorando.

Exemplo:

server-app1-apache
server-db01-mongodb

Assim teremos uma view mais rápida e fácil de qual serviço corresponde a monitoração.

Segue o trecho de configuração do arquivo monitrc com as entradas criadas para monitorar o Apache e o MariaDB:



Na console Web do Monit, fica assim:



Caso o serviço/processo monitorado fique indisponível, o Monit tentará fazer o start novamente utilizando o comando inserido na configuração.

No próprio arquivo de configuração temos algumas linhas com exemplo de configuração, no site do Monit também... isso ajuda muito pois podemos ter variações de configuração dependendo da versão.

Site do Projeto para quem queira conhecer mais: https://mmonit.com/monit/

Até a próxima.
:wq!







sexta-feira, 8 de novembro de 2019

Pendrive bootavel com comando dd

Fala pessoal, tudo bem?

Hoje em dia é muito comum utilizarmos pendrive para instalarmos tanto o SO de nossos computadores pessoais bem como servidores e outros equipamentos enterprise.

Normalmente utilizamos algum programa para fazer a formatação do pendrive, leitura da ISO e criar todo suporte para que o mesmo seja bootavel.

Para quem utiliza linux, temos uma facilidade, não sendo necessário nenhum programa de terceiro para criar o pendrive bootavel.

Basta utilizar o comando dd

Como??

Segue a sintaxe:

Se estiver logado com usuário root - # dd if=/pathdaiso/Arquivo.iso of=/dev/sdc

Se estiver logado com usuário convencional, mas com sudo - $ sudo dd  if=/pathdaiso/Arquivo.iso of=/dev/sdc

if= deve ser informado o caminho onde está a ISO + o nome do arquivo .iso
of= o device usb (pendrive) conectado no computador

Existe a possibilidade de acompanhar o processo informando o parâmetro status=progress

 

Dica rápida...
abs
:wq!

terça-feira, 5 de novembro de 2019

Site de cursos Online

Boa tarde pessoal, tudo bem?

A dica hoje é bem rápida mas com muito conteúdo.

Segue um site bem bacana que conheci recentemente com vários cursos gratuitos e pagos...



Lembre-se:

"... Conhecimento nunca é demais, compartilhar conhecimento é uma coisa incrível pois aprendemos mais ainda e não podemos nunca parar de aprender/querer aprender ..."

Abs e até a próxima..
:wq!