Roteamento baseado em política em uma interface de ponte

1

Atualmente estou configurando um Ubuntu 12.04 com 2 interfaces de rede. eth0 está em LAN_USERS (192.168.5.0/24) destinado ao usuário e eth1 está em LAN_INFRA (10.0.4.0) destinado ao gerenciamento. Além disso, configurei uma ponte na eth1.

cat /etc/network/interfaces :

auto eth0
iface eth0 inet static
  address 192.168.5.180
  netmask 255.255.255.0
  network 192.168.5.0
  broadcast 192.168.5.255
  gateway 192.168.5.1

auto eth1
iface eth1 inet manual

auto br1
iface br1 inet static
  address 10.0.4.5
  netmask 255.255.255.0
  network 10.0.4.0
  broadcast 10.0.4.255
  gateway 10.0.4.1
  bridge_ports eth1
  bridge_stp on
  bridge_fd 0
  bridge_waitport 0
  1. A partir do Ubuntu 12.04, a filtragem de caminho reverso está ativada (rp_filter = 1)
  2. A saída de # route -n é:
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.5.1     0.0.0.0         UG    100    0        0 eth0
    10.0.4.0        0.0.0.0         255.255.255.0   U     0      0        0 br1   
    192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
    

Por causa da filtragem de caminho reverso, br1 não é visível para redes diferentes de 10.0.4.0. Eu poderia desabilitar a filtragem de caminho reverso, mas decidi configurar o roteamento baseado em política.

Roteamento com base em política

  1. echo "250 infra >> /etc/iproute2/rt_tables
  2. ip rule add iif br1 table infra
  3. ip route add to default dev br1 table infra
  4. Kernel conf vars: CONFIG_IP_ADVANCED_ROUTER = y e CONFIG_IP_MULTIPLE_TABLES = y
  5. net.ipv4.ip_forward = 0
  6. net.ipv4.conf.eth1.rp_filter = 1
  7. net.ipv4.conf.br1.rp_filter = 1
  8. net.ipv4.conf.all.log_martians = 1

E não está funcionando ....

Como posso depurar minhas regras PBR? Algum erro óbvio com minha configuração?

Felicidades

UPDATE: O que eu preciso é rotear as respostas para os pacotes vindos do br1 de volta via br1 novamente e não eth0. Meu caso de uso mais simples é: pings de 192.168.5.10 a 10.0.4.5 não retornam causa da rota padrão e rp_filter = 1. Eles são descartados como pacotes marcianos.

    
por Vassilis 29.04.2013 / 13:22

1 resposta

0

Sua configuração diz: "Se um pacote chegou em br1, envie-o via br1." Isso obviamente não faz sentido. Regras como essa são para roteadores, mas você nem menciona o roteamento.

O que você quer dizer é: "Enviar pacotes que são uma resposta aos pacotes que chegaram na br1 via br1." Isso pode ser feito com as marcas de pacotes do Netfilter e com a ip rule option fwmark . Mas aqui isso não faria sentido. Como você usa o rp_filter, pode simplesmente rotear pelo endereço de destino. Você nem precisa de roteamento avançado ( ip rule ). Por isso. Roteamento normal simples deve fazer o trabalho: "Enviar 10.0.4.0/24 via br1, o resto via eth0."

Você explicou o que você fez, mas não mencionou nenhuma tarefa que exija uma configuração complicada. Se você "não faz nada" especial, o que dá errado então?

    
por 29.04.2013 / 13:40