Roteamento de Rotas

1. Roteamento de Rotas

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 14/06/2013 - 12:00h

Boa tarde, estou com dificuldade na transição de rotas do links.
Tenho dois links de internet e fiz duas tabelas, e gostaria que a VPN toda passasse pelo link2 fora do GW padrão, o problema é que o INPUT está funcionando e está passando pelo link 2 mas o envio OUTPUT, está passando pela rota padrão.


Abaixo as configurações de rota.

#if ! $IPR route show table Link2 | grep $GW_PIVA > /dev/null; then
$IPR route flush table Link2 #Limpa as rotas no cache da tabela
$IPR route add default via $GW_PIVA table Link2

#fi


#if ! $IPR route show table Link1 | grep $GW_NETELL > /dev/null; then
$IPR route flush table Link1 #Limpa as rotas no cache da tabela
$IPR route add default via $GW_NETELL table Link1

#fi


# Marcaç de pacotes dos serviç do Firewall
#------------
$IPT -t mangle -A OUTPUT -p tcp --sport 1194 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p udp --sport 1194 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p tcp --sport 5000 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p udp --sport 5000 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p udp --sport 5001 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p udp --sport 5002 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p udp --sport 5003 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p tcp --sport 5001 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p tcp --sport 5002 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p tcp --sport 5003 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A OUTPUT -p tcp --sport 1521 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # ORACLE
$IPT -t mangle -A OUTPUT -p tcp --sport 5005 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # SSH velox

$IPT -t mangle -A POSTROUTING -p udp --dport 5000 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A POSTROUTING -p udp --dport 5001 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A POSTROUTING -p udp --dport 5002 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A POSTROUTING -p udp --dport 5003 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN

$IPT -t mangle -A POSTROUTING -p udp --dport 1194 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN
$IPT -t mangle -A POSTROUTING -p tcp --dport 1194 ! -d $LAN_RANGE0 -j MARK --set-mark 2 # VPN




# Marcaç de pacotes dos serviç da rede interna

$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 25 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 110 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 143 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 993 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 995 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 465 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 587 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 443 -j MARK --set-mark 2
#-------------------------------------
sucesso && printf "Limpando regras de roteamento anteriormente estabelecidas..."
REGRAS="1"
for C in $REGRAS; do
while ip rule show | grep "x$C lookup" >> /dev/null; do
ip rule del fwmark "$C"
done
done

REGRAS="2"
for C in $REGRAS; do
while ip rule show | grep "x$C" >> /dev/null; do
ip rule del fwmark "$C"
done
done

sucesso && printf "Regras de roteamento anteriormente estabelecidas..."
REGRAS="1 "
for C in $REGRAS; do
while ip rule show | grep "x$C lookup" >> /dev/null; do
ip rule del fwmark "$C"
done

ip rule add fwmark "$C" table Link1 #Link 1 Netell
done

REGRAS="2"
for C in $REGRAS; do
while ip rule show | grep "x$C" >> /dev/null; do
ip rule del fwmark "$C"
done

ip rule add fwmark "$C" table Link2 #Link 2 Netarthur
done





  


2. Re: Roteamento de Rotas

Buckminster
Buckminster

(usa Debian)

Enviado em 14/06/2013 - 13:39h

Os dois links estão conectados no mesmo switch?


3. Re: Roteamento de Rotas

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 14/06/2013 - 13:56h

Link 1 eth0 e Link2 eth2, vindo separadamente cada um.


4. Re: Roteamento de Rotas

Buckminster
Buckminster

(usa Debian)

Enviado em 14/06/2013 - 14:45h

viniciusmathias escreveu:

Link 1 eth0 e Link2 eth2, vindo separadamente cada um.


Bom, então acredito que os links só se encontram fisicamente no servidor, por isso o INPUT está funcionando.
A marcação dos pacotes parece estar correta.
Faça um teste aí, por gentileza, mude a variável da regra 2, coloque i por exemplo, assim:

REGRAS="2"
for i in $REGRAS; do
while ip rule show | grep "x$i" >> /dev/null; do
ip rule del fwmark "$i"
done
done


REGRAS="2"
for i in $REGRAS; do
while ip rule show | grep "x$i" >> /dev/null; do
ip rule del fwmark "$i"
done

ip rule add fwmark "$i" table Link2 #Link 2 Netarthur
done

Faça a alteração, reinicie e teste.


5. Re: Roteamento de Rotas

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 14/06/2013 - 15:22h

Não funcionou, alterei o C por I, na 2 e não deu certo. vou aproveitar e mostrar as configurações da variáveis:

# Interfaces internas
LANIF0="eth0"


NETIP_PIVA="187.111.223.58"
GW_PIVA='187.111.223.57'
NETIP_NETELL="187.19.1.234"
GW_NETELL='187.19.1.233'


LAN_RANGE0="192.168.6.0/24"



6. Re: Roteamento de Rotas

Buckminster
Buckminster

(usa Debian)

Enviado em 14/06/2013 - 15:32h

Ok. Deixe C então.
A política padrão da chain OUTPUT está como?


7. Re: Roteamento de Rotas

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 14/06/2013 - 15:43h

Buckminster escreveu:

Ok. Deixe C então.
A política padrão da chain OUTPUT está como?



chain ?


8. Re: Roteamento de Rotas

Buckminster
Buckminster

(usa Debian)

Enviado em 14/06/2013 - 15:48h

Aqui

$IPR route add default via $GW_PIVA table Link2

crie uma variável para a eth2 (exemplo, ETH_LINK2=eth2) e acrescente ela na rota:

$IPR route add default via $GW_PIVA dev $ETH_LINK2 table Link2

Se precisar faça o mesmo para a outra rota:

$IPR route add default via $GW_NETELL dev $ETH_LINK1 table Link1



E aqui:

# Marcaç de pacotes dos serviç da rede interna

$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 25 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 110 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 143 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 993 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 995 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 465 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 587 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 443 -j MARK --set-mark 2

Você está marcando os pacotes do link 2 para saírem pela eth0 nas portas especificadas... é isso mesmo que você quer?

Dê uma lida nisso e adapte:
http://blog.gustavohenrique.net/2008/12/roteamento-em-linux-com-2-links-de-internet/


9. Re: Roteamento de Rotas

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 14/06/2013 - 16:03h

Buckminster escreveu:

Aqui

$IPR route add default via $GW_PIVA table Link2

crie uma variável para a eth2 (exemplo, ETH_LINK2=eth2) e acrescente ela na rota:

$IPR route add default via $GW_PIVA dev $ETH_LINK2 table Link2

Se precisar faça o mesmo para a outra rota:

$IPR route add default via $GW_NETELL dev $ETH_LINK1 table Link1



E aqui:

# Marcaç de pacotes dos serviç da rede interna

$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 25 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 110 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 143 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 993 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 995 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 465 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 587 -j MARK --set-mark 2
$IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 443 -j MARK --set-mark 2

Você está marcando os pacotes do link 2 para saírem pela eth0 nas portas especificadas... é isso mesmo que você quer?

Dê uma lida nisso e adapte:
http://blog.gustavohenrique.net/2008/12/roteamento-em-linux-com-2-links-de-internet/


Bom nessa parte ai $IPT -t mangle -A PREROUTING -i $LANIF0 -p tcp --dport 443 -j MARK --set-mark 2
eu queria que tudo que vir da rede interna eth0 nas portas ditas saia pelo link 2, mas o meu problema é a VPN, mesmo que liga o servidor 6.4 ao a sede no rio.



10. Re: Roteamento de Rotas

Buckminster
Buckminster

(usa Debian)

Enviado em 14/06/2013 - 16:28h

NETIP_PIVA="187.111.223.58" << esse IP é da placa de rede do servidor ou é do modem?
GW_PIVA='187.111.223.57' << esse IP é da placa de rede do servidor ou é do modem?
NETIP_NETELL="187.19.1.234" << esse IP é da placa de rede do servidor ou é do modem?
GW_NETELL='187.19.1.233' << esse IP é da placa de rede do servidor ou é do modem:

LAN_RANGE0="192.168.6.0/24"

Qual é o endereço de rede da VPN?


11. Re: Roteamento de Rotas

Vinicius Mathias
viniciusmathias

(usa CentOS)

Enviado em 14/06/2013 - 19:38h

Consegui resolver, acontece que as tabelas estavam com os valores iguais, ai deixei uma 80 e uma 90, ai passou a separar corretamente.

Mas agradeço a ajuda.


12. Re: Roteamento de Rotas

Buckminster
Buckminster

(usa Debian)

Enviado em 14/06/2013 - 23:14h

De nada.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts