|
|||||||
| Wiki | Classificados | Galeria | Reviews | Jogos | Comunidades | RSS Feeds | FAQ | Termos de Uso | Sobre |
| Cadastre-se | Fotos | Blogs | Lista de Membros | Calendário | Pesquisar | Mensagens de Hoje | Marcar Fóruns Como Lidos |
![]() |
|
|
LinkBack | Opções do Tópico |
|
|
#1 (permalink) |
|
Como muitos tem dúvidas de como balancear o acesso a Internet por diversos links, resolvi escrever esse mini-howto para evitar a necessidade de novos post no fórum.
Vamos ao problema. Imaginemos um roteador rodando kernel GNU/Linux com as opções de roteamento avançado ativado. Este computador está conectado a N links dedicados. Desejamos balancear a carga das requisições entre esses N links. Sejam LIP0, LIP1, ... , LIPN os endereços IP atribuidos aos links, LIF0, LIF1, ... , LIFN as interfaces de rede, LNTW, LNTW1, ... , LNTWN as redes e LGW0, LGW1, ... , LGWN os gateways de cada link. Primeiramente devemos criar N tabelas de roteamento, onde N é o número total de links que o gateway possui: echo 10 tb0 >> /etc/iproute2/rt_tablesFeito isso, devemos atribuir as redes dos links as suas respectivas tabelas de roteamento: ip route add LNTW0 dev LIF0 src LIP0 table tb0deve-se, também, incluir informações sobre a rede local: ip route add LOCALNET dev IFLOCALNET table tb0obs: todas as redes locais devem estar presentes em todas as tabelas!!! Agora, devemos definir as rotas das redes através da tabela padrão: ip route add LNTW0 dev LIF0 src LIP0obs: se você está com seus link configurados através dos arquivos de configuração das distribuiçoes, a etapa anterior pode ser omitida. Basicamente se ao tentar inserir uma rota na tabela padrão, e a mesma já existir você receberá a seguinte mensagem: RTNETLINK answers: File exists Agora você adiciona regras que decidem por onde os pacotes de vem passar: ip rule add from LIP0 table tb0Por ultimo, porém o não menos importante, na verdade escencial pois até agora não fizemos nada... Devemos definir o balanceamento de carga: ip route add to 0/0 nexthop via LGW0 dev LIF0 weight 1 nexthop via LGW1 dev LIF1 weight 1 ... nexthop via LGWN dev LIFN weight 1Note que o parâmetro weight pode ser explorado para atribuir maior prioridade de envio por um provedor. E você também pode (deve) atribuir um link padrão: ip route add to 0/0 via LGWPBem, pronto... Agora apenas algumas considerações... O kernel mantém tabelas de roteamento estátcas, portanto, se N pessoas tentarem acessar o site Google por exemplo, todas as tentativas de conexão sairão pelo mesmo link. Existem alguns patchs disponíveis para melhorar o mecanismo de roteamento. Procurem, informem-se e vejam se são adequados as suas realidades. Com o uso de regras de roteamento (ip rule) você pode definir qual link padrão para a saída de pacotes de uma determinada rede. Ex: ip rule add from 10.1.0.0/24 table tb0Pode-se. também, dividir por seviços. ex: iptables -t mangle -A PREROUTING -i LOCALNET -p tcp --dport 21 -j MARK --set-mark 0x60Só isso... fiz este post com o intuíto dele se tornar permanente... espero que os moderadores aceitem...
__________________
Por mais que eu pinte um burro nas cores de uma zebra, um burro sempre será um burro! -- Prof. Dr. Antonio Ronaldo Garcia Última edição por PEdroArthurJEdi : 31-01-2008 às 21:07. |
Usuário
![]() Registrado em: Sep 2007
Localização: Rio Grande do Norte
Mensagens: 148
Agradeceu: 0
Agradecido 23 vez(es) em 17 Posts
Reputação: 32
![]() |
|
|
|
|
#2 (permalink) | |
|
Citação:
entendi essa regra só ñ entendo esse 0x60. foi um nome qualquer q vc deu somente para registrar a marcação? obrigado... |
Usuário
![]() Registrado em: Jul 2005
Mensagens: 68
Agradeceu: 0
Agradecido 0 vez(es) em 0 Posts
Reputação: 0
![]() |
|
|
|
|
|
#3 (permalink) |
|
Veja que eu pus uma regra de roteamento, fwmark, e o valor era 0x60. Então, na regra do iptables deve colocar o valor que escolhi na regra de roteamento.
__________________
Por mais que eu pinte um burro nas cores de uma zebra, um burro sempre será um burro! -- Prof. Dr. Antonio Ronaldo Garcia |
Usuário
![]() Registrado em: Sep 2007
Localização: Rio Grande do Norte
Mensagens: 148
Agradeceu: 0
Agradecido 23 vez(es) em 17 Posts
Reputação: 32
![]() |
|
|
|
|
#4 (permalink) | |
|
Citação:
Vou tentar usar seu topico ja instalei iproute2 e tudo mais, estou precisando justamente disso, preciso mandar para um link trafego nobre e para o outro preciso mandar o resto, vou tentar qualquer duvidade posso entrar em contato denovo? mas seu tutorial esta bem elaborado e bem feito, agradeço, e repito era justamente o q precisava... Abraços tudo de bom... |
Usuário
![]() Registrado em: Jul 2005
Mensagens: 68
Agradeceu: 0
Agradecido 0 vez(es) em 0 Posts
Reputação: 0
![]() |
|
|
|
|
|
#5 (permalink) |
|
Minhas condições aqui é a seguinte....
eth0 - 172.16.1.2 (rede local) ligo essa eth para outro server de monitoramento... eth1 - 192.168.1.2 (rede ADSL) direto em um modem eth2 - 201.xx.xx.xxx (rede cisco) Antes do Roteamento... [root@Proxy rc.d]# route Tabela de Roteamento IP do Kernel Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface 201.xx.xx.xxx * 255.255.255.248 U 10 0 0 eth2 192.168.1.0 * 255.255.255.0 U 10 0 0 eth1 link-local * 255.255.0.0 U 10 0 0 eth2 link-local * 255.255.0.0 U 10 0 0 eth1 default 201-xx-xx-xxx.c 0.0.0.0 UG 10 0 0 eth2 isso sem executar as regras... agora executando tais regras, criei um script com todas dentro... [root@Proxy rc.d]# cat /etc/rc.d/rc.routes ip route add 172.16.1.0/24 dev eth1 src 192.168.1.1 table tb0 ip route add to 0/0 via 192.168.1.2 table tb0 ip route add 172.16.1.0/24 dev eth2 src 201.xx.xx.xxx table tb1 ip route add to 0/0 via 201.xx.xx.xxx(router cisco) table tb1 ip route add 172.16.1.0/24 dev eth0 table tb0 ip route add 172.16.1.0/24 dev eth0 table tb1 ip route add 172.16.1.0/24 dev eth1 src 192.168.1.1 ip route add 172.16.1.0/24 dev eth2 src 201.28.77.162 iptables -t mangle -A PREROUTING -i eth0 -p udp --dport 1024:65535 -j MARK --set-mark 0x60 ip rule add fwmark 0x60 table tb0 iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 1024:65535 -j MARK --set-mark 0x61 ip rule add fwmark 0x61 table tb0 iptables -t mangle -A PREROUTING -i eth0 -p udp --dport 1:1023 -j MARK --set-mark 0x50 ip rule add fwmark 0x50 table tb1 iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 1:1023 -j MARK --set-mark 0x51 ip rule add fwmark 0x51 table tb1 [root@Proxy rc.d]# ./rc.route RTNETLINK answers: Invalid argument RTNETLINK answers: File exists RTNETLINK answers: Invalid argument Agora apos executar as regras... [root@Proxy rc.d]# route Tabela de Roteamento IP do Kernel Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface 201.xx.xx.xxx * 255.255.255.248 U 10 0 0 eth2 192.168.1.0 * 255.255.255.0 U 10 0 0 eth1 172.16.1.0 * 255.255.255.0 U 0 0 0 eth2 link-local * 255.255.0.0 U 10 0 0 eth2 link-local * 255.255.0.0 U 10 0 0 eth1 default 201-xx-xx-xxx.c 0.0.0.0 UG 10 0 0 eth2 Pelo q percebi existe algum erro... c pudesse me dizer onde pequei... obrigado... ![]() |
Usuário
![]() Registrado em: Jul 2005
Mensagens: 68
Agradeceu: 0
Agradecido 0 vez(es) em 0 Posts
Reputação: 0
![]() |
|
|
![]() |
| Opções do Tópico | |
|
|
Tópicos Similares
|
||||
| Tópico | Tópico Iniciado Por | Fórum | Respostas | Última Mensagem |
| Balanceamento de portas entre 2 links | angelangra | Mikrotik | 15 | 20-11-2007 2:03 |
| Balanceamento de carga usando 2 links | dumer99 | Mikrotik Balanceamento | 16 | 14-12-2006 16:42 |
| Problemas com iproute2 fazendo balenceamento de carga | ruyneto | Redes/Protocolos | 6 | 14-02-2005 23:24 |
| Balanceamento entre links | jairof | Adm. em Geral | 3 | 23-06-2004 23:35 |
| Como fazer balanceamento de carga em dois links usando o Lin | Redes/Protocolos | 3 | 19-01-2003 11:32 | |