Administração de Redes |
Redes interconectam computadores para transferência de informações com mail, new (notícias), facilidades como login remoto, transferência de arquivos ou hipertexto. Existem dois mecanismos principais para essa finalidade no Linux, uucp e tcp/ip. O primeiro, que remonta aos anos 70, com a saudosa Bell Co., foi muito utilizado (e ainda é usado hoje) para formar a rede Usenet. A maioria dos seus nodos tinha conexão discada, temporária, e as mensagens entre as máquinas ficam aguardando as próximas conexões para serem enviadas de um nodo a outro da rede. O segundo, tcp/ip, é o mais usado hoje, popularizado pela Internet. É o q meio que serve de transporte para nossos e-mails, canais de irc e icq, e principalmente para o acesso via http, onde as páginas dos browsers encontram hipertextos para o deleite do usuário. Trataremos exclusivamente do tcp/ip aqui, pois já existem excelentes discussões de todos esses tipos de redes, seus protocolos e sua implementação. Aconselhamos a leitura dos documentos do LDP (Linux Documentation Project) para uma formação mais consistente sobre este vasto e bem explorado assunto.
Como eu posso evitar de conhecer todos esses detalhes tão complicados? Simples: use as interfaces visuais já fornecidas com sua distribuição Linux. Mas se voce realmente deseja saber o que está escondido "na cartola do mágico", leia não só o que estou mostrando aqui, mas também o "The Linux Network Administrator's Guide", no LDP, pelo menos!
Cada sistema numa rede tcp/ip tem um endereço (network address), também conhecido como endereço de IP, usualmente atribuido pelo NIC (Network Information Center). Este endereço, único em toda a internet é um número de 32 bits [33] que é representado como quatro números (1 byte cada) entre 0 e 255, separados por pontos. Mesmo que sua máquina não esteja conectado a nenhuma rede, ainda assim, o endereço 127.0.0.1 deverá existir. Este endereço define o loopback, necessário para alguns programas que funcionam normalmente em rede. Neste caso, sua máquina estará enviado mensagens (conforme o protocolo) para ela própria.
As distribuições do Linux já vêm com a
maioria das aplicações e ferramentas de
configuração de rede, incluindo alguns exemplos dos arquivos de
configuração. O "super-servidor" é
odaemoninetd .O termo "super-servidor" é devido à maneira como esse programa funciona. Ele cria sockets para os vários serviços configurados, e quando algum programa remoto solicita um destes serviços, o inetd inicia o servidor específico para aquele serviço. O arquivo /etc/inetd.conf contém os
serviços suportados no seu sistema. Se voce deseja reconfigurar esse
arquivo, após a edição, basta enviar um sinal HUP para o
inetd para que este re-leia este arquivo de configuração:
kill -HUP `cat /var/run/inetd.pid` .
O arquivo /var/run/inetd.pid é gerado com apenas um número, o
PID do processo inetd, portanto, usamos a substituição de
comandos do shell para obter esse valor.
O arquivo /etc/inetd.conf contém linhas com os seguintes dados
(nesta mesma ordem):
Os arquivos
|
Uma rede local Linux pode também compartilhar o mesmo endereço IP, através do IP masquerading.
Cada máquina numa rede deverá ter um hostname
bem determinado. Esse nome é armazenado no kernel, e pode ser
configurado pelo comando hostname <novo nome>
, ou verificado
pelo mesmo comando sem parâmetros. Só o root pode mudar o
hostname. Mas, se voce der novo boot na máquina verá que o nome
original estará de volta. Se sua distribuição é
RedHat, voce terá que alterar o arquivo
/etc/sysconfig/network
, ou usar um utilitário existen para
isso, da própria empresa. No Slakware, o script
/etc/rc.d/rc.M
efetua esta modificação com a linha
/bin/hostname `cat /etc/HOSTNAME | cut -f1 -d .`
, portanto,
modificando o arquivo /etc/HOSTNAME
, na próxima carga do
sistema você estará com o nome correto.
Outros comandos úteis na depuração das redes é o
traceroute, para mostrar toda a rota de acesso entre o seu endereço de
IP e o do destino. (assim voce verifica se o seu provedor ou a Embratel
está atrasando na "entrega" dos pacotes.) O comando route
serve para mostrar ou modificar a tabela de roteamento do kernel. Use-o com
cuidado, sometne quando estiver entendendo melhor o seu funcionamento.
Raramente você irá precisar de fazer alterações se
estiver ligado a um provedor pois o pppd
(discutido logo
adiante), adicionará dados do seu roteamento default quando voce for
conectado.
No lugar de descrever de forma estéril várias dezenas de comandos relacionados com redes e conectividade, preferimos mostrar o reteiro detalhado de um experimento muito simples, que poderá demostrar como conectar dois computadores usando tcp/ip através de uma linha serial (via modem ou não, caso voce sue um cabo serial null-modem, com os pinos 2 e 3 invertidos). Este experimento poderá lhe servir, por exemplo, para interligar várias máquinas para transferência de dados usando ftp, testar um servidor de web (como o Apache, ou o Boa, que é o meu predileto), ou compartilhar o acesso de várias máquinas ao seu provedor internet, se voce habilitar IP masquerading no seu kernel.
Como estamos usando uma linha serial, precisaremos de um protocolo como slip ou ppp para encapsular os pacotes do tcp/ip e enviá-los ponto-a-ponto. O daemon pppd é tanto um servidor como um cliente, podendo ser usado para estabelecer qualquer dos dois lados na ligação (link). Todavia, as duas máquinas terão que se "conhecer" mutuamente para essa ligação ser possível. Existem endereços reservados no protocolo tcp/ip para uso em redes locais, que não estejam conectadas diretamente à internet. Como queremo somente alguns poucos endereços, um endereço de subnet será suficiente. Escolhemos 192.168,97,X (onde X depende da máquina).
Suponhamos que o "servidor" seja a máquina pernambuco,
endereço 192.168.97.1 (endereço do "líder"), e a segunda
máquina seja paraiba, endereço 192.168.97.2.
Editaremos o arquivo /etc/hosts
nas duas máquinas com a
seguinte informação:
127.0.0.1 localhost 192.168.97.1 pernambuco
192.168.97.2 paraiba
Não se esqueça de mudar o hostname em cada máquina para um dos nomes dados acima. O arquivo /etc/networks de cada máquina terá o seguinte:
loopback 127.0.0.0
nordestenet 192.168.97.0
Então, voce estará pronto para iniciar a conexão. Dois comandos serão usados, uma para o servidor (no nosso caso pernambuco), e o segundo para o outro ponto da "rede".
pernambuco:
pppd /dev/cua0 115200 -crtscts 192.168.97.1: local passive
paraiba:
pppd /dev/cua0 115200 -crtscts local passive defaultroute
Neste comandos, estamos assumindo que a ligação é local
(sem modem), usando a primeira porta serial do computador (COM1 no MsDos,
/dev/cua0
no Linux). A opção passive indica que a
conexão ficará no ar indefinidamente, a menos que numa das
máquinas executemos kill -KILL <PID do pppd>
.
Agora voce pode testar a conexão com: |
Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flags lo 3584 0 2914 0 0 0 2914 0 0 0 BLRU ppp0 552 0 6 1 1 0 7 0 0 0 PRU |
Outro comando útil na monitoração das
transferências via ppp é o |
in pack comp uncomp err | out pack comp uncomp ip 10474 66 24 24 0 | 7193 63 35 8 20 5774 12 11 0 0 | 165 8 7 0 1 609 2 1 0 0 | 177 3 0 2 1 |
A conexão com um provedor é só um pouco mais complicada.
Primeiramente, a resolução de endereços não
será feita numa tabela estática, e tão pequena
quanto /etc/hosts
. A internet possui mais de 40 milhões de
endereços atualmente, o que resultaria numa tablea imensa, e muitos
desses endereços podem ser modificados com o tempo. Assim voce usa o
mapeamento externo fornecidos por servidores de uma forma hierárquica,
espalhados no mundo inteiro, de acordo com os seus domínios. Para isso
voce terá que indicar um servidor (do seu provedor) para este
serviço, no arquivo /etc/resolv.conf
. Veja o meu arquivo
(fictício):
domain linuxserv.com.br nameserver 218.230.85.2 nameserver 218.230.86.25
supondo que o provedor me fornece dois servidores dns. (por favor não tente acessar estes endereços, pois são completamente fictícios e não sei se corresponde a algum provedor válido!) Ponha também no arquivo /etc/host.conf as seguintes duas linhas:
order hosts, bind multi on
Crie uma arquivo com o nome ppp-liga, com o seguinte conteúdo:
pppd debug connect "chat -f /etc/ppp/dial-provedor" /dev/cua3 38400 \
-detach crtscts modem noipdefault defaultroute name rpragana&
Rápida explicação: pppd irá executar o
utiliário chat para programar o modem e efetuar a
ligação. O script para o chat está no arquivo
dial-provedor. Colocamos a opção noipdefault porque esta
ligação irá receber o seu endereço IP do seu
provedor (IP dinâmico). Se o seu provedor suporta
autenticação com pap, você terá que introduzir mais
alguns dados no arquivo /etc/ppp/pap-secrets
:
# client server secret IP addresses
rpragana * xyzABC123
onde xyzABC123
é a sua senha neste provedor. Finalmente
devemos ter o arquivo dial-provedor usado pelo chat como uma série de
perguntas/respostas para a conversação entre o modem e a sua
máquina:
ABORT BUSY ABORT 'NO CARRIER' '' ATZ OK ATS0=0L3M1V1 OK ATDP2221234 CONNECT
Explicando rapidamente: o comando chat
trabalha com pares de
strings. Ele aguarda a primera string do par do modem, e envia a segunda em
seguida, exceto se o par começar com ABORT
. Neste
último caso, ele procurará a segunda string e abortará o
comando se a segunda string coincidir com o que for recebido do modem. No
script acima, significa que BUSY
ou NO CARRIER
irão abortar o comando chat
. Em seguida, o ''
(string vazia) será esperado domodem (ou seja, não espere nada)
e enviará ATZ
(comando para resetar o modem). Depois
aguarda o OK
do modem e envia a string de
inicialização (no exemplo acima ATS0=0L3M1V1
). No
fim de tudo, ele irá aguardar a string CONNECT
para
terminar o script e retornar o controle ao pppd
.
Para desligar o ppp, simplesmente mate o processo com o
ppp0
(se este for o único dispositivo ppp
na sua máquina):
kill -INT `cat /var/run/ppp0.pid`
Edite esse script minúsculo no arquivo ppp-desliga
(de
preferência em /etc/ppp
).
Depois voce poderá automatizar (e embelezar) esses procedimentos com um
programa como wmifs, rodando sob X11. Este programa monitora o ppp0 e permite
com um click no mouse voce ligar-se ou desligar-se do seu provedor. Veja a sua
configuração: |
São inúmeros os serviços disponíveis na "rede
global", que precisaria um livro inteiro para descrevê-los, mesmo
superficialmente.
Voce poderá começar instalndo o Netscape, que é sem sombra de dúvidas o melhor web-browser para Linux. Entretanto, se voce pretende editar páginas em html, ele não é tão bom, do ponto de vista de gerar o hipertexto em conformidade com os padrões do W3C (organização que padroniza os protocolos para hipertexto no web). Existem vários editores visuais e "helpers" que podem ser usados com editor mais convencionais. O XEmacs é célebre, mas o ASWedit é bem mais simples para o principiante. Um editor de uso geral que pode ser interessante é o Nedit, que coloriza o texto em quase 20 linguagens diferentes (entre elas, html), é expansível, e de excelente qualidade (e é open source, também, claro!).
O presente texto, entretanto, eu editei com o Amaya, um edito visual (open source) desenvolvido pelo W3C, mas não o aconselho para principiantes. Se voce não conhecer razoavelmente bem html, voce poderá ficar perdido com as operações aparentemente ilógicas que este editor realiza. Ele é também um editor estruturado, bom para que quer experimentar com features avançadas do "html 4.0 transitional", o único modelo que ele usa para edição. Para o usuário comum, aconselho ficar com o html 3.2 ou "4./0 strict".
Outros protocolos, como o ftp, possuem inúmeros clientes de excelente nível como o ncftp, o snarf, e muitos com gui visuais. O mc (Midnight Commander), que vimos no começo deste manual, pode ser usado de maneira muito transparente para transferências de arquivos via ftp. Basta mudar um dos paineis de diretórios para o diretório de nome ftp:host/diretório e voce estará conectado. A listagem que aparece é inteiramente virtual, formada a partir de comandos para obter o diretório remoto. Para copiar arquivos, use os comandos habituais, inclusive podendo marcar vários (Ctrl-t) e copiá-los todos de uma vez só.
Para e-mail, eu ainda prefiro o pine
, da U. Washington. Ele
permite escolher o editor (adivinhem: joe
é o que eu
uso!), controle total sobre os cabeçalhos dos e-mails enviados,
addressbook, etc. E é bastante rápido (roda em um
xterm
). Outros preferem o elm
, tkrat
,
etc. Ou ainda, o próprio Nestacape, que tem tudo integrado. Se voce
opta pela simplicidade sobre a potência, esse último será
sua escolha.