Olá pessoal,
Estou precisando da ajuda de vcs. Ja pesquisei na lista mas ninguem
está com o mesmo problema que eu.
Tenho 2 links e estou utilizado o iproute2 para controlar as rotas, o
iptables para fazer SNAT para determinar por qual link o cliente vai
sair e usando a variavel tcp_outgoing_address do squid para determinar
por qual link o cliente dentro do squid vai sair.
iptables 1.2.9
iproute2 2.4.7
squid 2.6.STABLE2 com patch ZPH (cache full)
Meus clientes nao estão no mesmo segmento de rede que meu servidor,
estão todos em sub-redes e roteados por um mikrotik em uma torre. Não
uso bridge.
exemplo.
cli001
ip: 10.10.0.10/30 - 255.255.255.252
gw: 10.10.x.253/24 - 255.255.255.0 (mesma rede que o servidor - seria
meu roteador para os clientes wireless)
Nao tenho problema interno de rota, está tudo normal.
Usar o iproute com marcação de pacotes não resolve meu problema, pois
preciso que no squid seja controlado por ip de origem, se nao, nao vou
poder fazer cache. A nao ser é claro a possibilidade de usar as duas
forma, com marcação e por origem.
Meu problema é:
pelo squid consigo controlar direitinho por onde o cliente vai sair.
mas pelo SNAT meus clientes estao todos saindo pela primeira rota
encontrada.
PS: Ja testei também com a pequena receita de bolo "Routing for
multiple uplinks/providers" cedido por varios membros daqui, e nada.
meus scripts...
######################### IP ROUTE ############################
# eth0 - link 1
wan1="eth0"
wan1_ip="201.x.x.242"
wan1_gw="201.x.x.241"
# eth2 - link 2
wan2="eth2"
wan2_ip="192.168.82.146"
wan2_gw="192.168.82.145"
# eth1 - rede local
lan="eth1"
lan_ip="10.10.x.254"
lan_gw="10.10.x.253"
######################
# resetar tabelas de rotas
######################
echo "255 local" > /etc/iproute2/rt_tables
echo "254 main" >> /etc/iproute2/rt_tables
echo "253 default" >> /etc/iproute2/rt_tables
echo "0 unspec" >> /etc/iproute2/rt_tables
echo "20 link1" >> /etc/iproute2/rt_tables
echo "30 link2" >> /etc/iproute2/rt_tables
##############################
# remover rotas padrao - se houver
##############################
ip route del default &> /dev/null
ip route del default &> /dev/null
ip route del default &> /dev/null
########################
# remover regras de tabelas
########################
ip rule del lookup main &> /dev/null
ip rule del lookup main &> /dev/null
ip rule del lookup link1 &> /dev/null
ip rule del lookup link1 &> /dev/null
ip rule del lookup link1 &> /dev/null
ip rule del lookup link2 &> /dev/null
ip rule del lookup link2 &> /dev/null
ip rule del lookup link2 &> /dev/null
################################
# adicionar as regras com prioridades
################################
# ( se eu deixar a tabela main com prioridade normal 254, menor que do
link 1 e 2 dá pau)
ip rule add table main prio 10
ip rule add table link1 prio 20
ip rule add table link2 prio 30
################
# rotas de clientes
################
ip route add 10.10.0.4/30 via $lan_gw dev $lan
ip route add 10.10.0.6/30 via $lan_gw dev $lan
# ... e outras mais ...
################
# rotas de internet
################
#--------------------
# tabela link 1
#--------------------
# remover regras
ip rule del from $wan1_ip &> /dev/null
# adicionar regras
ip rule add from $wan1_ip table link1 prio 2
# adicionar rotas
ip route add $wan1_ip via $wan1_gw deb $wan1 table link1
ip route add default via $wan1_gw table link1
#--------------------
# tabela link 2
#--------------------
# remover regras
ip rule del from $wan2_ip &> /dev/null
# adicionar regras
ip rule add from $wan2_ip table link2 prio 3
# adicionar rotas
ip route add $wan2_ip via $wan2_gw deb $wan2 table link2
ip route add default via $wan2_gw table link2
############
# rota padrao
############
# apesar de ver nos varios exemplo que nao tem q ter rota padrao
# mas se eu tirar a rota padrao tb dá pau
ip route add default via $wan1_gw dev $wan1
##################################
# limpar cache para ativar as alteracoes
##################################
ip route flush cache
####################### IP ROUTE FIM ##########################
######################## IPTABLES #############################
# tenho dois arquivos com os ips dos clientes
# clientes que saem pelo link1 - /etc/fw/fw.clientes.ips.link1
# clientes que saem pelo link2 - /etc/fw/fw.clientes.ips.link2
# aqui entra o que interessa do iptables
ipt="iptables"
# anti pacotes marcianos esta desativado
# para poder controlar as rotas pelo iproute2
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo "0" > $f
done
fi
# regras dos clientes
# clientes link 1
for ip in `cat /etc/fw/fw.clientes.ips.link1`; do
$ipt -t nat -A PREROUTING -p tcp -s $ip -d 0/0 --dport 80 -j
REDIRECT --to-port 3128
$ipt -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $wan1_ip
# ja tentei tambem com "-o $wan1 -j MASQUERADE"
done
# clientes link 2
for ip in `cat /etc/fw/fw.clientes.ips.link2`; do
$ipt -t nat -A PREROUTING -p tcp -s $ip -d 0/0 --dport 80 -j
REDIRECT --to-port 3128
$ipt -t nat -A POSTROUTING -s $ip -d 0/0 -j SNAT --to $wan2_ip
# ja tentei tambem com "-o $wan2 -j MASQUERADE"
done
###################### IPTABLES FIM ###########################
######################### SQUID ##############################
# apesar do meu squid esta ok. vou postar aqui porque pode ajudar alguem
# que esteja precisando desta solucao
# apresentado apenas o q interessa tambem
# acl do clientes
acl cli001 src 10.10.0.6
tcp_outgoing_address 201.x.x.242 cli001
# aqui estou forçando a acl cli001 sair pelo ip 201.x.x.242
# lembrando que este ip tem q ser um ip clocal do seu servidor
# onde o squid está rodando, senão dá erro
acl cli002 src 10.10.0.10
tcp_outgoing_address 192.168.82.146 cli002
# aqui estou forçando a acl cli002 sair pelo ip 192.168.8.146
# lembrando que este ip tem q ser um ip clocal do seu servidor
# onde o squid está rodando, senão dá erro
# nas permissoes e negacoes
http_access allow cli001
http_access allow cli002
# negar todo o resto
http_access deny all
####################### SQUID FIM ############################
Alguem pode me ajudar, o squid está ok, nao tenho problemas.
Sei que meu problema com certeza está no IPROUTE, mas ja fiz o q tinha
que fazer, pesquisei o que tinha que pesquisar e nao consegui resolver
o problema.
Desde ja abradeço a atenção,
--
Wenderson Souza
e-mail: [EMAIL PROTECTED]
msn: [EMAIL PROTECTED]
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html