(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  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

  • Descompacte-a através do comando:

    tar -zxvf dhcpcd-0.70.tar.gz

  • vá para o diretório gerado e crie o dhcpcd, através dos seguintes comandos:

    cd dhcpcd-0.70

    make

  • Execute a instalação, utilizando-se dos poderes do superusuário na execução desta tarefa, através do comando:

    make install

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.

  • Apague ou renomeie o arquivo /etc/sysconfig/network-scripts/ifcfg-eth0
  • Remova o conteúdo de /etc/sysconfig/network exceto NETWORKING e, caso se tenha um nome fixo para ligações simbólicas, e HOSTNAME.

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