Mini-COMO FAZER Bridging Christopher Cole, cole@lynkmedia.com v1.10, 13 de novembro 1997 Este documento descreve como configurar uma Bridge em uma rede Ethernet. O que é uma Bridge Ethernet? É um dispositivo que controla os pacotes de dados dentro de uma sub-rede, na tentativa de reduzir a quantidade de tráfego entre redes. Uma Bridge é usualmente colocada entre dois grupos separados de computadores que conversam entre si, mas não entre computadores de outros grupos. Um bom exemplo disto é considerar um grupo de equipamentos Macintosh e um grupo de máquinas Unix. Os dois grupos de máquinas tendem a ter bastante tráfego entre si e o tráfego que produzem internamente em cada grupo causa colisões com outras máquinas que estejam tentando falar umas com as outras. Uma Bridge seria colocada entre estes grupos de computadores, isolando o tráfego local de cada sub-rede. O trabalho da Bridge é então examinar o destino dos pacotes de dados, um de cada vez e decidir se deve ou não repassá-los para o outro lado do segmento da Ethernet. O resultado é uma rede mais rápida com menos colisões. ______________________________________________________________________ Índice geral 1. Configuração 2. Problemas comuns ______________________________________________________________________ 11.. CCoonnffiigguurraaççããoo 1. Obter um arquivo de configuração de Bridges em: <ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz>. 2. Obter e ler o COMO FAZER ``Múltiplas Placas Ethernet": <ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet>. 3. Habilitar os múltiplos dispositivos Ethernet da máquina pelo acréscimo destes ao arquivo /etc/lilo.conf e reexecução do programa lilo: append = "ether=0,0,eth1" Caso se tenha três interfaces na Bridge, deve-se então utilizar a seguinte configuração: append = "ether=0,0,eth1 ether=0,0,eth2" Mais interfaces podem ser encontradas pelo acréscimo de mais parâmetros ether. Por padrão a inicialização do kernel do Linux testa uma única placa Ethernet, e uma vez que ela seja encontrada o exame cessa. A configuração acima indica para o kernel que ele deve continuar testando mais dispositivos Ethernet, mesmo após a localização do primeiro. Alternativamente o parâmetro de inicialização pode ser usado da seguinte forma: linux ether=0,0,eth1 Ou, com 3 interfaces, pode ser utilizado: linux ether=0,0,eth1 ether=0,0,eth2 4. O kernel deve ser recompilado com a opção BRIDGING habilitada. 5. Uma Bridge não deve ter um endereço IP. Ela PODE tê-lo, porém uma Bridge simplesmente não precisa de um. Para remover o endereço IP da Bridge, deve-se ir para o diretório /etc/sysconfig/network- scripts/ (em um sistema Conectiva Linux ou RedHat) e copiar o ifcfg-lo0 para ifcfg-eth0 & ifcfg-eth1. Nestes 2 arquivos eth, deve ser mudada a linha que contém ``DEVICE=lo'' para ``DEVICE=eth0" e ``DEVICE=eth1''. Outras distribuições podem divergir desta, sendo necessárias configurações similares. Caso haja mais que 2 interfaces para esta Bridge, certifique-se de fazer todas as configurações correspondentes às interfaces adicionais. 6. A seguir o sistema deve ser reinicializado para uso do novo kernel com a funcionalidade de "Bridge" habilitada e para certificar-se que os endereços IP não estão ligados às interfaces da rede. 7. Uma vez que tenha sido realizada a cópia de segurança do sistema, deve-se configurar as placas Ethernet para o modo promíscuo, para que elas examinem todos os pacotes que passem pela sua interface, através do seguinte comando: ifconfig promisc eth0 ; ifconfig promisc eth1 Todas as interfaces que forem conectadas aos segmentos da rede que devem ser interligados via Bridge, devem ser colocadas no modo promíscuo. 8. Deve-se ativar a Bridge através do programa brcfg: brcfg -ena 9. Deve-se então verificar se existe tráfego diferente em cada interface: tcpdump -i eth0 (em uma janela) tcpdump -i eth1 (em uma segunda janela) 10. A seguir deve ser executado um programa sniffer (apresenta o tráfego passante da rede) ou tcpdump numa outra máquina para verificar se a Bridge está separando corretamente o tráfego de cada segmento. 22.. PPrroobblleemmaass ccoommuunnss 1. PPeerrgguunnttaa Foi recebida a mensagem: ioctl(SIOCGIFBR) falhou: Pacote não instalado O que isto significa? RReessppoossttaa Não existe a funcionalidade de Bridge disponível no kernel. Deve-se obter um kernel 2.0 ou superior e recompilá-lo com a opção BRIDGING ativada. 2. PPeerrgguunnttaa As máquinas de um lado da Bridge não conseguem contactar as do outro lado! RReessppoossttaa · A conexão foi ativada através do comando ``brcfg -ena''? (brcfg, ou seja ``a conexão está CAPACITADA'') · As interfaces foram colocadas no modo promíscuo? Utilize o comando ``ifconfig''. O indicador ``PROMISC''deve estar ligado para as duas interfaces. · Caso se utilize adaptadores de interface de múltipla mídia, certifique-se de que a interface correta está habilitada. Pode ser necessário usar o programa de configuração que acompanha a placa de rede. 3. PPeerrgguunnttaa Não é possível executar o comando telnet/ftp a partir da Bridge! Por quê? RReessppoossttaa Isto é devido ao fato de não haver um endereço IP ligado a quaisquer interfaces da Bridge. Uma Bridge deve ser parte transparente da rede. 4. PPeerrgguunnttaa O que é necessário para configurar o roteamento? RReessppoossttaa Nada! Toda a inteligência do roteamento é dirigida pelo código de conexão no kernel. Para ver como os endereços Ethernet são aprendidos pela Bridge, deve ser utilizado o programa brcfg no modo de depuração: brcfg -deb 5. PPeerrgguunnttaa A Bridge parece funcionar, mas por que o ``traceroute'' não mostra a Bridge como uma parte do caminho? RReessppoossttaa Devido a natureza da Bridge, um ``traceroute'' NÃO deve mostrar a Bridge como uma parte do caminho. Uma Bridge é um componente transparente da rede. 6. PPeerrgguunnttaa É necessário compilar IP_FORWARD no kernel? RReessppoossttaa Não. O código de conexão no kernel cuida do transporte do pacote. IP_FORWARD é utilizado em um roteamento que utilize endereços IP ligados às interfaces. 7. PPeerrgguunnttaa Por que os endereços físicos da Ethernet para porta 1 e porta 2 são os mesmos de acordo com o programa ``brcfg''? Não deveriam ser diferentes? RReessppoossttaa Não. Todas as portas numa Bridge são designadas intencionalmente com o mesmo endereço físico da Ethernet pelo código de conexão do kernel. 8. PPeerrgguunnttaa Bridging não aparece como uma opção quando se executa um "make config" do kernel. Como se pode capacitá-la? RReessppoossttaa Durante a configuração do kernel, responda 'S' para pergunta, ``Perguntar por módulos em desenvolvimento e/ou códigos/programas de controle incompletos (CONFIG_EXPERIMENTAL) [S/n/?]''. 9. PPeerrgguunnttaa Muitos hubs (4 ou mais) se encadearam um após o outro (em série), o que causa problemas de sincronização na Ethernet. Que efeito tem uma Bridge numa sub-rede que esteja disposta em hubs? RReessppoossttaa Uma Bridge reajusta as regras dos 3/4/5 hubs. Uma Bridge não lida com pacotes da maneira que um hub faz e por isso não contribui para problemas de sincronização numa rede. 10. PPeerrgguunnttaa Pode uma interface Bridge ter segmentos tanto de 10 Mb como 100 Mb? Tal configuração pode desacelerar o resto do tráfego do lado de alta velocidade? RReessppoossttaa Sim, uma Bridge pode vincular um segmento de 10 Mb com um de 100 Mb, contanto que o placa da rede do lado da rede rápida da Bridge tenha capacidade de 100 Mb. O TCP cuidará do resto. Enquanto seja verdadeiro que os pacotes de uma máquina da rede de 100 Mb se comunicam com uma máquina de rede de 10 Mb e se movem a somente 10Mb/s, o restante do tráfego na Ethernet rápida não é desacelerado.