Roteamento de política com conexões ppp com balanceamento de carga

3

Esta minha configuração usando o Debian 6.0. 6. Sua função é um servidor proxy e um balanceador de carga usando oito modems 3G.

Sempre que uma conexão ppp disca, ela assume o gateway padrão, o que é ok, mas também me interrompe. A razão é que no Ubuntu eu notei que ele não faz isso por padrão. Por padrão, ele deixará o gateway ethX intacto. Eu poderia ter adicionado no arquivo de opções do ppp replacedefaultroute , mas problemas com o iptables no Ubuntu me fizeram mudar para o Debian.

Agora não consigo pingar outros hosts na LAN, mas outros hosts podem me fazer ping. Eu também perco a conectividade do lado de fora e a única maneira de obter acesso é através de outro computador de dentro da LAN. Também todos os hosts na LAN podem usar o proxy.

O que eu descobri é que se eu adicionar uma tabela de roteamento separada chamada e1 e copiar

192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.126
default via 192.168.2.3 dev eth0

Da tabela principal para a tabela e1 e faça:

ip rule add table e1

Funciona, mas isso não é o que eu quero, pois todas as conexões agora fluem pela interface eth0.

O que eu posso tentar restaurar as conexões que vêm de fora e se comunicar com os computadores locais? No entanto, todo o tráfego proveniente da LAN ainda deve ser feito através dos links ppp.

root@proxy:~# iptables -L OUTPUT -t mangle -v
Chain OUTPUT (policy ACCEPT 433K packets, 217M bytes)
pkts bytes target     prot opt in     out     source               destination
433K  217M CONNMARK   all  --  any    any     anywhere             anywhere            CONNMARK restore
 929 61011 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 MARK set 0x1
 929 61721 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 1 MARK set 0x2
 929 61461 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 2 MARK set 0x3
 929 61438 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 3 MARK set 0x4
 929 61530 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 4 MARK set 0x5
 929 61022 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 5 MARK set 0x6
 929 61738 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 6 MARK set 0x7
 928 61224 MARK       all  --  any    any     anywhere             anywhere            state NEW statistic mode nth every 8 packet 7 MARK set 0x8
433K  217M CONNMARK   all  --  any    any     anywhere             anywhere            CONNMARK save


root@proxy:~# iptables -L POSTROUTING -t nat -v
Chain POSTROUTING (policy ACCEPT 285 packets, 18881 bytes)
 pkts bytes target     prot opt in     out     source               destination
  743 49005 MASQUERADE  all  --  any    ppp0    anywhere             anywhere
  705 47291 MASQUERADE  all  --  any    ppp1    anywhere             anywhere
  679 45581 MASQUERADE  all  --  any    ppp2    anywhere             anywhere
  679 45598 MASQUERADE  all  --  any    ppp3    anywhere             anywhere
  670 45177 MASQUERADE  all  --  any    ppp4    anywhere             anywhere
  638 42447 MASQUERADE  all  --  any    ppp5    anywhere             anywhere
  724 48671 MASQUERADE  all  --  any    ppp6    anywhere             anywhere
  679 45182 MASQUERADE  all  --  any    ppp7    anywhere             anywhere
root@proxy:~#

root@proxy:~# ip rule
0:      from all lookup local
32758:  from all fwmark 0x8 lookup d8
32759:  from all fwmark 0x7 lookup d7
32760:  from all fwmark 0x6 lookup d6
32761:  from all fwmark 0x5 lookup d5
32762:  from all fwmark 0x4 lookup d4
32763:  from all fwmark 0x3 lookup d3
32764:  from all fwmark 0x2 lookup d2
32765:  from all fwmark 0x1 lookup d1
32766:  from all lookup main
32767:  from all lookup default

root@proxy:~# ip ro sh t d1
default via 10.64.64.64 dev ppp0
root@proxy:~# ip ro sh t d2
default via 10.64.64.65 dev ppp1
root@proxy:~# ip ro sh t d3
default via 10.64.64.66 dev ppp2
root@proxy:~# ip ro sh t d4
default via 10.64.64.67 dev ppp3
root@proxy:~# ip ro sh t d5
default via 10.64.64.68 dev ppp4
root@proxy:~# ip ro sh t d6
default via 10.64.64.69 dev ppp5
root@proxy:~# ip ro sh t d7
default via 10.64.64.70 dev ppp6
root@proxy:~# ip ro sh t d8
default via 10.64.64.71 dev ppp7


root@proxy:~# ip ro
10.64.64.67 dev ppp3  proto kernel  scope link  src 10.90.33.221
10.64.64.66 dev ppp2  proto kernel  scope link  src 10.18.11.90
10.64.64.65 dev ppp1  proto kernel  scope link  src 10.90.14.235
10.64.64.64 dev ppp0  proto kernel  scope link  src 10.18.27.226
10.64.64.71 dev ppp7  proto kernel  scope link  src 172.22.201.81
10.64.64.70 dev ppp6  proto kernel  scope link  src 10.80.131.6
10.64.64.69 dev ppp5  proto kernel  scope link  src 172.20.17.183
10.64.64.68 dev ppp4  proto kernel  scope link  src 10.80.61.34
192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.126
default via 192.168.2.3 dev eth0
root@proxy:~#

Se você puder me dar algumas ideias, eu agradeceria.

.

    
por ovidiucs 07.11.2012 / 16:16

2 respostas

0

  1. O acesso de fora era bom quando eu encaminhava a maldita porta SSH no roteador.
  2. A comunicação com outros computadores no 192.168.2.0/24 netowrk está ok somente após a emissão deste comando no iptables Nesses casos, eu só queria que o .253 (DNS local) falasse comigo (.126)

    iptables -A OUTPUT -t mangle -s 192.168.2.126 -d 192.168.2.253 -j MARK --set-mark 16

Na lista de iptables eu tenho regras que basicamente indicam, cada nova conexão deve ser marcada e, executar a decisão de roteamento e depois ir para a cadeia de POSTROUTING. Desde então, estou etiquetando pacotes com critérios específicos (tag mark 16), as regras de ip não irão coincidir com as fwmarks, então a única rota é encontrada na tabela principal padrão da regra de ip

192.168.2.0/24 dev eth0  proto kernel  scope link  src 192.168.2.126  metric 1 
    
por 08.11.2012 / 14:37
0

Em OUTPUT, você está marcando cada novo pacote, até mesmo cujo endereço de destino está em sua LAN.

Suas tabelas de roteamento ppp possuem apenas uma entrada padrão. Isso significa que todos os pacotes que forem para uma dessas tabelas sempre serão roteados através do seu gateway no ppp *. Mesmo que o endereço de destino desse pacote esteja na sua LAN. Isso porque as regras são avaliadas em ordem de prioridade crescente, e suas tabelas d [0-8] são testadas antes de main .

Como tal, pings para sua lan são roteados para seus dispositivos ppp e ficam NATed ... Então, se eles funcionam, é porque o gateway ppp selecionado tem outro host com o mesmo endereço IP em suas tabelas de roteamento.

Eu colocaria cada regra de LAN em uma tabela separada, que é testada antes das tabelas d [0-8], de forma que o tráfego que deveria ir para sua lan, vá para sua lan.

    
por 09.12.2012 / 12:04