Página seguinte Página anterior Índice

95. Configuração do Cliente

95.1 Obtendo O Programa Cliente

kernels 2.0.x

Independente da distribuição que se esteja utilizando será necessário obter um programa cliente DHCP para Linux. O pacote necessário é chamado dhcpcd e a sua versão atual é 0.70. Pode-se obter uma descrição do pacote em aqui.

kernels 2.1.x

Devido a mudanças no pacote de rede ipv4 nos kernels da série 2.1.x, em especial na forma como ele configura diversos campos, o programa dhcpcd pode não funcionar adequadamente. Muitos usuários não usam kernels em desenvolvimento, logo isso não será problema. Caso o leitor esteja usando um kernel desta série deve então utilizar o dhcpcd 1.3.3 o qual é uma versão modificada que foi escrita por Sergei Viznyuk sergei@phystech.com a fim de evitar os problemas mencionados anteriormente. Ela pode ser obtida em:

http://www.cps.msu.edu/~dunham/out/dhcpcd-1.3.3.tar.gz

95.2 Configuração no Slackware

Pode-se obter a última versão do DHCPcd a partir de qualquer espelho do Metalab ou nos seguintes endereços:

Transfira a última versão do programa dhcpcd.tar.gz

Este procedimento irá criar o diretório /etc/dhcpc onde o DHCPcd irá armazenar as informações DHCP e o arquivo dhcpcd será copiado em /usr/sbin.

Para que o sistema utilize o DHCP durante a inicialização, execute os seguintes comandos:

cd /etc/rc.d

mv rc.inet1 rc.inet1.antigo

Isso moverá o programa antigo de inicialização da rede para rc.inet1.antigo. Agora será necessário criar o novo programa rc.inet1. Utilize o código a seguir:


#!/bin/sh
#
# rc.inet1      Este programa inicializa a base de rede do sistema

HOSTNAME=`cat /etc/HOSTNAME` # este procedimento não é realmente necessário
                             # mas será mantido 

# Anexar os dispositivos locais de rede 
/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo

# caso se tenha uma conexão Ethernet, as linhas a seguir devem ser utilizadas
# para configurar a interface eth0. Caso se esteja usando a interface local ou 
# SLIP, não inclua as linhas a seguir no arquivo.

/usr/sbin/dhcpcd

Salve o programa e reinicialize o computador.

Ao finalizar vá para a seção último passo

95.3 Red Hat 5.0, Conectiva Linux 3.0 e posteriores

Na configuração do DHCPcd sobre estas distribuições de Linux, tudo que se necessita fazer é inicializar o Painel de Controle digitando-se:

control-panel

Após selecione "Configuração de Rede" e na interface Ethernet desejada (normalmente eth0) defina DHCP como o protocolo. Os demais parâmetros devem ser deixados em branco.

Ao finalizar vá para a seção último passo

95.4 Configuração no RedHat 4.x e Caldera OpenLinux 1.1

O DHCPcd é incluído na distribuição padrão do Red Hat no formato RPM. Ele pode ser encontrado no diretório padrão denominado RPMS ou pode ser obtido em:

ftp://ftp.redhat.com/pub/redhat/redhat-4.2/i386/RedHat/RPMS/dhcpcd-0.6-2.i386.rpm

Para instalá-lo use o seguinte comando:

rpm -i dhcpcd-0.6-2.i386.rpm

Alternativamente pode-se compilar uma versão própria através dos passos descritos na distribuição Slackware.

Esta informação foi provida por nothing@cc.gatech.edu:


Removi o endereço IP estático e o nome de /etc/resolv.conf. De qualquer forma deixei a linha de pesquisa e as duas linhas do servidor de nomes (por alguma razão meu programa dhcpcd nunca cria um arquivo /etc/dhcpc/resolv.conf, então eu tive que usar um arquivo estático).

Em /etc/sysconfig/network removi as entradas para HOSTNAME e GATEWAY. As entradas para NETWORKING, DOMAINNAME e GATEWAYDEV foram deixadas.

Em /etc/sysconfig/network-scripts/ifcfg-eth0 foram removidas as entradas IPADDR,
NETMASK, NETWORK e BROADCAST. Foram deixados os parâmetros DEVICE e ONBOOT  como estavam. A linha BOOTPROTO foi alterada para BOOTPROTO=dhcp.

Salve o arquivo e reinicialize o computador.

Ao finalizar vá para a seção último passo

95.5 Configuração no Debian 1.3.1

Há um pacote Debian do DHCPcd em:

ftp://ftp.debian.org/debian/stable/binary/net/

ou pode-se seguir as instruções de instalação do Slackware. Para desempacotar um pacote do tipo deb deve-se executar o seguinte comando:

dpkg -i /where/ever/your/debian/packages/are/dhcpd*deb

Aparentemente não há necessidade de qualquer configuração para o DHCPcd conforme o descrito a seguir:

De: Heiko Schlittermann (heiko@os.inf.tu-dresden.de)

O pacote dhcpcd instala o programa de inicialização usual para pacotes debian em /etc/init.d/<nome_pacote>, neste caso como /etc/init.d/dhcpcd e estabelece a ligação dos diversos diretórios /etc/rc?.d/.

O conteúdo dos diretórios /etc/rc?.d/ será então executado durante a inicialização do sistema.

Caso o sistema não seja reinicializado após a instalação, o programa poderá se iniciado manualmente:

/etc/init.d/dhcpcd start

Ao finalizar vá para a seção último passo

95.6 Configuração no LinuxPPC e MkLinux

A seguinte seção foi escrita por R. Shapiro

As versões 0.65 e 0.70 do programa dhcpcd de Yoichi Hariguchi deverão funcionar adequadamente para ambas as versões de Linux em ppc, com as seguintes ressalvas:

* Caso se deseje ou se necessite construir executáveis a partir dos fontes, deve-se atentar que os compiladores ppc Linux assumem que 'char' é na verdade 'unsigned char' enquanto os fontes de Hariguchi assumem que 'char' é 'signed char'. Para construí-los a partir dos fontes deve-se editar o arquivo Makefile e incluir a seguinte opção nos CFLAGS: "-fsigned-char".

* A versão atual do linuxppc (também conhecida como linux-pmac) é a 2.1.24 e requer o pacote atualização 2.1. Ambas as versões DR 2.1 e DR 3.0 do mklinux usam o kernel 2.0 (2.0.33) e não necessitam desta atualização. Note que o RPM do dhcpcd no CD do linuxppc não inclui a atualização 2.1 e não funcionará com ela. De qualquer forma funcionará com o mklinux.

* No kernel do linuxppc 2.1, será apresentado um aviso de roteamento após o dhcpcd ser inicializado. Ele pode ser ignorado.

* O programa dhcpcd de Hariguchi demora um pouco mais, cerca de 30 segundos, para fazer a sua conexão inicial com o servidor e configurar o roteamento. No kernel do linuxppc 2.1, o aviso mencionado acima é uma indicação de que o roteamento está pronto. No mklinux será necessário checar através do comando netstat -r o estado da conexão da rede.

Não fui capaz de compilar o dhcpcd de Sergei Viznyuk versão 1.3.3 em ambas as versões para o Linux para ppc. Logo não posso comentá-la.

Uma vez que o dhcpcd é instalado, execute os seguintes passos no resolv.conf, conforme mencionado na seção último passo.

Caso se deseje uma versão pré compilada do dhcpcd 0.70 para kernels 2.1 para linuxppc, envie uma mensagem para reshapiro@mediaone.net.

95.7 Redes Token Ring

Caso se esteja tentando executar o dhcpcd em uma rede Token Ring é bom avisar: ele não funcionará. Esta é a solução fornecida por Henrik Stoerner (henrik_stoerner@olicom.dk)

O problema reside no fato de dhcpcd funcionar somente em placas Ethernet. Caso seja encontrada uma placa Token-Ring, o programa se recusa a executar qualquer comando e gera a mensagem "não é uma interface Ethernet".

A solução é aplicar uma atualização simples dos fontes do dhcpcd. A atualização está disponível na Internet em uma versão binária no formato RPM em http://eolicom.olicom.dk/~storner/dhcp/

A atualização foi enviada para o mantenedor do dhcpcd, a qual espero que seja incluída na próxima versão do dhcpcd.

95.8 Executando o DHCPCD

Após a reinicialização da máquina, a interface de rede deve ser configurada.

Digite:

ifconfig

Deve-se obter algo como:


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:302 errors:0 dropped:0 overruns:0 frame:0
          TX packets:302 errors:0 dropped:0 overruns:0 carrier:0 coll:0

eth0      Link encap:Ethernet  HWaddr 00:20:AF:EE:05:45
------>   inet addr:24.128.53.102  Bcast:24.128.53.255  Mask:255.255.254.0
          UP BROADCAST NOTRAILERS RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24783 errors:1 dropped:1 overruns:0 frame:1
          TX packets:11598 errors:0 dropped:0 overruns:0 carrier:0 coll:96
          Interrupt:10 Base address:0x300 

Caso se tenha algum número normal no campo endereço inet, então a máquina estará configurada. Caso se obtenha um endereço igual a 0.0.0.0 não se desespere, trata-se de uma configuração temporária antes que o dhcpcd obtenha o endereço IP. Se mesmo alguns minutos após se visualizar somente o endereço 0.0.0.0 por favor verifique a seção DHCPcd Resolução de Problemas. O DHCPcd é um servidor que seguirá sendo executado enquanto o computador estiver ligado. Mesmo três horas depois ele irá contactar o servidor DHCP e tentará renovar o endereço IP. Todas as mensagens serão registradas no arquivo do syslog (no Slackware em /var/adm/syslog, RedHat/Conectiva/OpenLinux em /var/log/syslog).

Um detalhe final: É necessário especificar os servidores de nomes. Há duas formas de fazê-lo, pode-se solicitar ao provedor para informar os endereços do servidor de nomes e colocá-los no /etc/resolv.conf ou o DHCPcd obterá uma lista do servidores DHCP e construirá um resolv.conf em /etc/dhcpc. Decidi usar os arquivos gerados pelo DHCPcd da seguinte forma:

Gere uma cópia de segurança do /etc/resolv.conf da seguinte forma:

mv /etc/resolv.conf /etc/resolv.conf.antifo

Caso o diretório /etc/dhcpc não exista, ele deve ser criado da seguinte forma:

mkdir /etc/dhcpc

Crie uma ligação simbólica de /etc/dhcpc/resolv.conf para /etc/resolv.conf, através do seguinte comando:

ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf

Caso isso não funcione, pode-se tentar o ajuste sugerido por nothing@cc.gatech.edu, com uma pequena correção de Henrik Stoerner.

O último passo é executado somente porque meu dhcpcd não cria o arquivo /etc/dhcpc/resolv.conf. Em /etc/sysconfig/network-scripts/ifup efetuei as seguintes mudanças (as quais são mudanças simples, mas funcionam):


elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
    echo -n "Usando DHCP para ${DEVICE}... "
    /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE}
    echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh

    if [ -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
        echo "falhou."
        exit 1

Foi mudada para:


elif [ "$BOOTPROTO" = dhcp -a "$ISALIAS" = no ]; then
    echo -n "Usando DHCP para ${DEVICE}... "
    /sbin/dhcpcd
    echo "echo \$$ > /var/run/dhcp-wait-${DEVICE}.pid; exec sleep 30" | sh

    if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ]; then
        ^^^^^^
       echo "falhou."
       exit 1

Note o sinal de exclamação em if [ ! -f /var/run/dhcp-wait-${DEVICE}.pid ];

Agora sente-se e aprecie o seu desempenho. :-).

95.9 Notas Diversas

Os seguintes passos não são necessários mas podem ser úteis para algumas pessoas:

a) Caso se necessite de conectividade de rede somente ocasionalmente, pode-se inicializar o dhcpcd a partir da linha de comando (deve-se reinicializar para se executar este passo) com:

/usr/sbin/dhcpcd

Quando se quiser finalizar as funcionalidades de rede, digite:

/usr/sbin/dhcpcd -k

95.10 Soluções de Problemas

Caso se tenha seguido todos os passos descritos anteriormente e não foi possível acessar a rede, há algumas prováveis causas para isso:

I. A placa de rede não está configurada corretamente.

Durante o processo de inicialização o Linux irá tentar localizar a placa de rede e deverá gerar algumas mensagens acerca deste processo:


eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov

Se uma mensagem como esta não aparecer, aparentemente a placa Ethernet não foi reconhecida pelo Linux. Caso se utilize uma placa genérica (como um clone NE2000), procure por um disco com utilitários DOS que possam ser usados para configurar a placa. Tente diversos IRQs até que o Linux reconheça a placa (IRQs 9,10,12 são normalmente boas tentativas).

II. O servidor DHCP suporta RFC 1541

Tente executar o dhcpcd digitando:

dhcpcd -r

use o comando ifconfig para verificar se a interface de rede está configurada (espere alguns segundos pelo processo de configuração, pois inicialmente o endereço apresentado será Inet.addr=0.0.0.0)

Caso o problema seja resolvido desta forma, deve-se adicionar o indicador "-r" aos programas de inicialização, ou seja além de usar o /sbin/dhcpcd deve-se comandar /sbin/dhcpcd -r

III. Durante a inicialização se obtém a mensagem "Usando DHCP para eth0 ... falhou" mas o sistema funciona perfeitamente.

Aparentemente se está usando RedHat e as instruções não foram seguidas adequadamente :-). Você está esquecendo do ponto de exclamação em um dos comandos, vá até a seção aqui e verifique como corrigir o problema.

IV. A rede funciona por alguns minutos e subitamente para de responder.

Há algumas notícias de que o programa gated (servidor de caminho padrão) gera erros em máquinas Linux conforme o descrito acima. Verifique se o programa gated está sendo executado através do seguinte comando:

ps -auxww | grep gate

Caso ele esteja sendo executado, tente removê-lo com o gerenciador RPM ou da entrada em /etc/rc.d/

V. A placa Ethernet é reconhecida durante a inicialização do sistema mas obtém-se a mensagem "NO DHCPOFFER" nos arquivos de registros de ocorrências. Isso ocorre também com a placa PCMCIA.

É necessário estar seguro que se tem uma porta 10BaseT (conector do tipo "telefone") ativada na placa de rede. A melhor forma de verificar isso é checar qual o tipo de conector está configurado na inicialização ou seja:


eth0: 3c509 at 0x300 tag 1, 10baseT port, address  00 20 af ee 11 11, IRQ 10.
                            ^^^^^^^^^^^^
3c509.c:1.07 6/15/95 becker@cesdis.gsfc.nasa.gov

Tenho recebido notícias de usuários de portáteis que têm tido este tipo de problema com os utilitários PCMCIA (especificamente o ifport) o qual deve ser configurado para um conector de tipo 10Base2 (thinnet). Deve-se estar seguro de estar usando o padrão 10BaseT para a conexão. Caso não se esteja , deve-se reconfigurar a placa e reinicializar o computador.

VI. Segui todos os passos mas ainda não consigo conectar a máquina à rede.

O modem a cabo normalmente irá memorizar o endereço Ethernet da placa de rede, então ao se mudar o computador ou se tentar utilizar uma outra placa, será necessário ensinar o modem a reconhecer o novo hardware. Normalmente basta desligar o modem e religá-lo enquanto o computador estiver ligado ou então chamar o suporte técnico e avisá-lo de que a placa de rede foi alterada.

A máquina está dentro de uma rede protegida por um firewall que desabilita o tráfego das portas 67/68 usadas pelo DHCP para distribuir informações. Verifique as regras do firewall cuidadosamente.


Página seguinte Página anterior Índice