[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Roteamento Avançado...



Olá pessoal. Sou novato aqui no grupo...
Estou montando um gateway com debian etch, porém estou tendo
problemas.
Tenho 2 ADSLs da Brasil Telecom. Uma com IP Fixo e outra com IP
dinâmico (ambas tendo o gateway 201.24.160.254)
Quero compartilhar as 2...estou usando squid. Estou usando o iproute.
Mas o problemas mais difícil está com o MSN. Os clientes não conseguem
se conectar...erro 8000306.
Alguém sabe o que acontece?
Um resumo dos meus scripts...


Meu firewall...
#!/bin/bash
IF_PPP0=ppp0
IF_PPP1=ppp1

IF_ETH0=eth0
IF_ETH1=eth1
IF_ETH2=eth2
IF_ETH3=eth3
IF_ETH4=eth4

GW_PPP0=201.24.160.254
GW_PPP1=201.24.160.254

echo -n "Ativando o redirecionamento no kernel
-------------------------------------------"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo "OK!"

#Ativa acessos que podem ir de uma interface mas que voltam por outra
echo 0 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/ppp1/rp_filter

echo -n "Registrando e dropando novas conexões de fora
----------------------------------"
iptables -A INPUT -i ppp+ -m state --state ! ESTABLISHED,RELATED -j
DROP
echo "OK!"

#Habilitando proxy transparente com squid
echo -n "Ativando proxy transparente com squid
----------------------------------------"
iptables -t nat -A PREROUTING -i eth+ -p tcp --dport 80 -j REDIRECT --
to-port 3128
echo "OK!"

#Liberando acesso das conexões de entrada já estabelecidas
echo -n "Liberando acesso às conexões já estabelecidas
---------------------------------"
iptables -A INPUT -i ppp+ -m state --state RELATED,ESTABLISHED -j
ACCEPT
echo "OK!"

echo -n "Bloqueando pacotes fragmentados
-----------------------------------------------"
iptables -A INPUT -i ppp0 -f -j LOG --log-prefix "Pacote fragmentado:
"
iptables -A INPUT -i ppp0 -f -j DROP
iptables -A INPUT -i ppp1 -f -j LOG --log-prefix "Pacote Fragmentado:
"
iptables -A INPUT -i ppp1 -f -j DROP
echo "OK!"

#Bloqueando ataques do tipo SPOOF de IP
echo -n "Bloqueando IP spoofing
---------------------------------------------------------"
iptables -A INPUT -i ppp+ -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i ppp+ -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i ppp+ -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i ppp+ -s 224.0.0.0/4 -j DROP
iptables -A INPUT -i ppp+ -s 240.0.0.0/5 -j DROP
echo "OK!"

echo -n "Mantendo conexões ativas
-----------------------------------------------------"
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
echo "OK!"

#Fazendo mascaramento (compartilhamento da conexão)
echo -n "Compartilhando conexões ADSL
-----------------------------------------------"
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp1 -j SNAT --to-
source=189.72.198.12
echo "OK!"

# Desabilitando o filtro de pacotes do martian source
echo -n "Desligando rp_filter
------------------------------------------------------"

       for eee in /proc/sys/net/ipv4/conf/*/rp_filter; do
               echo 0 > $eee
       done

echo "OK!"






Esta é parte que aplica as regras nas tabelas de roteamento...Faz
balanceamento de carga.
Sei que o MSN tem q ser autenticado usando somente uma interface, mas
não sei como restringir isso.

#!/bin/bash

#Variáveis
GW_PPP0=201.24.160.254
GW_PPP1=201.24.160.254

IP_PPP1=189.72.x.x       #IP Fixo

IF_PPP0=ppp0
IF_PPP1=ppp1

T_PPP0=200
T_PPP1=201

ip route del default

iptables -t mangle -A PREROUTING -p tcp -d 64.70.45.46 -j MARK --set-
mark 1 #Porta MSN
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp --dport 1863 -j MARK --set-
mark 1

ip rule add fwmark 1 table $T_PPP0 prio 1

ip route add $GW_PPP0 dev $IF_PPP0 table $T_PPP0
ip route add default via $GW_PPP0 dev $IF_PPP0 table $T_PPP0

ip route add $GW_PPP1 dev $IF_PPP1 table $T_PPP1
ip route add default via $GW_PPP1 dev $IF_PPP1 table $T_PPP1

ip route add default nexthop via $GW_PPP0 dev $IF_PPP0 weight 1
nexthop via $GW_PPP1 dev $IF_PPP1 weight 1


meu arquivo /etc/iproute2/rt_tables

#
# reserved values
#
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
200     PPP0
201     PPP1

Alguém tem alguma idéia de como resolver isso?


Reply to: