[GTER] Balanceamento de entrada sem AS
alfredo junior
aljr at lbr.com.br
Mon Jan 31 07:42:44 -02 2011
Em 28-01-2011 10:54, spiderslack escreveu:
> Ola pessoal.
>
> Tive a experiência de confrontar uma situação nunca passada. Vou
> tentar explicar a infraestrutura conforme abaixo:
>
> ISP 1 --------------| roteador |_________| Servidor |
> ISP 2 --------------| pfsense | | web |
>
> 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 e caso uma conexão se origine no servidor
> web saia pela rota default. Isso e conseguido no FreeBSD com o comando
> binat, abaixo tem uma descrição de como funciona da documentação oficial.
>
> http://www.openbsd.org/faq/pf/nat.html#binat
>
> 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. Consigo marcar a entrada mas quando a conexão
> volta como vou saber por qual conexão ela entrou, talvez via tabela de
> estados, mas pelo menos por meu conhecimento não ser possivel. Então
> existe alguma configuração que consiga esse comportamento do comando
> binat ?
>
> Att.
>
> __________________________________________________
> Fale com seus amigos de graça com o novo Yahoo! Messenger
> http://br.messenger.yahoo.com/ --
> gter list https://eng.registro.br/mailman/listinfo/gter
>
No linux faço com o script abaixo, é só adequar as variáveis:
IP1 = Faixa de ip do link1.
GW1 = Gateway do link1.
IP2= Faixa de ip do link2.
GW2 = Gateway do link2.
-------------------------------------8<---------------------------------------------
#!/bin/sh
#/*
# * Copyright (C) 2002 - 2011 Alfredo Júnior <aljr at lbr.com.br>
# *
# * This program is free software; you can redistribute it and/or modify
# * it under the terms of the GNU General Public License as published by
# * the Free Software Foundation; either version 2 of the License, or
# * (at your option) any later version.
# *
# * This program is distributed in the hope that it will be useful,
# * but WITHOUT ANY WARRANTY; without even the implied warranty of
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# * GNU General Public License for more details.
# *
# * You should have received a copy of the GNU General Public License
# * along with this program; if not, write to the Free Software
# * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
# */
newtable()
{
/sbin/ip route flush table 3$1
/sbin/ip rule del fwmark $1 table 3$1
/sbin/ip rule add fwmark $1 table 3$1 prio 3$1
/sbin/ip route show table main | grep -EV '169.254.0.0' \
| grep -Ev '^default' | grep -Ev 'nexthop'\
| while read ROUTE ; do
/sbin/ip route add table 3$1 $ROUTE
done
}
IP1="200.200.200.200/29"
GW1="200.200.200.201"
IP2="189.189.189.189/29"
GW2="189.189.189.189"
/sbin/ip route del default
iptables -A PREROUTING -t mangle -m mark ! --mark 0 -j ACCEPT
iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark
iptables -A PREROUTING -t mangle -d $IP1 -j MARK --set-mark 0x1
iptables -A PREROUTING -t mangle -d $IP2 -j MARK --set-mark 0x2
iptables -A PREROUTING -t mangle -j CONNMARK --save-mark
# Definindo a rota alternativa 1
newtable 1
/sbin/ip route add default table 31 via $GW1 proto static
/sbin/ip rule del from $IP1 table 31 prio 20
/sbin/ip rule add from $IP1 table 31 prio 20
# Definindo a rota alternativa 2
newtable 2
/sbin/ip route add default table 32 via $GW2 proto static
/sbin/ip rule del from $IP2 table 32 prio 20
/sbin/ip rule add from $IP2 table 32 prio 20
case $1 in
1)
# Definindo saida pela rota 1
/sbin/ip route add default via $GW1 proto static;;
2)
# Definindo saida pela rota 2
/sbin/ip route add default via $GW2 proto static;;
*)
# Definindo saida pela rota principal 1 e 2
/sbin/ip route add default \
nexthop via $GW1 weight 2 \
nexthop via $GW2 weight 4;;
esac
# Limpando o cache.
/sbin/ip route flush cache
-------------------------------------8<---------------------------------------------
More information about the gter
mailing list