Manual

do

Maker

.

com

Um pouco de prosa

Um pouco de prosa

Uma coisa chata que sempre tenho que explicar é questões do tipo "sabe usar Red-Hat?" ou "você manja de Debian, né?". Um profissional de Linux manja de Linux, depois cada distribuição tem suas ferramentas específicas.

Existe um padrão, o LSB, onde a maioria das distribuições converge; a estrutura do sistema operacional e rotina de boot, execução de binários e afins devem ser compatíveis entre as distribuições. Claro, toda a regra tem sua exceção e infelizmente estão atualmente tentando quebrar paradigmas distorcendo padrões.

O GNU/Linux (que se trata do sistema operacional como um todo e não apenas o kernel Linux) não é um UNIX por questões de patentes atreladas aos títulos que lhe confeririam esse padrão. O Windows server por sua vez, é um UNIX. Se você ficou chocado com isso, então saiba que o Android também não é um sistema operacional GNU/Linux, mas sim um sistema operacional que se utiliza do kernel Linux.

Este post fiz na intenção de deixar claro pontos importantes sobre configurações em diferentes distribuições Linux, não apresentando todas as diferenças, ferramentas e suas configurações, mas para realmente mostrar que quando se tem domínio em Linux, basta pesquisar o modo de modelá-lo conforme a distribuição escolhida.

Normalmente em CPDs existe uma tradição de adotar uma distro e não mudar mais por nada. Quando fui administrador de sistemas de um grande CPD eu fazia questão da "miscigenação" dos sistemas operacionais Linux. Lembro-me bem que na passagem do kernel 2.4 para o 2.6 as coisas ficaram bastante complicadas pois a mudança estrutural foi muito grande e fui atingido diretamente na questão de segurança de rede; precisei fazer uma integração com um banco através de uma VPN lan-to-lan utilizando IPSec e FreeSwan e o que tinha mais fácil e a mão na época era um SuSE com kernel 2.4, e assim o fiz. A VPN ficou up por anos, sem apresentar nenhum problema. Claro que durante esse período outros projetos foram implementados, onde em um CPD que imperava Conectiva inseri outras distros como o saudoso Mandrake e, o Debian. Repare agora numa coisa interessante; Conectiva, Mandrake e SuSE são distribuições baseadas em Red-Hat, sendo que todas essas tem por base o empacotamento RPM. As diferenças estão nas ferramentas de gerenciamento que hoje existem. Lembro-me bem da época que a instalação baseada em pacotes exigia um conhecimento pleno das dependências envolvidas (em torno de 1998). Com as ferramentas de gerenciamento de pacotes avançadas, tudo se tornou mais simples. As distribuições baseadas em Red-Hat adotaram o yum, o Slack tem o pkgtool, o Debian utiliza o apt. Abaixo desses gerenciados ainda tem os programas de instalação de pacotes. As distribuições como CentOS, Suse/OpenSuse e qualquer outra Red-Hat like utilizam o rpm. As baseadas em Debian, o dpkg (que aliás, tenho visto poucos dos novos usuários que a conhecem).

Enfim, em um novo projeto tive que adotar (mesmo sendo contra minha vontade, mas por necessidades específicas) Red-Hat. Alguns amam, outros (e me incluo) a odeiam. Mas existem alguns hardwares tranqueiras (eu não vou falar que a marca é HP) que não disponibilizam drivers para distribuições Linux que não seja a Micros.. digo, Red-Hat.

Não quero defender ou atacar distribuições, só vou citar que meu hardware preferido para servidores é Dell pela ótima experiência que tive por anos. Mas o que quero dizer na verdade é que subestimaram meus conhecimentos técnicos por defender Dell e Debian, como se fosse necessário ser PHD em Red-Hat para instalá-lo e configurá-lo adequadamente. E quais são afinal as principais diferenças entre RH e Debian, fora seu gerenciador de pacotes a instalação mínima ser monstruosa em um (RH) e pequena em outra (Debian)?

Configurando interfaces de rede em Debian like

Para configurar uma interface de rede em Debian utiliza-se por padrão o arquivo /etc/network/interfaces. Exclusivamente nesse arquivo se configuram todas as interfaces de rede, lo, eth, wlan; tudo. E também rotas estáticas!

Um exemplo de configuração de rede com alguns parâmetros apenas:


#configurando loopback
auto lo
iface lo inet loopback

#configurando eth0
auto eth0
iface eth0 inet dhcp

#configurando eth1
auto eth1
iface eth1 inet static
    adress 10.0.0.10
    netmask 255.255.255.0
    gateway 10.0.0.1
    post-up route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.20
    pre-down route del -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.0.20
    dns-nameservers 10.0.0.1 10.0.0.2

Essa configuração simples acima mostra como configurar interfaces, IPs estáticos e dinâmicos, gateway, dns e rotas estáticas. Tudo concentrado separado por seção.
Para configurações mais específicas, como bonding e vlan em Debian like, veja esse post sobre vlan e esse sobre bonding. Agora...

Configurando interfaces de rede em Red-Hat like

Distribuições baseadas em Red-Hat tem suas configurações de interfaces distribuídas em arquivos dentro do diretório /etc/sysconfig/network-scripts. Cada interface tem seu próprio arquivo e configurações mais complexas como vlan por exemplo, incrementam o número de arquivos por interface. A começar pelo básico, a interface eth0 no RH:
vi /etc/sysconfig/network-scripts/ifcfg-eth0

E o conteúdo:

DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.111
NETMASK=255.255.255.0
NETWORK=192.168.1.0
ONBOOT=yes

Na configuração acima, alguns parâmetros podem ser saltados pois são deduzidos automaticamente, mas sem entrar em maiores detalhes, cito um parâmetro importante que é o ONBOOT, onde a interface sobe (ou não) durante o boot.

Se tiver eth1, eth2, etc, então serão necessários os respectivos arquivos de interface (ifcfg-eth1, ifcfg-eth2, etc). Começa a ficar mais chato quando se utiliza uma configuração mais específica, como uma rota por exemplo:
vi /etc/sysconfig/network-scripts/route-eth0

E o conteúdo

GATEWAY0=192.168.1.1
NETMASK0=255.255.255.0
ADDRESS0=192.168.55.0
GATEWAY1=10.0.0.1
NETMASK1= 255.255.255.0
ADDRESS1=10.164.234.132


Dois arquivos para configurações relacionadas a uma interface. Mas dá pra piorar. Agora vamos a uma VLAN, supondo uma tag 100:


cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.100
#Edite o arquivo ifcfg-eth0.100 e modifique-o de acordo:
DEVICE=ifcfg-eth0.100
#Adicione essa linha ao final do arquivo:
VLAN=yes

Agora tem um arquivo de rotas, um arquivo da interface e um arquivo para a VLAN. E dá pra piorar, configurando bonding (ifcfg-bond0):


DEVICE=bond0
IPADDR=192.168.1.1
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BONDING_OPTS="mode=1 miimon=100"

Nesse caso, as interfaces do bonding devem ser configuradas de um modo diferente (supondo eth0 e eth1):


DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

Nesse caso, a eth0 é slave do master bond0 e não é controlável pelo usuário (USERCTL), ficando sob gerência da interface de bonding.

De modo similar, a interface eth1:


DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

Depois no arquivo modprobe.conf carrega-se o bonding e as configurações dos parâmetros (que podem ser configurados na linha do arquivo de configuração exemplificado mais acima):


alias bond0 bonding
options bond0 mode=balance-alb miimon=100

Como pode-se ver, não há obscuridade na configuração em ambas as distribuições, mas perceptivelmente em Red-Hat não é tão clean. De qualquer forma, em ambas as distribuições a maioria das configurações podem ser feitas manualmente, colocando em algum script pós-boot.

Em Suse especificamente há a possibilidade de criar um script em /etc/init.d chamado after.boot, que será executado após a carga de todo o sistema, bastanto que seja feito nos moldes dos initscripts.

Usei as configurações de interface como exemplo das diferenças entre as plataformas para poder mostrar que apesar das diferenças, o necessário mesmo são os conceitos. É importante dominar o sistema por sua base, sem se ater a ferramentas como synaptic, yast e interfaces com o usuário que o afastem dos arquivos de configuração. Quando mais puro for o conhecimento em Linux, menor será a dificuldade de implementação de um dado recurso, independente de qual seja.

Obviamente não são essas as únicas diferenças entre os sistemas. Algumas estruturas de diretório mudam, arquivos de configuração, empacotamentos, configurações do kernel (devido a patches), compilações com diferentes dependências, flags das compilações personalizadas por cada distro e um mar de outras coisas divergem. Mas todas essas coisas não são problemas. Na verdade, são pequenas adaptações. Claro, quem está focado em Debian like terá que consultar o google mais vezes do que quem está sempre com a mão na massa em RH e vice-versa.

Em suma, não tenha receio de atuar sobre nenhum Linux, porque o que mudam são os procedimentos para os mesmos resultados.

Falando de BSDs, a história já é outra...

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.