2008/6/6 gunix <[EMAIL PROTECTED]>:

> Anderon, boa noite.


Olá Gustavo.


>
> Estou aqui hoje na quase ultima tentatica de colocar o balancemaneto de
> carga funcionando.


Calma... apesar deste tópico não ser o topo da onda da alta tecnologia ,
também não quer dizer que seja simples e a maioria dos administradores linux
ainda não foram expostos a estes problemas, então é uma questão de se
acostumar com os termos e os conceitos, desistir agora significaria deixar
de resolver toda uma classe de problemas e nós nunca sabemos quando teremos
oportunidade de gastar tempo para aprender um tópico novo, assim aproveite a
sensação de insegurança do não conhecimento e transforme na emoção da
descoberta.


>
> Para ficar mais facil resolvi fazer o seguinte
>

> acessar o firewall e dele proprio tenar fazer balancemaneto.
>

Ou seja, no seu teste,  você tentará  a partir da própria máquina que faria
o balanceamento usar cada um dos enlaces conforme o protocolo.


>
> Porta 80 sair pelo EMBRATEL
> Porta 443 sair pelo Velox
>
> Como script que vc me passou executado, coloquei as segunte regras no
> firewall
>
> iptables -t mangle -I OUTPUT -p tcp --dport 80 -j MARK --set-mark 102
> iptables -t mangle -I OUTPUT -p tcp --dport 443 -j MARK --set-mark 101
>
> Acessei o meu ip pela porta 80... e saiur no velox, sendo que esta marcado
> para sari embratel (102=embratel)
> Acessei o ww.dyndns.org que é via 443 e tb pelo velox...
>
> Alguma ideia do que posso tentar.
> Todos os manuais que peguei na net, seguem a mesma ideia do que vc me
> passou.


Primeira coisa, só gostaria de lembrá-lo que a CHAIN OUTPUT só é chamada
para os pacotes com origem no sistema local, essa chain não é verificada nos
pacotes que estão sendo encaminhados.

Não entendi direito o que você quis dizer com "Acessei o meu ip pela porta
80...  e saiu  no velox", se  você estava  se conectando a partir da
internet em um dos seus ips públicos e verificou com por exemplo o tcpdump
que as requisições a porta 80 entravam por uma interface e saíam por outra,
pode ser o caso de marcar os pacotes cuja porta de origem seja a 80, assim
você teria o seguinte comando:
iptables -t mangle -I OUTPUT -p tcp --sport 80 -j MARK --set-mark 102.

Caso o seu teste, tenha sido de usar um enlace com um protocolo e o outro
enlace com outro protocolo:
Podem existir vários motivos para esse comportamento, a tabela de roteamento
embratel pode não estar completa, com uma rota default, assim a roteamento
se daria pela tabela de roteamento main, você pode checar se a tabela de
roteamento embratel está completa (ou seja, com rotas para todas as suas
redes e com uma rota default) com o comando "ip route show table embratel";
pode ser o caso que haja outras marcações de pacotes DEPOIS da regra que
você colocou na chain OUTPUT da table mangle, o que aconteceria seria que
somente a última marcação teria efeito, esse caso teria efeito por exemplo
quando uma regra de marcação tivesse seu domínio sobreposto com outra regra,
você poderia marcar um destino1 pelo enlace 1 e um protocolo1 pelo enlace 2,
se você tentasse acessar o destino1 com o protocolo1 a última regra seria a
que teria efeito, alias por isso criei chains com nomes como MARK_EMBRATEL
com um ACCEPT como última regra, para que as próximas regras de marcação não
fossem verificadas; pode ser o caso de limpar o cache de rotas, uma
necessidade depois da alteração na marcação de pacotes, caso você queira que
suas alterações tenham efeito imediato, com "ip route flush cache", alias
depois de cada teste você verificou se uma rota adequada está no cache de
rotas, não é? "ip route show cache", isto pode determinar se sua marcação de
pacotes está funcionando e se o kernel aceitou a sua rota; pode ser o caso
de sua marcação não ter efeito  porque você esteja aplicando a regra
incorreta de marcação de pacotes; pode ser o caso de você estar marcando os
pacotes com uma tabela de roteamento inexistente;

Como você afirmou anteriormente que uma regra como  "ip rule add from  <ip>
table embratel" funcionava,  você poderia fazer um  teste mais  simples para
testar a marcação de pacotes:
Você faria requisições a partir da sua máquina na rede local para destinos
com protocolos diferentes e verificaria o cache de rotas e a efetiva
interface de saída com por exemplo o iftop (uma ferramente de preferência
pessoal).

ip rule add fwmark 2 table embratel
ip rule add fwmark 1 table velox

iptables -t mangle -I PREROUTING -s IP_DA_SUA_MAQUINA -p tcp --dport 80 -j
MARK --set-mark 2
iptables -t mangle -I PREROUTING -s IP_DA_SUA_MAQUINA -p tcp --dport 443 -j
MARK --set-mark 1

ip route flush cache

você deveria abrir dois terminais para o seu firewall e em cada um executar
o comando iftop, em um iftop -i eth0 e no outro iftop -i eth1.

A seguir você deveria realizar as requisições.
Por exemplo "http://www.uol.com.br"; e "
https://www2.bancobrasil.com.br/aapf/login.jsp?aapf.IDH=sim";

Responder a