Load Balance - iproute2 e iptables [RESOLVIDO]

1. Load Balance - iproute2 e iptables [RESOLVIDO]

Rafael Teodoro
rafael_theo

(usa Debian)

Enviado em 02/05/2011 - 16:37h

Boa Tarde Pessoal!

Estou fazendo o balancemaneto de 2 links aqui na empresa onde um será direcionado para uso da internet e outro para emails.

Para fazer esta tarefa segui o artigo abaixo:

( http://www.vivaolinux.com.br/artigo/Firewall-Linux-Roteamento-avancado-usando-iproute2-e-iptables-(l... )

Porem quando executo o script aparece a seguinte mensagem:

RTNETLINK answers: File exists
RTNETLINK answers: File exists

Algue sabe o que pode ser?

Desde já Agradeço


  


2. MELHOR RESPOSTA

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 04/05/2011 - 08:21h

quem ta gerando o erro são essas duas linhas.
ip route add default via $GW_LINK1 dev $IF_LINK1 table 20
ip route add default via $GW_LINK2 dev $IF_LINK2 table 21

dá erro pq a rota que ta tentando adicionar ja existe na tabela. vc pode colocar duas linhas no seu script para remover a rota e depois adicionar novamente, ficaria asiim.

#Removendo as rotas padrão
ip route del default via $GW_LINK1 dev $IF_LINK1 table 20
ip route del default via $GW_LINK2 dev $IF_LINK2 table 21

pode colocar na função parar().

assim vc roda o script com stop, para limpar as rotas e as rules. depois roda com start



3. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 02/05/2011 - 17:13h

essa msg não é erro para se preocupar. é um apenas um erro de programação que não vai atrapalhar nada. isso acontece pq o script exclui primeiro a tabela de roteamento e depois tenta exluir a rota default da tabela. se quiser postar seu script posso explicar melhor.


4. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Rafael Teodoro
rafael_theo

(usa Debian)

Enviado em 03/05/2011 - 11:45h

Eriton,

Obrigado por responder!

Como estou aprendendo, deixo para voce explicar...rs

Segue abaixo o script:

---------------------------------------------------------------------------------------------------------------
#!/bin/bash

# Interface da Rede Local
IF_LAN="eth0"

# Interfaces de Internet
IF_LINK1="eth1"
IF_LINK2="ppp0"

# Gateway dos Links
GW_LINK1="201.x.x.1"
GW_LINK2="200.x.x.1"


iniciar(){

# Carregar os módulos
modprobe=ip_tables
modprobe=iptable_nat
modprobe=iptable_filter
modprobe=iptable_mangle

# Anti Ataques
iptables -A INPUT -m state --state INVALID -j DROP

# NAT
iptables -t nat -A POSTROUTING -o $IF_LINK1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $IF_LINK2 -j MASQUERADE

# Marcar pacotes/porta (Rede)
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 53 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 25 -j MARK --set-mark 3
iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 110 -j MARK --set-mark 3

# Marcar pacotes/porta (Servidor)
iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 53 -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 3
iptables -t mangle -A OUTPUT -p tcp --dport 110 -j MARK --set-mark 3

# Tabela dinamica/prioridade
ip rule add fwmark 2 table 20 prio 20
ip rule add fwmark 3 table 21 prio 20

# Direcionar tabelas para o gateway
ip route add default via $GW_LINK1 dev $IF_LINK1 table 20
ip route add default via $GW_LINK2 dev $IF_LINK2 table 21

# Limpar tabelas
ip route flush cache

# Liberar Portas
iptables -A INPUT -p tcp --destination-port 443 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 21 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 25 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 110 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 22 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 23 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 1723 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 47 -j ACCEPT
iptables -A INPUT -p tcp --destination-port 53 -j ACCEPT

# Bloquear Portas
iptables -A INPUT -p tcp --syn --dport 6891 -j DROP
iptables -A INPUT -p tcp --syn --dport 1863 -j DROP

# Requisições da Porta 80 para o Squid
iptables -t nat -A PREROUTING -i $IF_LAN -p tcp --dport 80 -j REDIRECT --to-port 3128

# Encaminhar ip/porta
iptables -t nat -A PREROUTING -d 200.x.x.x -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.5:3389

iptables -t nat -A PREROUTING -d 200.x.x.x -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.0.2:25

iptables -t nat -A PREROUTING -d 200.x.x.x -p tcp -m tcp --dport 110 -j DNAT --to-destination 192.168.0.2:110

# Abrir Rede Local
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $IF_LAN -j ACCEPT
iptables -A INPUT -p tcp --syn -s 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

# Otimizando o Firewall
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Mantendo Conexões Ativas
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

#Descartar Pacontes Invalidos
iptables -A FORWARD -m state --state INVALID -j DROP

# Fechar o Restante
iptables -A INPUT -p tcp --syn -j DROP
}

parar(){

ip rule del fwmark 2 table 20 prio 20
ip rule del fwmark 3 table 21 prio 20
iptables -F
iptables -F -t nat
}

case $1 in
start) iniciar;;
stop) parar;;
restart) parar; iniciar;;
*)echo "Use os parâmentros start, stop ou restart" ;;
esac
-------------------------------------------------------------------------------------------------------------------


5. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 03/05/2011 - 15:03h

não é o que eu tinha falado. dá erro quando vc usa start ou stop?

posta seu /etc/iproute2/rt_tables


6. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Rafael Teodoro
rafael_theo

(usa Debian)

Enviado em 03/05/2011 - 16:21h

O erro aparece quando uso start

abaixo rt_tables:

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



7. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 03/05/2011 - 17:17h

tá faltando as tabelas 20 e 21.

coloca nesse arquivo

20 LINK1
21 LINK2

depois roda o script.


8. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Rafael Teodoro
rafael_theo

(usa Debian)

Enviado em 03/05/2011 - 17:57h

Coloquei os valores no arquivo, mas quando rodo o script a mensagem continua.


9. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 03/05/2011 - 18:01h

executa esse comando e ve se da erro.

ip rule add fwmark 2 table 20

executa "ip rule" e posta o resultado


10. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Rafael Teodoro
rafael_theo

(usa Debian)

Enviado em 03/05/2011 - 18:09h

O comando não apresentou erro

Abaixo ip rule:

0: from all lookup local
19: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
32766: from all lookup main
32767: from all lookup default


11. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Rafael Teodoro
rafael_theo

(usa Debian)

Enviado em 04/05/2011 - 11:12h

Cara,

Funcionou perfeitamente....Muito Bom!

Entendi a situação que estava ocorrendo.

Muito Obrigado pela força

Você acha que preciso melhorar algo mais neste script?

Abraços


12. Re: Load Balance - iproute2 e iptables [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 04/05/2011 - 11:28h

acho que só deveria remover as rotas e as rules e limpar as tabelas na função iniciar(). Para não ficar com regras repetidas.

vc deve ter percebido as rules repetidas.

20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2
20: from all fwmark 0x2 lookup Link1
20: from all fwmark 0x3 lookup Link2




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts