Revista Do Linux
 
EDIÇÃO DO MÊS
 CD do Mês

 Capa
 Entrevista
 Corporativo
 Programação
 Segurança
 Ferramenta
 Produto
 Hardware
 

Como colocar máquinas em rede

Continuando a jornada pelo /etc, iniciaremos este mês uma série de artigos que tratarão da rede do Linux

Nas edições anteriores, Henrique Cesar Ülbrich apresentou ao leitor um diretório-chave no Linux: o /etc. Nesta série de artigos vimos que o /etc é um diretório especial, onde diversos programas (e o próprio sistema) guardam suas configurações. Vimos também que, infelizmente, nem todas as distribuições Linux seguem o LSB (Linux Standard Base) e o FHS (File Hierarchy Standard), o que faz com que muita coisa seja diferente entre distribuições, por isso, muitos detalhes cobertos nesta série podem ser ligeiramente diferentes em seu sistema.

Nesta edição, falaremos sobre as configurações mais simples de rede.

A maioria dos exemplos neste artigo não irá conter o texto completo dos arquivos, devendo o leitor procurar seus próprios arquivos em seu sistema.

Colocando uma máquina na rede

Embora possa parecer complexo, o trabalho de colocar uma máquina na rede é, na verdade, bastante simples, usando-se para isso apenas um bom editor de textos como o GNU Emacs.

No final deste capítulo, teremos colocado uma máquina chamada kepler.ciencia em rede sem usar nada além do nosso bom e velho editor de textos. Lembre-se de tomar cuidado, já que todos os comandos devem ser emitidos como root.

Quem sou eu?

O diretório /etc/sysconfig contém diversos arquivos de configuração do sistema; um deles é o arquivo network, responsável pela configuração de rede (um dos responsáveis, na realidade, mas vamos em frente).

O primeiro passo para colocarmos kepler na rede é dar-lhe um nome. Por padrão, as máquinas Linux chamam-se apenas localhost.localdomain, associado ao endereço IP 127.0.0.1, que é o endereço reservado à máquina local. Para dar o nome à nossa máquina, edite o arquivo /etc/sysconfig/network e inclua a seguinte linha:

   HOSTNAME=kepler

Além da configuração do nome da máquina, podemos fazer várias outras configurações por meio do arquivo network, mas vamos ver isso nas próximas edições.

Onde estou?

Agora que já demos um nome à nossa máquina, é hora de a colocarmos em seu lugar na rede. Para isso, temos de dar-lhe um endereço na rede (seu endereço IP) e um domínio. Para isso, vamos editar um outro arquivo muito importante no /etc: o hosts.

O arquivo hosts é um daqueles arquivos que têm história. No início da antiga ARPANet (precursora da Internet), foi definido que todas as máquinas que fossem conectadas à rede teriam um arquivo hosts, que conteria os endereços de todas as outras máquinas conectadas. Esse arquivo era mantido pela coordenação da ARPANet e distribuído periodicamente com atualização.

Chegou um momento em que o número de máquinas cresceu tanto que a transmissão do arquivo hosts pela rede começou a tornar-se um problema. Foi aí que nasceu o DNS (Domain Name Service), que permitiu que as máquinas não precisassem mais de um hosts com os endereços de todas as outras máquinas.

Mas isso não acabou com a utilidade do arquivo hosts. Esse arquivo ainda é responsável por permitir a especificação do endereço e domínio da máquina local e o acesso a máquinas quando o serviço DNS não está disponível.

Voltando à nossa máquina kepler, vamos especificar seu endereço no arquivo /etc/hosts local. Assumindo que nosso endereço IP seja 192.168.1.73, podemos adicionar uma linha correspondente à nossa máquina no arquivo hosts, que deverá ficar assim:

127.0.0.1  localhost.localdomain localhost
192.168.1.73 kepler.ciencia        kepler

O arquivo hosts é composto de várias linhas identificando máquinas. Cada linha é composta de três colunas, separadas por espaços. Tomando a linha correspondente à máquina kepler.ciencia, vamos verificar o que significa cada coluna (Veja quadro 1).

A primeira coluna contém o endereço IP (192.168.1.73) associado à nossa máquina. O endereço escolhido faz parte da classe C — só para lembrar: existem 3 classes de endereços IP, cada uma delas permite um número máximo de endereços:

Classe A   1.xxx.xxx.xxx até 126.xxx.xxx.xxx
Classe B   128.0.xxx.xxx até 191.255.xxx.xxx
Classe C   192.0.0.xxx   até 223.255.255.xxx

A segunda coluna contém o FQDN (Fully Qualified Domain Name) que é o nome completo da máquina, ou seja, o nome da máquina associado ao nome do domínio. Em nosso caso, kepler.ciencia, kepler é o nome da máquina e ciencia é o nosso domínio.

A terceira e última coluna é a mais interessante. Em nosso exemplo ela não parece grande coisa, contendo apenas o nome da máquina sem o domínio. Essa coluna especifica "apelidos" para a máquina. Veja uma linha modificada para facilitar a compreensão. Em vez de apenas kepler, agora temos kepler, financeiro, diretoria. Isso indica que essa máquina pode ser referenciada tanto por kepler.ciencia como por financeiro.ciencia e diretoria.ciencia. Isso é útil quando uma máquina é usada por grupos de pessoas diferentes na rede de uma empresa.

Onde estão meus vizinhos?

Agora nossa máquina já tem um nome e um endereço, mas não é o suficiente, é? Não, claro que não. Ainda temos de encontrar nossos vizinhos, ou seja, as outras máquinas da rede. Para isso existem algumas opções, mas vamos estudar apenas duas, que são as mais importantes: o nosso já conhecido arquivo hosts e o também já mencionado serviço de nomes (DNS).

Quadro 1 192.168.1.73 kepler.ciencia kepler,financeiro,diretoria

A maneira mais "direta" de permitir que nossa máquina reconheça outra é editar o nosso arquivo hosts e adicionar uma linha correspondente a outras máquinas. Mas isso é tedioso, lento e nos obriga sempre a atualizar o arquivo quando uma nova máquina entrar na rede. Como vimos antes, não somos os primeiros a perceber isso. O pessoal da antiga ARPANet já tinha se dado conta de que essa idéia não é lá muito esperta, veja:

127.0.0.1    localhost.localdomain localhost
192.168.1.73 kepler.ciencia        kepler
192.168.1.1  newton.ciencia        newton,dns
192.168.1.2  einstein.ciencia      einstein,al,gateway
192.168.1.43 maxwell.ciencia       maxwell,mail

Felizmente nós não precisamos ficar pensando em uma solução, já que nossos "antepassados" fizeram isso por nós e criaram uma solução: o DNS.

O DNS pode ser visto como um arquivo hosts remoto (ele não é isso, mas podemos ver dessa maneira para entender). Sempre que nossa máquina precisar encontrar algum recurso da rede, ela tem de saber qual seu endereço IP. Mas lembrar endereços IP não é muito fácil nem muito produtivo (nossos maravilhosos cérebros devem ser usados para pensar, não para guardar dados que podem ser facilmente armazenados em "outras mídias"). Para ajudar a encontrar endereços IP, nós usamos um servidor de nomes. Na nossa rede, o servidor de nomes é a máquina newton.ciencia, mas vamos nos referir a ela como dns.ciencia. Viram? Mais um uso para os apelidos.

Vamos agora configurar nossa máquina kepler para usar nosso servidor de nomes (a máquina newton/dns). A configuração do servidor DNS é feita no arquivo /etc/resolv.conf. Ele tem esse nome porque o processo de tradução de um nome em um endereço IP é chamado resolução de nomes, ou seja, quando solicitamos um endereço IP a partir de um nome de máquina, nós queremos "resolver" o nome.

O arquivo resolv.conf é extremamente simples, como podemos ver a seguir. Nosso arquivo contém apenas duas linhas. A primeira indica que os nomes devem ser procurados no domínio ciencia quando não informarmos o domínio junto com o nome da máquina, ou seja, se solicitarmos a resolução do nome kepler e esse não for encontrado, o sistema procurará kepler.ciencia. Podem-se especificar vários domínios, divididos por vírgulas.

search ciencia
nameserver 192.168.1.1

A segunda linha indica o IP do servidor de nomes. Podem-se ter mais servidores, adicionando mais linhas no formato nameserver (ENDEREÇO).

Onde procurar?

Já sabemos como configurar um servidor de nomes e usar o arquivo hosts. Mas como o sistema sabe que deve procurar no hosts ou no servidor de nomes? É aí que entra o último arquivo desse nosso artigo: o arquivo host.conf. Ele especifica como o sistema deve proceder à procura de nomes:

order hosts, bind
multi on

A primeira linha do nosso arquivo especifica a ordem de procura. No exemplo determinamos que o sistema deve procurar antes no arquivo hosts e depois no servidor DNS (Bind é o nome do software de servidor DNS mais usado no mundo). A segunda linha indica que se devem retornar todos os endereços encontrados para aquele nome e não apenas o primeiro.

Com essas configurações, nossa máquina já estará pronta para ser usada em uma rede simples. No mês que vem, continuaremos no assunto redes, indo mais adiante, para servidores NIS, gateways e ao nosso bom amigo /etc/hosts, pois ele ainda nos será útil.


A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux