Linux bridging não encaminhando pacotes

6

Estou tentando configurar uma ponte Linux com duas interfaces ethernet e não consigo fazer com que ela funcione corretamente. Eu estou usando o Gentoo Linux e achei que seria bem fácil, mas acabei tendo problemas para fazer com que os pacotes passassem pela ponte. Tudo isso é virtualizado no Hyper-V, é importante para qualquer coisa (mas duvido).

Aqui vai minha configuração.

 ------              ------------------           --------         -----------
| NUX3 |------------|eth1  BRIDGE  eth0|---------| ROUTER |-------/ INTERNET /
 ------              ------------------           --------        -----------
192.168.1.195/24    192.168.1.197/24 (br0)     192.168.1.101/24
00:15:5d:00:01:12   00:15:5d:00:01:08 (eth0)   00:15:5d:00:01:03
                    00:15:5d:00:01:13 (eth1)       

# cat /etc/conf.d/net

bridge_br0=( "eth0 eth1" )
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.1.197 netmask 255.255.255.0 brd 192.168.1.255" )
routes_br0=( "default via 192.168.1.101" )

# brctl show

bridge name      bridge id              STP enabled      interfaces
br0              8000.00155d000108      no               eth0
                                                         eth1

# brctl showstp br0

<...>
eth0 (1)               state               forwarding
eth1 (2)               state               forwarding
<...>

# cat /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-iptables = 0

# ifconfig

<...>
br0    UP BROADCAST RUNNING MULTICAST
       inet addr:192.168.1.197  Bcast:192.168.1.255  Mask:255.255.255.0
<...>
eth0    UP BROADCAST RUNNING PROMISC MULTICAST
<...>
eth1    UP BROADCAST RUNNING PROMISC MULTICAST
<...>

# brctl showmacs br0

port no mac addr                    is local?        ageing timer
  1     00:15:5d:00:01:03           no                   1.51
  1     00:15:5d:00:01:08           yes                  0.00
  2     00:15:5d:00:01:12           no                  36.22
  2     00:15:5d:00:01:13           yes                  0.00

O BRIDGE pode fazer ping no ROUTER, mas não no NUX3, o NUX3 não pode fazer ping nem no BRIDGE nem no ROUTER. Tudo parece bom para mim, mas obviamente estou perdendo alguma coisa. Eu ficaria muito feliz se alguém puder me indicar isso!

Obrigado.

    
por Alexandre Nizoux 01.03.2010 / 11:14

3 respostas

6

É possível que os dispositivos de rede subjacentes no host não tenham o modo promíscuo ativado. No VMWare, por exemplo, se o adaptador de rede virtual subjacente não for + promisc, a ponte de convidado falhará miseravelmente - mesmo que acredite que é capaz de entrar no modo promíscuo, não pode.

Eu nunca usei o HyperV, mas a lógica deve ser a mesma, se o host não permitir que o convidado entre no modo promíscuo, a bridge não pode passar pacotes de um lado para o outro porque a placa de rede só irá lidar com quadros que são endereçados especificamente a ele.

Se você desabilitar a ponte, é possível fazer o ping do NUX3 e do roteador, correto?

    
por 01.03.2010 / 18:13
5

no gerenciador hyper-v, vá para as configurações da vm na qual deseja usar uma ponte e, sob cada interface de rede que você deseja usar como parte da ponte, ative a caixa de seleção "permitir falsificação de endereço mac". Estou usando o Windows Server 2008r2 SP1. Foi o que fiz para que funcionasse. Eu também estou usando o Ubuntu 12.04 que tem todos os drivers do Hyper-V pré-instalados, mas eu não acho que isso importe.

    
por 16.07.2012 / 20:01
2

Bridging funciona bem.

  1. Como dito antes, é necessário ativar o spoofing de endereço MAC
  2. Nos últimos kernels, o iptables também modifica os dados para bridge. Por isso, deve ser configurado ou desativado. Para desativar as regras do iptables para executar as pontes: sysctl net.bridge.bridge-nf-call-iptables = 0
por 02.08.2012 / 12:06