[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ next ]

Guia Foca GNU/Linux
Chapter 5 - Algumas Configurações de Rede


Este capítulo descreve alguns tipos de configurações que podem ser feitas em rede utilizando os recursos disponíveis do Linux. Aqui não estão todas as aplicações, pois o sistema é bastante flexível e o próprio time de desenvolvimento do kernel não demonstrou limitações quanto as formas de se construir uma rede :-)


5.1 IP Alias

Este recurso permite configurar uma interface de rede para responder por um ou mais IPs, que não precisam pertencer a mesma faixa. Para usuários externos, a impressão é que a rede tem "muitas" máquinas, quando na realidade apenas uma responde por todos estes endereços virtuais. Podemos citar algumas utilizações úteis deste recurso:

Para configurar o recurso de IP Alias é necessário apenas que a opção IP Aliasing Support seja habilitada no kernel (como módulo ou embutida). Em nosso exemplo abaixo, temos uma rede com a interface eth0 configurada com o IP 192.168.1.1 (classe C privada) e queremos adicionar uma interface virtual que atenda pelo IP 172.16.0.1 (classe B privada) e depois seguir os seguintes passos:

  1. Ative a interface de rede com ifconfig ou ifup (caso esteja usando a Debian).
  2. Crie uma interface virtual usando o comando ifconfig eth0:0 172.16.0.1. Isto criará uma nova interface chamada eth0:0 que passará a responder pelo IP 172.6.0.1. É permitido o uso de nomes para especificar a interface virtual, como: eth0:rede1, eth0:rede2, eth0:escritório.
  3. Digite ifconfig para ver as configurações de sua nova interface de rede. Use o ping também para vê-la: ping 172.16.0.1.
         eth0       Encapsulamento do Link: Ethernet  Endereço de HW 00:80:AE:B3:AA:AA
                   inet end.: 192.168.1.1  Bcast:192.168.1.255  Masc:255.255.255.0
                   UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
                   RX packets:979 errors:0 dropped:0 overruns:0 frame:0
                   TX packets:1228 errors:0 dropped:0 overruns:0 carrier:0
                   colisões:1 txqueuelen:100 
                   RX bytes:71516 (69.8 Kb)  TX bytes:1146031 (1.0 Mb)
                   IRQ:10 Endereço de E/S:0x300 
         
         eth0:0    Encapsulamento do Link: Ethernet  Endereço de HW 00:80:AE:B3:AA:AA
                   inet end.: 192.168.1.10  Bcast:192.168.1.255  Masc:255.255.255.0
                   UP BROADCASTRUNNING MULTICAST  MTU:1500  Métrica:1
                   IRQ:10 Endereço de E/S:0x300
    

    Note que o MAC Address da placa eth0 e eth0:0 são o mesmo, indicando que a mesma interface atende ambos os IPs.

  4. Se necessário ajuste as rotas ou gateway com o comando route (veja Configurando uma rota no Linux, Section 4.5.1).

Para desativar uma interface de rede virtual, utilize a sintaxe: ifconfig eth0:0 down ou ifdown eth0:0 (caso esteja usando a Debian).

Se o teste com o ping não funcionar, verifique se possui o suporte a IP Alias no kernel, se o módulo precisa ser carregado manualmente (caso seu kernel não esteja compilado com o kmod) ou se existe um firewall restritivo bloqueando seu IP.

Na distribuição Debian a configuração de uma interface virtual pode ser feita de forma idêntica a interfaces estáticas padrão:

     auto eth0
     iface eth0 inet static
      address 192.168.1.1
      netmask 255.255.255.0
      network 192.168.1.0
      broadcast 192.168.1.255
     
     auto eth0:0
     iface eth0:0 inet static
      address 172.16.0.1
      netmask 255.255.0.0
      network 172.16.0.1
      broadcast 172.16.255.255

OBS1: Quando você desativa uma interface física (eth0), todas as interfaces virtuais também são desativadas.

OBS2: Caso utilize um firewall (principalmente com a política padrão permissiva), esteja atento as modificações que precisa realizar para não comprometer a segurança de sua máquina. Caso tenha dados considerados seguros em sua máquina e esteja em dúvida sobre as implicações de segurança do IP Alias em sua máquina, consulte seu administrador de redes.

OBS3: Note que somente os 4 primeiros caracteres serão mostrados na saída do ifconfig, desta forma procure utilizar no máximo esta quantidade de caracteres para evitar problemas durante uma futura administração do servidor, no caso de esquecimento do nome completo da interface virtual).


5.2 Bridge

Uma bridge é uma interface de rede lógica composta por uma ou mais interfaces de rede física operando em nível 2 (enviando pacotes através de MAC adresses, veja Camadas de Rede, Section 4.10).

Sua operação é transparente na rede, podendo ser usada como um switch/firewall, estação de monitoração, etc. Aqui descreverei como montar uma bridge simples e uma aplicação de firewall simples. As possibilidades são diversas e uma configuração bem feita pode detectar ataques, protocolos desconhecidos até virus complexos de rede.


5.2.1 Requerimentos para a Instalação

É necessário um dos seguintes requerimentos para se montar uma bridge:

Ative a opção 802.1d Ethernet Bridging na seção Networking Options, recompile e instale seu novo kernel. Caso tenha aplicado o patch bridge nf, aparecerá uma sub opção chamada netfilter (firewalling) support que permitirá que o firewall trabalhe com as interfaces físicas ao invés de somente através da interface virtual criada pela bridge.

OBS: O patch bridge nf viola a RFC de bridges. Mesmo assim ela é a única opção em muitas aplicações, principalmente quando se deseja controlar o tráfego que atravessam as interfaces. Após isto instale o pacote bridge-utils, ele possui os utilitários necessários para ativar, configurar e monitorar o funcionamento de sua bridge.

Não é necessária ativação do ip_forward para o funcionamento da bridge, uma vez que ela funcionará como uma interface lógica que reúne interfaces de rede físicas.


5.2.2 Configuração da bridge

Nos exemplos abaixo, eu assumirei a utilização do nome de dispositivo br0 para se referir a bridge no sistema. Siga estes passos para configurar uma bridge em sistemas Debian:

Pronto, você terá uma bridge simples já configurada e funcionando em seu sistema! As interfaces físicas serão configuradas com o IP 0.0.0.0 e estarão operando em modo promíscuo.


5.2.3 Configurações mais avançadas de bridge

A bridge permite ainda definir prioridade para utilização de interfaces, além de outras funcionalidades que lhe permitem ajustar a performance da máquina de acordo com sua rede. Um bom exemplo, é quando voce deseja criar 2 bridges em uma mesma máquina envolvendo interfaces de rede específicas, uma atendendo a rede 192.168.0.x e outra a rede 192.168.1.x:

     auto br0
     iface br0 inet static
         address 192.168.0.2
         network 192.168.0.0
         netmask 255.255.255.0
         broadcast 192.168.0.255
         gateway 192.168.0.1
         bridge_ports eth0 eth1
     
     auto br1
     iface br1 inet static
         address 192.168.1.2
         network 192.168.1.0
         netmask 255.255.255.0
         broadcast 192.168.1.255
         gateway 192.168.0.1
         bridge_ports eth2 eth3 eth4

No exemplo acima, as interfaces eth0 e eth1 fazem parte da bridge br0 e as demais (eth0, eth1 e eth2 da bridge br1.

         bridge_ports eth2 eth3
         bridge_bridgeprio 16385
         bridge_portprio eth1 100
         bridge_fd 5

5.2.4 Configuração manual da bridge

Internamente, o que o ifup faz é interpretar os parâmetros no arquivo de configuração e executar os comandos do pacote bridge-utils para ativar a interface da brige. O utilitário responsável por este processo é o brctl. Será documentado aqui como ativar uma bridge através deste programa (que servirá para fazer uma bridge em qualquer sistema Linux).

     brctl addbr br0
     brctl addif br0 eth0
     brctl addif br0 eth1
     
     ifconfig eth0 0.0.0.0
     ifconfig eth1 0.0.0.0
     ifconfig br0 192.168.0.4

O comando acima ativa uma bridge simples, como o primeiro exemplo. Tenha certeza que as interfaces físicas de rede estão desativadas antes de executar este comando.

Outros parâmetros que podem ser usados com o brctl:

setbridgeprio [bridge] [prioridade]
Define a prioridade da bridge, o valor deve estar entre 0 e 65536 (16 bits). Valores menores definem uma prioridade maior.
setfd [bridge] [tempo]
Ajusta o delay da bridge especificada em [tempo] segundos.
setmaxage [bridge] [tempo]
Ajusta o tempo máximo de vida da bridge para [tempo] segundos.
setportprio [bridge] [interface] [prioridade]
Ajusta a prioridade da [interface] especificada na [bridge]. O valor de prioridade deve estar entre 0 e 255 (8 bits). Quanto menor o valor maior a prioridade. Isto é útil para otimizações o volume de tráfego em máquinas que possuem diversas interfaces configuradas fazendo parte da bridge.
     brctl addbr br0
     brctl addif br0 eth0
     brctl addif br0 eth1
     brctl setportprio br0 eth0 50
     brctl setportprio br0 eth1 80
     brctl setfd br0 2
     
     ifconfig eth0 0.0.0.0
     ifconfig eth1 0.0.0.0
     ifconfig br0 192.168.0.4

5.2.5 Usando o iptables para construir um firewall na máquina da bridge

A construção de um firewall em uma bridge não tem maiores segredos, basta referir-se a interface lógica da bridge para construir suas regras (tendo em mente como uma bridge funciona e como os pacotes atravessarão as interfaces).

Caso aplique o patch bridge nf, será possível referir-se as interfaces locais de rede e também a da bridge. Neste caso a interface da bridge será identificada como interface IN ou OUT PHYSIN e as interfaces físicas como PHYSOUT:

     Oct 22 09:19:24 router kernel: IN=br0 PHYSIN=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:00:d4:7d:ff:ff:ff:08:00 SRC=192.168.0.4 DST=1982.168.255.255 LEN=238 TOS=0x00 PREC=0x00 TTL=128 ID=23383 PROTO=UDP SPT=138 DPT=138 LEN=218

Mesmo que a bridge não necessite de ip_forward ativado para redirecionar os pacotes através das interfaces, isto será necessário para habilitar o uso do firewall para controlar o tráfego que atravessa as interfaces.


5.2.6 Filtrando pacotes não IP na bridge

Para fazer esta tarefa, utilize a ferramenta ebtables disponível em (http://users.pandora.be/bart.de.schuymer/ebtables/).


[ previous ] [ Contents ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ] [ 20 ] [ next ]

Guia Foca GNU/Linux

Versão 6.10 - Sunday, 03 de November de 2002
Gleydson Mazioli da Silva gleydson@cipsga.org.br