[GTER] Balanceamento de entrada sem AS
Carlos André
candrecn at hotmail.com
Sun Jan 30 13:11:50 -02 2011
Pelo que eu pude entender, isso não funcionaria no cenário que ele propôs.
Ele tem 1 equipamento, com 2 gateways possíveis com 2 firewalls (1 para cada ISP/roteador) o pacote pode chegar pelos 2, mas sempre vai sair pelo gateway default já que a origem poderá ser qualquer IP do planeta e ele nunca saberá de qual gateway o pacote veio.
O unico meio de fazer isso sem que haja algum tipo de controle pelo 'estado' seria se ele soubesse antecipadamente que uma determinada rede entra pelo gateway #1 ou #2, aí ele poderia fazer marcação ou route policy (como você mesmo propôs) dizendo "nesse caso, não vá pelo gateway #1, vá pelo gateway #2", de maneira BEM manual.
Minha solução prática seria fazer, nos Firewalls, NAT para origem nas interfaces do lado do servidor web, o mesmo que você faz com suas estações para navegarem na internet, pega o IP privado da sua rede e vai para internet com IP público, só que no sentido inverso.
Supondo o seguinte cenário:
- Os 2 firewalls são Linux (não manjo de BSD então fico devendo, mas você pode converter a idéia facilmente se precisar:)
- eth0 = É a interface dos seus firewalls para sua rede local
- eth1 = É a interface virada para o roteador de cada ISP
- 192.168.0.1 = IP da sua rede local no Firewall #1 ligado ao roteador do ISP #1
- 192.168.0.2 = IP da sua rede local no Firewall #2 ligado ao roteador do ISP #2
- 192.168.0.10 = IP do seu servidor WEB, e a porta utilizada é a 80 e 443.
Você faria isso no Firewall #1:
# iptables -t nat -A POSTROUTING -o eth0 -d 192.168.0.10 -m multiport -p tcp --dport 80,443 -j SNAT --to 192.168.0.1
E você faria isso no Firewall #2:
# iptables -t nat -A POSTROUTING -o eth0 -d 192.168.0.10 -m multiport -p tcp --dport 80,443 -j SNAT --to 192.168.0.2
De maneira que não importa o IP de origem (que poderia ser qualquer um do planeta), ao passar pelo Firewall (seja #1 ou #2) com destino seu servidor WEB, ele receberia o próprio IP estático do Firewall, então seu servidor WEB saberia exatamente para quem entregar a resposta.
A mesma idéia poderia ser aplicada em cada roteador de cada ISP, só depende do fluxo de dados e o tamanho do equipamento.
Atenciosamente,
Carlos André
> Date: Sat, 29 Jan 2011 23:25:36 -0200
> From: danton.nunes at inexo.com.br
> To: gter at eng.registro.br
> Subject: Re: [GTER] Balanceamento de entrada sem AS
>
> On Fri, 28 Jan 2011, spiderslack wrote:
>
> > Tenho o rota padrão configurada para o ISP2, porém temos o servidor web
> > publicado nos 2 endereços tanto do ISP 1 como ISP 2. Com isso quando um fluxo
> > entra pelo ISP 1 volta pelo ISP 1 se o fluxo entra pelo ISP2 volta pelo ISP2
>
> por que? é necessário policy routing neste caso, pois a rota de saída está
> sendo decidida pelo endereço da origem.
>
> > A minha pergunta é existe algum outro SO/equipamento que faça isso? Eu testei
> > com um cisco não funciona mesmo eu fazendo nat um para um, a volta sempre sai
> > pela rota default. Linux também mesmo marcando pacotes com iproute.
>
> Com isto vai funcionar no Linux. Suponha que os endereços de saída sejam
> 192.0.2.1/24 e 198.51.100.2/24 e que os gateways default de cada uma sejam
> os endereços terminados em 254 de cada um desses blocos. Os seguintes dois
> comandos criam regras que associam IPs de origem a diferentes tabelas de
> rotas:
>
> /sbin/ip rule add from 192.0.2.1 lookup 1
> /sbin/ip rule add from 198.51.100.2 lookup 2
>
> Agora declaramos as rotas default, uma em cada tabela:
>
> /sbin/ip route add default via 192.0.2.254 table 1
> /sbin/ip route add default via 198.51.100.254 table 2
>
> e, bingo! a volta será sempre pelo lugar certo.
> --
> gter list https://eng.registro.br/mailman/listinfo/gter
More information about the gter
mailing list