Como usar dois gateways com o mesmo endereço IP?

4

Eu tenho que configurar um NAT e dividir manualmente o tráfego da Internet entre dois gateways que estão conectados a uma caixa do Linux.

Não houve problema se cada gateway tiver um endereço IP específico. Eu posso fazer isso por iproute2 :

ip route add default via 192.168.1.1 dev eth1
ip route add 2.3.4.5 via 192.168.0.1 dev eth0
ip route add 8.9.4.5 via 192.168.0.1 dev eth0

Mas meu problema é tão simples! Não tenho acesso para alterar os endereços de gateways e os IDs de rede. Eu só preciso usar dois gateways da Internet com o mesmo endereço de uma caixa Linux, com o kernel 3.2.0 e superior.

                                                        +-----------+
                                                        | Gateway A |
                          +-----------------------+     |192.168.0.1|
                          |                   eth0+---->+-----------+
           +--------------+eth2   Linux Box       |
           |              |                   eth1+---->+-----------+
           |              +-----------------------+     | Gateway A |
           |                                            |192.168.0.1|
           |                                            +-----------+
  +--------+-----------+
  |  Private Network   |--------> Workstation A
  |                    |
  |    10.0.0.0/24     |--------> Workstation B
  +--------------------+

Como posso resolver esse problema usando as incríveis ferramentas de rede do Linux ( mangling , snat ou outra coisa)?

    
por pylover 17.09.2013 / 21:51

1 resposta

2

Finalmente eu entendi. depois de algumas tentativas, eu encontrei o kernel do Linux não tem nenhum problema nesta situação. funciona como charmoso! por este iproute2 rules & rotas:

eth0: 192.168.0.231/24 - > Gateway A: dwl2100ap

eth1: 192.168.0.230/24 - > Gateway B: dwlg132

Configurando interfaces:

ip addr add 192.168.0.231/24 dev eth0
ip addr add 192.168.0.230/24 dev eth1

Adicionando duas tabelas de roteamento:

echo "1       dwl2100ap" >> /etc/iproute2/rt_tables
echo "2       dwlg132" >> /etc/iproute2/rt_tables

Adicionando rotas a tabelas:

ip route add 192.168.0.0/24 dev eth0 src 192.168.0.231 table dwl2100ap
ip route add default via 192.168.0.1 dev eth0 table dwl2100ap

ip route add 192.168.0.0/24 dev eth1 src 192.168.0.230 table dwlg132
ip route add default via 192.168.0.1 dev eth1 table dwlg132

Em seguida, você configura as regras de roteamento. Eles realmente escolhem com qual tabela de roteamento será roteada. Você quer garantir que você direcione uma interface se já tiver o endereço de origem correspondente:

ip rule add from 192.168.0.231 table dwl2100ap
ip rule add from 192.168.0.230 table dwlg132

Mascarando todos os pacotes de saída:

iptables -tnat -APOSTROUTING -s10.0.0.0/24 -j MASQUERADE

Para permitir que o kernel divida a largura de banda, posso emitir essa rota:

ip route add default scope global nexthop via 192.168.0.1 dev eth0 weight 2 nexthop via 192.168.0.1 dev eth1 weight 1

Para rotear manualmente:

ip route add default via 192.168.0.1 dev eth0
ip route add 8.8.8.8 via 192.168.0.1 dev eth0
ip route add 8.8.4.4 via 192.168.0.1 dev eth1

EDIT 1:

Além disso, posso marcar alguns pacotes pelo iptables:

iptables -tmangle -APREROUTING -i eth2 -s 10.0.0.4 -jMARK --set-mark 4

Em seguida, direcione-os por meio da política de roteamento:

ip rule add fwmark 4 table dwl2100ap

Eu me pergunto se funciona com dois gateways com o mesmo endereço IP. no kernel 3.2.0-53.

    
por 18.09.2013 / 05:02