Pedro Pereira

Segurança da informação, Linux, tutoriais, consultoria e outras coisas que podem te ajudar!

Configurando bridges no CentOS



Uma bridge nada mais é que um dispositivo que interliga duas redes com topologias distintas ou não, mas que obrigatoriamente utilizam a mesma tecnologia (como Ethernet, por exemplo). A bridge criará novos domínios de colisão, porém não fará nada em relação aos domínios de broadcast. Assim, fica claro que uma bridge não faz roteamento algum.

Bridges são úteis em vários casos como em uma VPN bem específica (como a que eu citei no post “OpenVPN se comportando como PPTP“), ao fazer um firewall transparente (virtualmente impossível de se invadir) ou quando você está configurando um sensor do Snort. Em qualquer um destes casos, uma bridge consegue aumentar um pouco mais a funcionalidade da aplicação.

Aqui vou lhe ensinar a criar uma bridge formada por duas placas de rede no CentOS, sem uma aplicação específica. Mas não se desespere! O processo para a criação de uma bridge (qualquer que seja a apliação que irá utilizá-la) é sempre o mesmo.

Hardware necessário

Quando você cria uma bridge as interfaces envolvidas passam a operar sem IP’s, apenas repassando os pacotes de um lado para outro. Portanto, se você só tiver duas placas de rede em uma máquina e adicionar ambas a uma bridge, você perderá acesso ao seu servidor. Por isso, serão necessárias três placas de rede para o seu servidor: duas delas formarão a bridge e a terceira permitirá que você acesse o servidor através da rede, utilizando o SSH, por exemplo.

Software necessário

No CentOS você vai precisar do pacote “bridge-utils” que irá instalar todos os componentes necessários para que você consiga gerenciar, criar e configurar uma bridge no seu servidor.

Para instalar o pacote:

# yum -y install bridge-utils

Ao final da instalação, todo o software necessário já estará disponível para seu uso. Vamos então à configuração.

Configuração das placas de rede do servidor

Uma dúvida que pode surgir é: “Se as placas de rede da bridge não possuem IP’s, como ficaria o arquivo de configuração delas?”. Aqui, vou te mostrar os arquivos de configuração das interfaces da bridge e da interface utilizada para fins administrativos.

Na minha máquina de testes utilizei o seguinte esquema:

  • eth0: Interface utilizada para tarefas administrativas (acesso remoto do administrador, acesso à Intra/Internet para permitir atualizações, etc);
  • eth1: Uma das interfaces da bridge;
  • eth2: A segunda interface da bridge.

A configuração da eth0 será como a de qualquer outra interface de rede: você deve definir um IP, o gateway, se ela será ativada no boot ou não, etc. Um exemplo do arquivo /etc/sysconfig/network-scripts/ifcfg-eth0 é:

DEVICE=eth0
BOOTPROTO=static
HWADDR=08:00:27:8A:FD:9E
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BROADCAST=192.168.1.255
NETWORK=192.168.1.0

A configuração das duas interfaces que farão parte de bridge serão exatamente iguais (exceto, obviamente, pela opção DEVICE que deverá conter o nome do dispositivo sendo configurado e pela opção HWADDR. Neste caso, eth1 ou eth2 e seus respectivos endereços MAC), por isso só vou colocar a configuração de uma delas aqui:

DEVICE=eth1
BOOTPROTO=static
ONBOOT=yes
HWADDR=08:00:27:BC:AB:9F

Reinicie o serviço “network” para que as novas configurações passem a valer:

# service network restart

Ao digitar “ifconfig” como root no terminal, você perceberá que embora as interfaces eth1 e eth2 estejam ativas, elas não possuem IP’s. Isso é normal, é assim mesmo que ela devem ficar para que tudo funcione corretamente. Agora podemos configurar a bridge.

Configurando uma bridge

A configuração de bridges é, na verdade, extremamente simples. Para todas as operações relacionadas à ela você deverá utilizar o comando brctl.

Antes de adicionar as interfaces à bridge, você deve criar essa interface no sistema (você não pode adicionar interfaces à uma bridge que não existe!). Para isso, execute o seguinte comando:

# brctl addbr br0
Bridge firewalling registered

Isso criará a interface br0, que será a nossa bridge. Agora sim podemos adicionar as interfaces que formarão a bridge:

# brctl addif br0 eth1
# brctl addif br0 eth2

Ok, bridge criada e interfaces adicionadas. Agora vamos precisar ativar a bridge. Execute o seguinte comando:

# ip link set br0 up

Pronto, para todos os efeitos sua máquina Linux está agindo como um switch ethernet.

Comandos adicionais

O “brctl” ainda tem algumas opções muito úteis que poderão auxiliar você caso seja necessário fazer o troubleshooting da instalação. São eles:

  • brctl delbr <dispositivo de bridge>: Deleta a bridge especificada;
  • brctl delif <placa de rede>: Remove uma determinada placa de rede da bridge, porém mantém a bridge e também as outras placas que façam parte dela;
  • brctl show: Mostra todas as bridges configuradas no sistema (sim, você pode ter mais de uma) e alguns detalhes básicos;
  • brctl showmacs <dispositivo de bridge>: Mostra os MACs “descobertos” pela bridge configurada na sua máquina.

Conclusão

Uma bridge é extremamente útil em vários casos, porém também acarreta alguns problemas de segurança. Por isso, evite utilizar a bridge em um servidor que está diretamente conectado à Internet a menos que isso seja imperativo (como no caso da VPN descrita no post citado no início deste texto ou em um firewall transparente).

Algumas observações quando se está trabalhando com bridges:

  • Em um firewall transparente, utilize sempre a chain FORWARD quando for definir o que pode passar e o que deverá ser bloqueado;
  • Se algum serviço está configurado para ouvir a bridge durante sua operação, a bridge deve ser ativada antes deste serviço;
  • É sim possível definir um IP para a bridge utilizando um comando parecido com “ip addr add <ip da bridge>/<máscara da bridge em formato CIDR> brd + dev <dispositivo de bridge>”. Não gosto muito desta solução, prefiro utilizar uma terceira placa de rede;
  • Como firewall para trabalhar com a bridge você pode fazer como citado acima e utilizar o IPTables mesmo ou pode utilizar o EBTables.

Espero que o texto seja útil! Quaisquer dúvidas, críticas ou sugestões deixe um comentário!



Gostou do post? Então assine o feed RSS e não perca os próximos!




8 Comentários

  1. Bridges em linux « [WISP]tik Guy

    06|Jul|2011 1

    [...] Pedro Pereira [...]

  2. Pedro

    22|Dec|2011 2

    Viva,

    Tenho uma dúvida em relação a usar uma bridge para interligar duas subnets diferentes. Tenho 3 virtual machines no Virtualbox, a primeira está na subnet 192.168.1.0 e a segunda na 192.168.2.0. Depois a terceira seria a bridge, com dois interfaces de rede virtuais. Desta forma como é que eu utilizo a terceira vm para interligar as outras duas nas subnets diferentes?

  3. Ricardo

    13|Aug|2012 3

    Gostaria de criar uma brigde entre um roteador cisco RV-042 com o linux. É possível.
    Motivo:
    No cisco (matriz) tenho uma VPN com outro cisco (filia). Agora queremos colocar na matriz um firewall em linux, depois do cisco, ou seja, a conexao da internet chega no cisco e do cisco ligo no firewall e uma segunda placa de rede do firewall no meu switch. Nao quero perder a vpn por hardware w passar todos os pacotres diretamento pro linux pra gerenciar via squid/shorewall.

  4. Pedro Pereira

    13|Aug|2012 4

    Ricardo,

    Acredito que você não vá ter problemas ao fazer isso. Como a máquina com bridge fica transparente, ela não vai interferir no tráfego. Para redirecionar os pacotes para o Squid, você precisa trabalhar com a chain “forward” para conseguir fazer com que o IPTables veja os pacotes.

    []‘s
    Pedro Pereira 

  5. Ricardo

    13|Aug|2012 5

    Então, meu problema é. Como deixar o Cisvo (RV-042) e o Linux em bridge, qual configuração do cisco eu devo mecher? No CISCO esta habilitado o DHCP e criando a rede interna como 192.168.0.0 la na filial esta como 192.168.10.0, so que na matriz vou colocar um firewall em linux com duas placas de rede eth0 e eth1. Quando se cria uma VPN usando o OpenVPN ele vai tipo assim:
    matriz: 192.168.0.0   <—> 10.1.1.1 <—–>  OpenVPN (matriz) —INTERNET—- OpenVPN (filial) <—–>10.1.1.2 <—-> 192.168.1.0 (FILIAL). No meu caso agora o CISCO cria a VPN ja na classe desejada, mas o linux vai ser colocado depois.
     

  6. Pedro Pereira

    18|Aug|2012 6

    Ricardo,

    A bridge vai ser só no Linux. Você configura ela como está no post e pronto, já pode usar a chain Forward do IPTables pra tratar o tráfego. No Cisco, pelo o que eu entendi, não vai ter mudança nenhuma.

    []‘s
    Pedro Pereira 

  7. Ricardo

    18|Aug|2012 7

    Vou experimentar faze-lo. Posto depois para saber como foi. Por enquanto, obrigado.

  8. Bridge (redes de computadores) « Acordo Coletivo (Petroleiros, Bancários, Prof de Saúde)

    18|Dec|2012 8

    [...] Configurar bridges no Linux -22.900540 -43.302211 Gostar disso:GosteiSeja o primeiro a gostar disso. [...]


Deixe seu comentário!