6.8. Configurando Interfaces de Rede

Contribuição de Marc Fonvieille.

Nos dias de hoje é difícil pensar em um computador sem conexão de rede. Adicionar e configurar uma placa de rede é uma tarefa comum para qualquer administrador FreeBSD.

6.8.1. Encontrando o Driver Correto

Antes de começar, você deve saber o modelo da placa que você possui, o chip que ela usa, se é PCI ou ISA. FreeBSD tem suporte à uma grande variedade de plavas PCI e ISA. Verifique a Lista de Compatibilidade de Hardware da sua versão e veja se a sua placa é suportada.

Uma vez que a placa possui suporte, você precisa determinar o driver para ela. O arquivo /usr/src/sys/i386/conf/LINT te dará uma lista de drivers de placa de rede com alguma informação sobre os chipsets suportados. Se você estiver com dúvidas sobre qual driver é o correto, leia a página de manual do driver. O manual te dará informações sobre os dispositivos suportados e até sobre problemas que podem ocorrer.

Se você possui uma placa comum, provavelmente você não precisará procurar tanto por um driver. Drivers para as placas de rede mais comuns estão presentes no arquivo de kernel GENERIC, então sua placa deve aparecer durante a inicialização, tipo:

dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38
000ff irq 15 at device 11.0 on pci0
dc0: Ethernet address: 00:a0:cc:da:da:da
miibus0: <MII bus> on dc0
ukphy0: <Generic IEEE 802.3u media interface> on miibus0
ukphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30
000ff irq 11 at device 12.0 on pci0
dc1: Ethernet address: 00:a0:cc:da:da:db
miibus1: <MII bus> on dc1
ukphy1: <Generic IEEE 802.3u media interface> on miibus1
ukphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto

Neste exemplo, note que duas placas usam o driver dc(4), que já está presente no sistema.

Para usar a sua placa de rede você precisa carregar o driver apropriado. Isto pode ser feito de duas maneiras. A mais fácil é simplesmente carregar um módulo de kernel para a sua placa com o kldload(8). Um módulo não é disponível para todos os drivers de placa de rede (placas ISA que usam ed(4), por exemplo). Alternativamente, você pode compilar estaticamente o suporte para a sua placa no kernel. Verifique o arquivo /usr/src/sys/i386/conf/LINT e a página de manual do driver para saber o que adicionar ao seu arquivo de configuração do kernel. Para maiores informações de como recompilar seu kernel por favor veja o Capítulo 9. Se a sua placa foi detectada pelo seu kernel (GENERIC) durante a inicialização você não precisa construir um novo kernel.

6.8.2. Configurando a Placa de Rede

Uma vez que o driver correto da placa de rede está carregado, a placa precisar ser configurada. Como muitas outras coisas, a placa de rede pode ter sido configurada durante a instalação pelo sysinstall.

Para mostrar a configuração das placas de rede do seu sistema, entre com o seguinte comando:

% ifconfig
dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255
    ether 00:a0:cc:da:da:da
    media: Ethernet autoselect (100baseTX <full-duplex>)
    status: active
dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255
    ether 00:a0:cc:da:da:db
    media: Ethernet 10baseT/UTP
    status: no carrier
lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    inet 127.0.0.1 netmask 0xff000000
tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500

Nota: Versões antigas do FreeBSD podem requerer o parâmetro -a seguido de ifconfig(8), para mais detalhes sobre a sintaxe correta do ifconfig(8) por favor leia a página de manual. Note que também existem entradas referentes à IPv6 (inet6 etc.) que foram omitidas neste exemplo.

Neste exemplo, os seguintes dispositivos foram mostrados:

O FreeBSD usa o nome do driver seguido pela ordem na qual cada placa é detectada na inicialização do kernel para dar nome à placa. Por exemplo, sis2 pode ser a terceira placa de rede no sistema usando o driver sis(4).

Neste exemplo, o dispositivo dc0 está no ar. Os indicadores chave são:

  1. UP siginifica que a placa está configurada e pronta para uso.

  2. A placa tem um endereço Internet (inet) (neste caso 192.168.1.3).

  3. Tem uma máscara de rede válida (netmask; 0xffffff00 que é o mesmo que 255.255.255.0).

  4. Possui um endereço de broadcast válido (neste caso, 192.168.1.255).

  5. Possui um endereço MAC para a placa (ether) is 00:a0:cc:da:da:da

  6. A seleção física de mídia está no modo automático (media: Ethernet autoselect (100baseTX <full-duplex>)). Podemos ver que o dispositivo dc1 foi configurado para 10baseT/UTP. Para mais informações a respeito de tipos de mídia para um determinado driver, por favor verifique a respectiva página de manual.

  7. O estado da conexão (status) é active, ou seja, a conexão foi detectada. Para dc1, vemos status: no carrier. Isto é normal quando o cabo não está conectado à placa.

Se a saída do ifconfig(8) mostrou algo parecido com

dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500
        ether 00:a0:cc:da:da:da

pode indicar que a placa não foi configurada.

Para configurar sua placa, você precisa de previlégios de root. A configuração da placa de rede pode ser feita a partir da linha de comando com o ifconfig(8) mas você vai precisar refazer a configuração após cada inicializaçao. O arquivo /etc/rc.conf é o lugar para adicionar a configuração da placa de rede.

Abra o arquivo /etc/rc.conf no seu editor preferido. Você precisa adicionar uma linha para cada placa de rede presente no sistema, por exemplo, em nosso caso, adicionamos estas duas linhas:

ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0"
ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP"

Você precisa substituir dc0, dc1, e assim sucessivamente, com nomes de dispositivos corretos para suas placas, e os endereços apropriados. Você deve ler as páginas de manual do driver e ifconfig(8) para mais detalhes a respeito das opções permitidas e também rc.conf(5) para mais informações sobre a sintaxe em /etc/rc.conf.

Se você configurou a rede durante a instalação, algumas linhas de placa(s) de rede podem já estar presentes. Faça uma verificação dupla no arquivo /etc/rc.conf antes de adicionar qualquer linha.

Você também terá que editar o arquivo /etc/hosts para adicionar nomes e endereços IP das máquinas da Rede Local, se estes nomes ainda não estiverem lá. Para mais informações veja hosts(5) e /usr/share/examples/etc/hosts.

6.8.3. Testes e Resolução de Problemas

Uma vez feitas as configurações necessárias no /etc/rc.conf, você deve reinicializar seu sistema. Isto fará com que as mudanças em sua(s) placa(s) de rede sejam aplicadas, e verifique se seu sistema reinicializa sem erros de configuração.

Após reinicializar o sistema, você deve testar as interfaces de rede.

6.8.3.1. Testando a Placa Ethernet

Para verificar se uma placa Ethernet foi configurada corretamente, você precisa tentar duas coisas. Primeiro, execute o comando ping para a sua própria interface, e então faça o mesmo para outra máquina na sua Rede Local.

Primeiro teste para a interface local:

% ping -c5 192.168.1.3
PING 192.168.1.3 (192.168.1.3): 56 data bytes
64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms
64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms
64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms

--- 192.168.1.3 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms

Agora temos que usar o ping para outra máquina na Rede Local:

% ping -c5 192.168.1.2
PING 192.168.1.2 (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms
64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms

--- 192.168.1.2 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms

Você também pode usar o nome da máquina ao invés de 192.168.1.2 se você configurou o arquivo /etc/hosts.

6.8.3.2. Resolução de Problemas

Resolução de problemas de configuração de hardware e software sempre é doloroso, e uma dor que pode ser aliviada através da checagem de coisas simples antes de qualquer coisa. Seu cabo de rede está conectado? Você configurou os serviços de rede corretamente? Você configurou o firewall corretamente? A placa de rede que você está usando é suportada pelo FreeBSD? Sempre verifique as notas de hardware antes de enviar um relatório de falha. Atualize sua versão do FreeBSD para a última versão STABLE. Verifique os arquivos das listas de discussão, ou procure na Internet.

Se a placa funcionar, e a performance estiver ruim, vale dar uma lida na página de manual tuning(7). Você também pode verificar configurações de rede incorretas, que podem provocar lentidão nas conexões.

Alguns usuários passam por problemas de um ou dois ``device timeouts'', que é normal em algumas placas. Se eles continuarem, ou começar a incomodar, você pode querer ter certeza de que o dispositivo não está conflitando com outro dispositivo. Faça uma verificação dupla das conexões de cabeamento. Talvez você apenas precise de outra placa.

Algumas vezes, os usuários percebem pequenos erros ``watchdog timeout''. A primeira coisa a ser feita é checar o cabo da conexão. Muitas placas requerem um slot PCI que suporte gerenciamento de barramento. Em algumas placas-mãe antigas, apenas um slot permite isso (geralmente o slot 0). Verifique a documentação da placa de rede e da placa-mãe para saber se isto pode ser um problema.

A mensagem ``No route to host'' acontece quando o sistema não é capaz de rotear um pacote para a máquina de destino. Isto pode acontecer se nenhuma rota padrão for especificada, ou se um cabo estiver desconectado. Verifique a saída do comando netstat -rn e tenha certeza de que exista uma rota válida para a máquina que você está tentando alcançar. Se não existir, leia o Capítulo 19.

As mensagens de erro ``ping: sendto: Permission denied'' geralmente são provocadas por um firewall desconfigurado. Se o ipfw estiver habilitado no kernel mas não existirem regras definidas, então a política padrão é de negar todo o tráfego, até mesmo as requisições de ping! Leia a Seção 10.8 para maiores informações.

Algumas vezes a performance da placa é ruim, ou abaixo do normal. Nestes casos é melhor configurar o modo de seleção de mídia de autoselect para a velocidade correta. Enquanto isto pode funcionar para grande parte dos equipamentos, talvez não resolva o problema de todos. Novamente, verifique toda a configuração de rede, e leia a página de manual tuning(7).

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.