18.6. Configurando uma conexão de rede manualmente

A configuração manual do software de rede deve ser sempre a última alternativa. É recomendável usar o YaST. Entretanto, essas informações de base sobre a configuração de rede também podem ajudar você na utilização do YaST.

Todas as placas de rede embutidas e hotplug (PCMCIA, USB e algumas PCI) são detectadas e configuradas através do hotplug. O sistema identifica uma placa de rede de duas formas diferentes: primeira, como um dispositivo físico e, segunda, como uma interface. A inserção ou detecção de um dispositivo aciona um evento hotplug. Esse evento de hotplug aciona a inicialização do dispositivo com o script hwup. Quando a placa de rede é inicializada como uma nova interface de rede, o kernel gera outro evento de hotplug que aciona a configuração da interface com ifup.

A interface de números kernel define nomes de acordo com a ordem temporal de seus registros. A seqüência de inicialização é decisiva para a designação de nomes. Se alguma das muitas placas de rede falhar, a numeração de todas as placas inicializadas subseqüentemente será deslocada. Para placas reais que aceitam hotplug, o que importa é a ordem em que os dispositivos são conectados.

Para obter uma configuração flexível, a configuração do dispositivo (hardware) e a interface foram separadas e o mapeamento das configurações para dispositivos e interfaces não é mais gerenciado com base nos nomes de interface. As configurações de dispositivos estão localizadas em /etc/sysconfig/hardware/hwcfg-*. As configurações de interface estão localizadas em /etc/sysconfig/network/ifcfg-*. Os nomes das configurações são designados de forma que descrevam os dispositivos e as interfaces aos quais estão associados. Como o mapeamento de drivers anterior exigia nomes de interface estáticos, esse tipo de mapeamento não pode mais ocorrer em /etc/modprobe.conf. No novo conceito, as entradas de álias desse arquivo causariam efeitos colaterais indesejáveis.

Os nomes de configuração — tudo depois de hwcfg- ou ifcfg- — podem descrever os dispositivos por meio do slot, de um ID específico de dispositivo ou do nome da interface. Por exemplo, o nome de configuração para uma placa PCI poderia ser bus-pci-0000:02:01.0 (slot PCI) ou vpid-0x8086-0x1014-0x0549 (ID do produto e fornecedor). O nome da interface associada poderia ser bus-pci-0000:02:01.0 ou wlan-id-00:05:4e:42:31:7a (endereço MAC).

Para designar uma determinada configuração de rede a qualquer placa de determinado tipo (em que apenas uma é inserida de cada vez), em vez de selecionar uma determinada placa, escolha nomes de configuração menos específicos. Por exemplo, bus-pcmcia seria usado para todas as placas PCMCIA. Por outro lado, os nomes podem ser limitados por um tipo de interface precedente. Por exemplo, wlan-bus-usb seria designado a placas WLAN conectadas a uma porta USB.

O sistema sempre usa a configuração que melhor descreve uma interface ou o dispositivo que a fornece. A pesquisa da configuração mais adequada é executada por getcfg. A saída de getcfg fornece todas as informações que podem ser usadas para descrever um dispositivo. Detalhes referentes à especificação dos nomes de configuração estão disponíveis na página de manual do getcfg.

Com o método descrito, uma interface de rede é configurada corretamente, mesmo que os dispositivos da rede nem sempre sejam inicializados na mesma ordem. Entretanto, o nome da interface ainda dependerá da seqüência de inicialização. Há duas formas de garantir o acesso confiável à interface de uma determinada placa de rede:

ifup requer uma interface existente, pois não inicializa o hardware. A inicialização do hardware é controlada pelo comando hwup (executado por hotplug ou coldplug). Quando um dispositivo for inicializado, ifup será executado automaticamente para a nova interface, através do hotplug, e a interface será configurada se o modo de início for onboot, hotplug ou auto e o serviço de rede tiver sido iniciado. Anteriormente, o comando ifup nomedainterface acionava a inicialização do hardware. Agora o procedimento foi invertido. Primeiro, o componente de hardware é inicializado e, depois, ocorrem todas as outras ações. Dessa forma, um número variável de dispositivos pode sempre ser configurado da melhor forma possível com um conjunto de configurações existente.

A Tabela 18.5, “Scripts de configuração de rede manual” resume os scripts mais importantes envolvidos na configuração de rede. Onde for possível, os scripts são distinguidos pelo hardware e pela interface.

Tabela 18.5. Scripts de configuração de rede manual

Estágio da configuração

Comando

Função

Hardware

hw{up,down,status}

Os scripts hw* são executados por um subsistema hotplug para inicializar um dispositivo, desfazer a inicialização ou consultar o status de um dispositivo. Há mais informações disponíveis na página de manual do hwup.

Interface

getcfg

getcfg pode ser usado para consultar o nome da interface associado a um nome de configuração ou a uma descrição de hardware. Há mais informações disponíveis na página de manual do getcfg.

Interface

if{up,down,status}

Os scripts if* iniciam interfaces de rede existentes ou retornam o status da interface especificada. Há mais informações disponíveis na página do manual de ifup.

Há mais informações disponíveis sobre hotplug e nomes de dispositivos persistentes no Capítulo 12, Gerenciamento de dispositivo de kernel dinâmico com udev.

18.6.1. Arquivos de configuração

Esta seção fornece uma visão geral dos arquivos de configuração de rede e explica sua finalidade e formato usado.

18.6.1.1. /etc/syconfig/hardware/hwcfg-*

Esses arquivos contêm as configurações de hardware de placas de rede e de outros dispositivos. Eles contêm os parâmetros necessários, como o módulo kernel, modo de início e associações de script. Consulte a página de manual do hwup para obter mais detalhes. Independentemente do hardware existente, as configurações hwcfg-static-* são aplicadas quando o coldplug é iniciado.

18.6.1.2. /etc/sysconfig/network/ifcfg-*

Esses arquivos contêm as configurações da interface de rede. Eles incluem informações, como o modo de início e o endereço IP. Parâmetros possíveis são descritos na página de manual do ifup. Além disso, todas as variáveis dos arquivos dhcp, wireless e config podem ser usadas nos arquivos ifcfg-* se uma configuração geral for usada somente para uma interface.

18.6.1.3. /etc/sysconfig/network/config, dhcp, wireless

O arquivo config contém configurações gerais para o desempenho de ifup, ifdown e ifstatus. dhcp contém configurações para DHCP e wireless para placas LAN sem fio. As variáveis em todos os três arquivos de configuração são comentadas e também podem ser usadas nos arquivos ifcfg-*, em que são tratadas com prioridade mais alta.

18.6.1.4. /etc/sysconfig/network/routes,ifroute-*

O roteamento estático dos pacotes TCP/IP é determinado aqui. Todas as rotas estáticas exigidas pelas várias tarefas do sistema podem ser inseridas no arquivo /etc/sysconfig/network/routes: rotas para um host, rotas para um host através de um gateway e rotas para uma rede. Para cada interface que necessite de um roteamento individual, defina um arquivo de configuração adicional: /etc/sysconfig/network/ifroute-*. Substitua * pelo nome da interface. As entradas nos arquivos de configuração de roteamento terão esta aparência:

# Destination     Dummy/Gateway     Netmask            Device
#
127.0.0.0         0.0.0.0           255.255.255.0      lo
204.127.235.0     0.0.0.0           255.255.255.0      eth0
default           204.127.235.41    0.0.0.0            eth0
207.68.156.51     207.68.145.45     255.255.255.255    eth1
192.168.0.0       207.68.156.51     255.255.0.0        eth1

O destino da rota está na primeira coluna. Essa coluna pode conter o endereço IP de uma rede ou host ou, no caso de servidores de nomes acessíveis, a rede ou o nome de host totalmente qualificado.

A segunda coluna contém o gateway padrão ou um gateway através do qual um host ou uma rede pode ser acessada. A terceira coluna contém a máscara de rede para redes ou hosts atrás de um gateway. Por exemplo, a máscara em 255.255.255.255 para um host atrás de um gateway.

A quarta coluna só é relevante para redes conectadas ao host local, como loopback, Ethernet, ISDN, PPP e dispositivo simulado. O nome do dispositivo deve ser digitado aqui.

Uma quinta coluna (opcional) pode ser usada para especificar o tipo de uma rota. As colunas desnecessárias devem conter um sinal de subtração - para garantir que o analisador interpretará o comando corretamente. Para obter mais detalhes, consulte a página de manual das rotas(5).

18.6.1.5. /etc/resolv.conf

O domínio ao qual o host pertence é especificado neste arquivo (palavra-chave search). Também está listado o status do endereço do servidor de nomes para acesso (palavra-chave nameserver). Vários nomes de domínios podem ser especificados. Durante a resolução de um nome não totalmente qualificado, uma tentativa de gerar um nome será feita, anexando as entradas de pesquisa individuais. Use vários servidores de nomes digitando várias linhas, todas iniciadas pelo servidor de nomes. Preceda os comentários com sinais #. O YaST insere o servidor de nomes especificado neste arquivo. O Exemplo 18.5, “/etc/resolv.conf mostra como a aparência de /etc/resolv.conf poderá ser.

Exemplo 18.5. /etc/resolv.conf


# Our domain
search example.com
#
# We use sun (192.168.0.20) as nameserver
nameserver 192.168.0.20

Alguns serviços, como pppd (wvdial), ipppd (isdn), dhcp (dhcpcd e dhclient), pcmcia e hotplug modificam o arquivo /etc/resolv.conf através do script modify_resolvconf. Se o arquivo /etc/resolv.conf tiver sido temporariamente modificado por esse script, ele conterá um comentário predefinido com informações sobre o serviço que o modificou, o local onde foi feito o backup do arquivo original e como desligar o mecanismo de modificação automática. Se /etc/resolv.conf for modificado várias vezes, o arquivo incluirá modificações de forma aninhada. Isso pode ser revertido de forma completa, mesmo que essa reversão ocorra em uma ordem diferente da ordem em que as modificações foram introduzidas. Entre os serviços que talvez necessitem dessa flexibilidade, estão incluídos isdn, pcmcia e hotplug.

Se um serviço não tiver terminado de forma normal e limpa, modify_resolvconf poderá ser usado para restaurar o arquivo original. Da mesma forma, na inicialização do sistema, uma verificação é feita para ver se há um resolv.conf modificado que não esteja limpo. Por exemplo, após uma falha no sistema, o resolv.conf original (não modificado) será restaurado.

O YaST usa o comando modify_resolvconf check para descobrir se o resolv.conf foi modificado e, logo depois, avisa o usuário de que as modificações serão perdidas após a restauração do arquivo. Além disso, o YaST não se baseia no modify_resolvconf, o que significa que o impacto de modificar o resolv.conf através do YaST é o mesmo que o de qualquer mudança manual. Em ambos os casos, as mudanças têm um efeito permanente. As modificações solicitadas pelos serviços mencionados são somente temporárias.

18.6.1.6. /etc/hosts

Nesse arquivo, mostrado no Exemplo 18.6, “/etc/hosts, os endereços IP são designados a nomes de host. Se nenhum servidor de nomes for implementado, todos os hosts nos quais uma conexão IP for configurada precisarão ser listados aqui. Para cada host, digite uma linha no arquivo com o endereço IP, o nome de host totalmente qualificado e o nome de host. O endereço IP precisa estar no início da linha e as entradas separadas por espaços vazios e guias. Comentários são sempre precedidos pelo sinal #.

Exemplo 18.6. /etc/hosts


127.0.0.1 localhost
192.168.0.20 sun.example.com sun
192.168.0.0 earth.example.com earth

18.6.1.7. /etc/networks

Aqui, os nomes de rede são convertidos em endereços de rede. O formato é semelhante ao do arquivo hosts, exceto que os nomes de rede precedem os endereços. Consulte o Exemplo 18.7, “/etc/networks.

Exemplo 18.7. /etc/networks


loopback     127.0.0.0
localnet     192.168.0.0

18.6.1.8. /etc/host.conf

A resolução de nomes — conversão dos nomes de host e de rede através da biblioteca resolver— é controlada por esse arquivo. Esse arquivo é usado somente para programas vinculados a libc4 ou libc5. Para programas glibc atuais, consulte as configurações em /etc/nsswitch.conf. Um parâmetro precisa estar sempre independente em sua própria linha. Comentários são precedidos pelo sinal #. A Tabela 18.6, “Parâmetros para /etc/host.conf” mostra os parâmetros disponíveis. Uma amostra de /etc/host.conf é mostrada no Exemplo 18.8, “ /etc/host.conf.

Tabela 18.6. Parâmetros para /etc/host.conf

order hosts, bind

Especifica em que ordem os serviços são acessados para a resolução de nomes. Os argumentos disponíveis são (separados por espaços vazios ou vírgulas):

hosts: pesquisa o arquivo /etc/hosts

bind: acessa um servidor de nomes

nis: usa o NIS

multi on/off

Define se um host digitado em /etc/hosts pode ter vários endereços IP.

nospoof on spoofalert on/off

Esses parâmetros influenciam o spoofing do servidor de nomes, mas, além disso, não exercem qualquer influência na configuração da rede.

trim domainname

O nome de domínio especificado é separado do nome de host depois da resolução do nome de host (desde que o nome de host inclua o nome de domínio). Essa opção será útil somente se os nomes de um domínio local estiverem no arquivo /etc/hosts, mas ainda deverão ser reconhecidos com os nomes de domínio anexados.

Exemplo 18.8. /etc/host.conf


# We have named running
order hosts bind
# Allow multiple addrs
multi on

18.6.1.9. /etc/nsswitch.conf

O lançamento do GNU C Library 2.0 foi acompanhado pelo lançamento do NSS (Name Service Switch). Consulte a página de manual do nsswitch.conf(5) e The GNU C Library Reference Manual (Manual de Referência da Biblioteca GNU C) para obter mais detalhes.

A ordem das consultas é definida no arquivo /etc/nsswitch.conf. Uma amostra do nsswitch.conf é exibida no Exemplo 18.9, “/etc/nsswitch.conf. Comentários são introduzidos pelo sinal #. Neste exemplo, a entrada no banco de dados hosts significa que uma solicitação foi enviada para /etc/hosts (arquivos) através do DNS (consulte o Capítulo 20, Domain Name System (Sistema de Nomes de Domínio)).

Exemplo 18.9. /etc/nsswitch.conf


passwd:     compat 
group:      compat

hosts:      files dns 
networks:   dns de arquivos

services:   db files 
protocols:  db files

netgroup:   files 
automount:  files nis 

Os “bancos de dados” disponíveis em NSS estão listados na Tabela 18.7, “Bancos de dados disponíveis através de /etc/nsswitch.conf”. Além disso, automount, bootparams, netmasks e publickey são aguardados em breve. As opções de configuração para bancos de dados NSS estão listadas na Tabela 18.8, “Opções de Configuração para Bancos de Dados “NSS””.

Tabela 18.7. Bancos de dados disponíveis através de /etc/nsswitch.conf

aliases

Álias de correio implementados por sendmail; consulte man 5 aliases.

ethers

Endereços de Ethernet.

group

Para grupos de usuários, usados por getgrent. Consulte também a página de manual para group.

hosts

Para nomes de hosts e endereços IP, usados por gethostbyname e funções similares.

netgroup

Listas de usuários e hosts válidos na rede com a finalidade de controlar permissões de acesso, consulte a página de manual do netgroup(5).

networks

Nomes e endereços de redes, usados por getnetent.

passwd

Senhas de usuários, usadas por getpwent; consulte a página de manual do passwd(5).

protocols

Protocolos de rede, usados por getprotoent; consulte a página de manual do protocols(5).

rpc

Nomes e endereços de RPC (Remote Procedure Call) usados por getrpcbyname e funções similares.

services

Serviços de rede, usados por getservent.

shadow

Senhas transitórias de usuários, usadas por getspnam; consulte a página de manual do shadow(5).

Tabela 18.8. Opções de Configuração para Bancos de Dados “NSS

arquivos

arquivos de acesso direto, por exemplo, /etc/aliases

db

acesso através de um banco de dados

nis, nisplus

NIS, consulte também o Capítulo 21, Usando o NIS

dns

só pode ser usado como uma extensão de hosts e networks

compat

só pode ser usado como uma extensão de passwd, shadow e group

18.6.1.10. /etc/nscd.conf

Esse arquivo é usado para configurar o nscd (name service cache daemon). Consulte as páginas de manual de nscd(8) e nscd.conf(5). Por padrão, as entradas do sistema de passwd e groups são armazenadas em cache pelo nscd. Isso é importante para o desempenho de serviços de diretório, como NIS e LDAP, pois, caso contrário, a conexão de rede precisaria ser usada para cada acesso a nomes ou grupos. hosts não é armazenado em cache por padrão, porque o mecanismo no nscd para armazenar hosts em cache impede o sistema local de confiar em verificações de pesquisa forward e reverse. Em vez de solicitar ao nscd para armazenar nomes em cache, configure um servidor DNS para armazenamento em cache.

Se o armazenamento em cache de passwd estiver ativado, normalmente levará quinze segundos para que um usuário local recentemente adicionado seja reconhecido. Reduza esse tempo de espera reiniciando o nscd com o comando rcnscd restart.

18.6.1.11. /etc/HOSTNAME

Contém o nome de host sem o nome de domínio anexado. Esse arquivo é lido por vários scripts durante a inicialização da máquina. Ele só pode conter uma linha na qual o nome de host é configurado.

18.6.2. Scripts de Inicialização

Além dos arquivos de configuração descritos acima, há também vários scripts que carregam os programas de rede durante a inicialização da máquina. Eles são iniciados assim que o sistema é alternado para um dos runlevels multiusuário. Alguns desses scripts são descritos na Tabela 18.9, “Alguns scripts de inicialização para programas de rede”.

Tabela 18.9. Alguns scripts de inicialização para programas de rede

/etc/init.d/network

Este script controla a configuração das interfaces de rede. O hardware já precisa ter sido inicializado pelo /etc/init.d/coldplug (através do hotplug). Se o serviço de rede não tiver sido iniciado, nenhuma interface de rede será implementada quando for inserida pelo hotplug.

/etc/init.d/network

Inicia o xinetd. O xinetd pode ser usado para disponibilizar os serviços do servidor no sistema. Por exemplo, ele pode iniciar o vsftpd sempre que uma conexão FTP for inicializada.

/etc/init.d/portmap

Inicia o portmapper necessário para o servidor RPC, como um servidor NFS.

/etc/init.d/nfsserver

Inicia o servidor NFS.

/etc/init.d/sendmail

Controla o processo sendmail.

/etc/init.d/ypserv

Inicia o servidor NIS.

/etc/init.d/ypbind

Inicia o cliente NIS.