Duas ADSL em um unico servidor

Iniciado por allanarab, 26 de Janeiro de 2013, 16:49

tópico anterior - próximo tópico

allanarab

Bom vou mostrar primerio a topologia da minha rede ...

1 servdior com squid cahce e filtro de conteudo
O servidor possui 4 placas de redes

eth0 --> ADSL1
eth1 --> ADSL2
eth2 --> Rede 192.168.10.0/24
eth3 --> Rede 192.168.20.0/24


As duas ADSL são do mesmo provedor (Netsuper - CTBC), o que quero é ligar as duas e direcionar a conexão da seguinte forma:

eth0 (PPP0) <--> eth2
eth1 (PPP1) <--> eth2

Não estou conseguindo fazer esse diecionamento, consigo ate subir as duas ADSL, o servidor ate navega mas a rede nao navega, parece que da conflito de gateway.

Obs.: antes que venham falar olha as regras do iptables ... abaixo esta parte delas ..

# Compartilhando
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE (neste caso estou apenas com a PPP0 ativa porque a rede num pode parar)

# Proxy Squid (e as duas redes estao usando o memso link)
iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth3 -p tcp --dport 80 -j REDIRECT --to-port 3128


ja segui esse artigo mas não deu certo (refiz 2 vezes): http://www.vivaolinux.com.br/artigo/Configurando-2-%28dois%29-links-ADSL-no-mesmo-servidor


Obs2: Não, as duas redes não podem partilhar da mesma ADSL e nem fazer balance das duas pois são redes de empresas distintas.


Quem puder me ajudar fico grato.

zekkerj

Sugestão: crie duas máquinas virtuais, conecte cada par de interfaces relacionado a cada uma delas.
Use o XEN (para-virtualização), vai ficar perfeito.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

allanarab

Citação de: zekkerj online 26 de Janeiro de 2013, 17:15
Sugestão: crie duas máquinas virtuais, conecte cada par de interfaces relacionado a cada uma delas.
Use o XEN (para-virtualização), vai ficar perfeito.


ja pensei nisso, mas é muito inviavel ...

zekkerj

Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

allanarab

Citação de: zekkerj online 26 de Janeiro de 2013, 18:12
Inviável pq?

manter uma maquina virtual consome recursos que eu poderia usar em outras aplicações alem de ter de repetir toda configuração de uma maquina na outra e sempre que houver uma mudança global de alguma regra eu ter de aplicar nas duas maquinas.

zekkerj

Vc quer comparar isso com a complexidade de montar uma solução de roteamento avançado? Além do quê, as máquinas podem ser simplesmente clonadas de uma pra outra. O consumo de recursos é pouco, para a máquina virtual Xen.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

allanarab

Citação de: zekkerj online 26 de Janeiro de 2013, 18:22
Vc quer comparar isso com a complexidade de montar uma solução de roteamento avançado? Além do quê, as máquinas podem ser simplesmente clonadas de uma pra outra. O consumo de recursos é pouco, para a máquina virtual Xen.


pensa o tabalho que da com a maquina virtual, instalar xen (configura-lo), instalar a maquina, configurar para ser clonada as confs ...
ja o roteamento ha de ser somente algumas linhas (não sei) e mesmo que cosuma poucos recursos a VM consumiria bem mais que algumas regras (creio simples), vou aguardar para ver se alguem tem uma opinião diferente.
Meu problema desconfio que esta concentrado mais no conflito de gateways pelo que venho lendo.

zekkerj

Citarja o roteamento ha de ser somente algumas linhas (não sei)
Exatamente, não sabe... podem até ser poucas linhas, mas são linhas de configuração delicada e complexa.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

zekkerj

CitarMeu problema desconfio que esta concentrado mais no conflito de gateways pelo que venho lendo.
Não, teu problema é que vc não pode usar roteamento normal --- vc tem que usar um tipo de roteamento que a Cisco chama de "PBR" --- Policy Based Routing.

No roteamento normal, a interface de saída é escolhida com base na tabela de rotas, comparando o endereço de destino do pacote com as rotas da tabela. Quando o endereço de destino bate com uma das rotas, a interface de saída associada com a rota é escolhida.

No PBR, a interface de saída é escolhida a partir de outro critério, que não o endereço de destino do pacote.

No nosso caso, você teria que ter duas tabelas de rotas distintas (o kernel permite isso) e usar a política de roteamento pra fazer com que os pacotes fossem roteados a partir de uma tabela de rotas ou de outra, com base na interface de entrada.

A princípio parece simples, parecem poucas linhas, mas você vai ver logo que (1) isso é complicado de implementar e manter; e (2) só funciona se os pacotes passarem intocados por sua máquina. Você não vai poder fazer nada com eles --- principalmente redirecionar pro teu squid, que vai pegar os pacotes e jogá-los todos no mesmo balaio. Depois de juntar tudo no squid não haverá nenhuma forma de separar o tráfego das duas empresas.

Já com as máquinas virtuais, vc vai ter uma instância de squid rodando em cada máquina. Sem stress, sem complicação.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

allanarab

Citação de: zekkerj online 26 de Janeiro de 2013, 18:46
Não, teu problema é que vc não pode usar roteamento normal --- vc tem que usar um tipo de roteamento que a Cisco chama de "PBR" --- Policy Based Routing.

No roteamento normal, a interface de saída é escolhida com base na tabela de rotas, comparando o endereço de destino do pacote com as rotas da tabela. Quando o endereço de destino bate com uma das rotas, a interface de saída associada com a rota é escolhida.

No PBR, a interface de saída é escolhida a partir de outro critério, que não o endereço de destino do pacote.

No nosso caso, você teria que ter duas tabelas de rotas distintas (o kernel permite isso) e usar a política de roteamento pra fazer com que os pacotes fossem roteados a partir de uma tabela de rotas ou de outra, com base na interface de entrada.

A princípio parece simples, parecem poucas linhas, mas você vai ver logo que (1) isso é complicado de implementar e manter; e (2) só funciona se os pacotes passarem intocados por sua máquina. Você não vai poder fazer nada com eles --- principalmente redirecionar pro teu squid, que vai pegar os pacotes e jogá-los todos no mesmo balaio. Depois de juntar tudo no squid não haverá nenhuma forma de separar o tráfego das duas empresas.

Já com as máquinas virtuais, vc vai ter uma instância de squid rodando em cada máquina. Sem stress, sem complicação.


sim, ja vi falar disso mas vi tambem que o squid (ou ate mesmo pelo iptables) podemos escolher o gateway( ou o ip de saida de cada rede), mais ou menos assim: http://blognu.wordpress.com/2010/06/15/controlando-2-links-de-internet-roteados-em-um-gateway-linux-com-squid/  ... so que não entendi muito esse tuto ...

zekkerj

Você não pode escolher o gateway do squid.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

allanarab

Citação de: zekkerj online 26 de Janeiro de 2013, 19:03
Você não pode escolher o gateway do squid.


mas eu posso fazer ele tratar cada conexao,

eth2 --> direcina para 3128 --> sai por ppp0
eth3 --> direcina para 3128 --> sai por ppp1

seria como se houvesse duas instacias do squid (sei lá) ... uma solução pra isso deve haver aushhuashu

zekkerj

Não, não pode... o squid não escolhe o caminho de saída, quem escolhe é o kernel.
E a partir do momento que vc direciona o tráfego que entrou por uma interface para o squid, esse tráfego é "consumido" pelo squid.
O tráfego que o squid gera é outro tráfego, que não vem mais da interface de entrada eth2 ou eth3, ele vem agora do squid.

Ou seja, não tem mais como separar o tráfego pela interface por onde entrou. Também não tem mais como separar pelo endereço de origem, pois ao sair, todo o tráfego tem o endereço de origem de sua máquina.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

zekkerj

Se vc não quer mesmo usar as máquinas virtuais, então não use o squid. Se o tráfego não passar pelo squid, vai ser possível fazer o roteamento policy based que vc precisa.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

allanarab

Citação de: zekkerj online 26 de Janeiro de 2013, 19:59
Se vc não quer mesmo usar as máquinas virtuais, então não use o squid. Se o tráfego não passar pelo squid, vai ser possível fazer o roteamento policy based que vc precisa.

Ate nao posso usar duas conexoes no squid .. ams posso criar duas instancias do squid compartilhar confs similares e depois disso direcionar a saida pelo iptables
achei dois artigos que unidos dão quase o que eu quero ...
mas ainda nao é o ideal ...

http://www.pinguimteajuda.com.br/node/224
http://serverfault.com/questions/274156/how-can-i-force-squid-proxy-to-use-a-specific-gateway-for-internet-access