linux routing ou natting com ip na interface de loopback como alias

1

Eu tenho

eth0:0 192.168.2.10 (for bgp network announce, no vlan, alias on eth0)
eth0.1 192.168.3.20 (for bgp session 1,vlan3 transport to bgp router)
eth0.2 192.168.4.30 (for bgp session 2,vlan4 transport to bgp router)

a rota padrão é dada pela zebra (192.168.3.1 ou 192.168.4.1 - failover)

quando o ip externo (192.168.1.100) tenta se conectar a 192.168.2.10 - > os pacotes respondidos vão através de 192.168.3.1 (onde o ip da fonte para este é 192.168.3.20). Isso funciona correto. Mas eu quero endereço de origem para 192.168.2.10. O principal problema é quando o asterisco está sendo executado em 192.168.2.10 e os clientes tentam registrar o gole de 192.168.1.100 - > as respostas são enviadas de 192.168.3.20 e os pacotes são descartados no lado remoto.

Como consertar / resolver isso? ou existe alguma outra maneira de interfaces de configuração? A idéia principal é mudar o roteamento para 192.168.2.10 se uma das sessões do BGP ficar inoperante.

rp_filter=0 on all interfaces

Se eu colocar algo como:

iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -j SNAT --to-source 192.168.5.58

isso também não funciona.

Todo o problema é que o asterisco está por trás do nat neste esquema. se eu rodá-lo em todas as interfaces - > O cliente do sip conecta ok nos ip 192.168.4.30 e 192.168.3.20, mas não no 192.168.2.10 um.

    
por MealstroM 25.07.2012 / 22:09

2 respostas

2

lo no Linux não é o mesmo que loopback em um Cisco.

Qualquer endereço atribuído a ele no Linux deve ser usado somente para a máquina enviar tráfego para si mesmo; o kernel considerará qualquer pacote com um IP de origem que corresponda a um atribuído a lo como marciano e será descartado na entrada - esse é um comportamento codificado. O kernel, aliás, também usa lo para enviar tráfego para si mesmo para um IP em qualquer outra interface (assim, por exemplo, se eth0 tem 10.0.0.1 e você faz ping, um tcpdump no lo mostrará o pedido de eco e resposta)

Para um equivalente ao estilo Cisco de uma interface de loopback, use o módulo kernel "fictício" - esteja ciente de que o módulo fictício também atua como um sumidouro para o tráfego roteado para ele (como null0 em um Cisco) para qualquer endereço você atribui a ele deve ser um / 32 uma vez que obviamente nada estará no link para uma interface fictícia.

    
por 12.08.2012 / 11:55
0

Colocar endereços não-loopback na interface lo está fadado a causar estranheza. Eu sugiro que você anexe 192.168.2.10 a eth0 .

    
por 26.07.2012 / 07:32