ip route com iptables [RESOLVIDO]

1. ip route com iptables [RESOLVIDO]

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 17/02/2016 - 19:38h

me ajudem por favor , eu tinha mencionado em outro tópico , como usar dois gateway na mesa rede pra redirecionar a saída de um determinado site pra especifico gateway , blz fui indicado a usar iproute, fiz os teste em um laboratório que crie simulando a situação , deu tudo certo só que na pratica não funciono .

cenário

gateway com duas 4 eths

01 eth0 link_vivo
02 eth1 rede interna
03 eth2 segunda interna
04 eth3 link_backup

crie duas rotas no iproute

200 linkvivo
201 linkbackup

regar do ip rule
GW_LINKVIVO=1.1.1.1
GW_LINKBACKUP=2.2.2.2

ETH_LINKVIVO=eth0
ETH_LINKBACKUP=eth3

ip route flush cache

ip route flush cache
ip rule add fwmark 1 prio 20 table linkvivo
ip rule add fwmark 2 prio 20 table linkbackup


ip route add default via $GW_LINKVIVO dev $ETH_LINKVIVO table linkvivo
ip route add default via $GW_LINKBACKUP dev $ETH_LINKBACKUP table linkneovia

route add default gw $GW_LINKVIVO

crie regra no iptables tabela mangle

iptables -t mangle -I PREROUTING -p tcp -s 192.168.0.195 -d ip_destino -j MARK --set-mark 2

saida do comando ip rule list
0: from all lookup local
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
20: from all fwmark 0x1 lookup linkvivo
20: from all fwmark 0x2 lookup linkneovia
32766: from all lookup main
32767: from all lookup default

saida do comando route -nKernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
ip_pulblico 0.0.0.0 255.255.255.248 U 0 0 0 eth3
ip_pulblico 0.0.0.0 255.255.248.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth2
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 ip_gateway_vivo 0.0.0.0 UG 0 0 0 eth0

o que esta errado ?
sendo que fiz esse mesmo procedimentos em maquinas virtuais simulando , e deu certo.
se eu deixar a rota default o linkbackup ele funciona . porem fica a mesma coisa com outro gateway , não aplicar as regras se caso eu altere para ele ser o secundário







  


2. Re: ip route com iptables [RESOLVIDO]

Bruno Thomaz
SarusKant

(usa CentOS)

Enviado em 18/02/2016 - 11:20h

No contexto, parece estar tudo certo.
Somente uma duvida este seu link de backup, você utiliza ele balanceado com o principal ou somente é ativado com a queda do principal???
Se quer trafegar somente para um determinado ip, não a necessidade de marcação de rota, pode simplesmente fazer assim:

ip route add ip_de_destino/mascara_de_destino via gw_link_de_backup

Boa Sorte!


3. Re: ip route com iptables [RESOLVIDO]

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 18/02/2016 - 12:51h

a ideia e usar como balanceamento.
nessa regra que vc mencionou eu teria que jogar a rede inteira pra sair por gateway backup, porque nela so especificar o destino, correto ? ou melhor, para onde eu quero ir, ok, dar pra especificar a origem e o destino ? acho não né. porque eu não quero liberar a rede inteira , só alguns ips que tem mais fluxo de uso no erp
que seria a diretoria, por isso eu queria usar a marcação , mais mesmo assim vou testa dessa forma que mencionou, mais o estranho e que da maneira que eu crie a solução
se eu desse um ping saindo pelo gateway backup deveria sair mais não sai, exemplo ping -I eth3 8.8.8.8 , tendeu ?




4. Re: ip route com iptables

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 18/02/2016 - 13:02h

segue parte do firewall, acredito que o restante não e importante , pós e só regras de PREROUTING E FORWARD,
no finao fechar tudo .
#!/bin/bash
EXT_DEV="eth0"
EXT_DEV="eth3"
INT_DEV="eth1"
INT_DEV="eth2"
EXT_DEV="x.x.x.x"
EXT_DEV="x.x.x.x"
INT_DEV="192.168.0.253"
INT_DEV="10.0.0.253"

echo "ativando regras de roteamento no kernel"
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
echo "limpando regras existentes"
iptables -F
iptables -Z
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z
iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

echo "aplicando regra roteamento"
iptables -t mangle -A PREROUTING -p tcp -s 192.168.0.195 -d ip_do erp -j MARK --set-mark 2




5. Re: ip route com iptables [RESOLVIDO]

Bruno Thomaz
SarusKant

(usa CentOS)

Enviado em 18/02/2016 - 15:09h

Entendi.
Faça assim.

echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

iptables -F -t mangle

iptables -t mangle -A PREROUTING -s $ip_ou_rede -d $erp -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -s $ip_ou_rede -d $erp -j MARK --set-mark 2 //acrescente conforme for necessário.
iptables -t mangle -A PREROUTING -j MARK --set-mark 1

ip rule add from $src_link1 lookup link1
ip rule add from $src_link2 lookup link2
ip rule add fwmark 1 table link1
ip rule add fwmark 2 table link2

ip route flush cache
ip route flush table link1
ip route flush table link2

ip route add table link1 $gw_link1 dev $dev_link1 src $src_link1
ip route add table link2 $gw_link2 dev $dev_link2 src $src_link2
ip route add default via $gw_link1 table link1
ip route add default via $gw_link2 table link2

ip route add default scope global nexthop via $gw_link1 dev $dev_link1 weight $proporcao_de_link_de_um_para_outro nexthop via $gw_link2 dev $dev_link2 weight $proporcao_de_link_de_um_para_outro

Deste modo, você estará balanceando seu link e também marcando o que deve sair por cada link.
lembrado que o parametro weight significa a proporção de um link para o outro.
ex:
link1 = 2MB
link2 = 1MB

seria um caso de 2 para 1

Acredito estar tudo certo, informe caso sim ou não.

Boa Sorte!


6. Re: ip route com iptables

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 18/02/2016 - 20:17h

blz , tentei da maneira que vc sugeriu , sem sucesso , a logica esta errada ?
agradeço ajuda .
estou usando laboratório , antes de por em produção.


VIVO_IPA=192.168.1.253 ###ip eth0
VIVO_NET=192.168.1.0/24 ### rede eth0
VIVO_GW=192.168.1.1 ### gateway eth0
VIVO_ETH0=eth0

BACKUP_IPA=192.168.137.254 ### ip eth1
BACKUP_NET=192.168.137.0/24 ## rede
BACKUP_GW=192.168.137.1 ### gateway
BACKUP_ETH1=eth1

ip rule add from $VIVO_NET lookup linkbridge
ip rule add from $BACKUP_NET lookup linkmaquina

ip rule add fwmark 1 table linkbridge
ip rule add fwmark 2 table linkmaquina

ip route flush cache
ip route flush table linkbridge
ip route flush table linkmaquina

ip route add table linkbridge via $VIVO_GW dev $VIVO_ETH0 src $VIVO_IPA
ip route add table linkmaquina via $BACKUP_GW dev $BACKUP_ETH1 src $BACKUP_IPA

ip route add default via $VIVO_GW table linkbridge
ip route add default via $BACKUP_GW table linkmaquina

ip route add default scope global nexthop via $VIVO_GW dev $VIVO_ETH0 weight 2 nexthop via $BACKUP_GW dev $BACKUP_ETH1 weight 1


iptables -F
iptables -X
iptables -Z

iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z

iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -t mangle -A PREROUTING -s 192.168.2.1 -d uol.com.br -j MARK --set-mark 2

iptables -t mangle -A PREROUTING -j MARK --set-mark 1

saida ip rule list


0: from all lookup local
32762: from all fwmark 0x2 lookup linkmaquina
32763: from all fwmark 0x1 lookup linkbridge
32764: from 192.168.137.0/24 lookup linkmaquina
32765: from 192.168.1.0/24 lookup linkbridge
32766: from all lookup main
32767: from all lookup default

saida ip route show
default
nexthop via 192.168.1.1 dev eth0 weight 2
nexthop via 192.168.137.1 dev eth1 weight 1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.253
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.254
192.168.137.0/24 dev eth1 proto kernel scope link src 192.168.137.254

route -n
Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
192.168.137.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1







7. Re: ip route com iptables

Bruno Thomaz
SarusKant

(usa CentOS)

Enviado em 18/02/2016 - 20:45h

Substitua
ip rule add from $VIVO_NET lookup linkbridge
ip rule add from $BACKUP_NET lookup linkmaquina

por
ip rule add from $VIVO_IPA lookup linkbridge
ip rule add from $BACKUP_IPA lookup linkmaquina

Adicione:
iptables -t mangle -A OUTPUT -s $ip_ou_rede -d $erp -j MARK --set-mark 2
iptables -t mangle -A OUTPUT -s $ip_ou_rede -d $erp -j MARK --set-mark 2 //acrescente conforme for necessário.
iptables -t mangle -A OUTPUT -j MARK --set-mark 1

Modifique:
ip route add table linkbridge via $VIVO_GW dev $VIVO_ETH0
ip route add table linkmaquina via $BACKUP_GW dev $BACKUP_ETH1

Faça o teste com traceroute e post aqui.

--
Bruno Thomaz


8. Re: ip route com iptables [RESOLVIDO]

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 18/02/2016 - 21:38h

a mesma coisa, não navegar .

default
nexthop via 192.168.1.1 dev eth0 weight 2
nexthop via 192.168.137.1 dev eth1 weight 1
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.253
192.168.2.0/24 dev eth2 proto kernel scope link src 192.168.2.254
192.168.137.0/24 dev eth1 proto kernel scope link src 192.168.137.254





#!/bin/bash

VIVO_IPA="192.168.1.253"
VIVO_NET="192.168.1.0/24"
VIVO_GW="192.168.1.1"
VIVO_ETH0="eth0"

BACKUP_IPA="192.168.137.254"
BACKUP_NET="192.168.137.0/24"
BACKUP_GW="192.168.137.1"
BACKUP_ETH1="eth1"

ip rule add from $VIVO_IPA lookup linkbridge
ip rule add from $BACKUP_IPA lookup linkmaquina

ip rule add fwmark 1 table linkbridge
ip rule add fwmark 2 table linkmaquina

ip route flush cache
ip route flush table linkbridge
ip route flush table linkmaquina

#ip rule add fwmark 1 prio 20 table linkbridge
#ip rule add fwmark 2 prio 20 table linkmaquina

ip route add table linkbridge via $VIVO_GW dev $VIVO_ETH0 #src #$VIVO_IPA
ip route add table linkmaquina via $BACKUP_GW dev $BACKUP_ETH1 #src $BACKUP_IPA

ip route add default via $VIVO_GW table linkbridge
ip route add default via $BACKUP_GW table linkmaquina

ip route add default scope global nexthop via $VIVO_GW dev $VIVO_ETH0 weight 2 nexthop via $BACKUP_GW dev $BACKUP_ETH1 weight 1



iptables -F
iptables -X
iptables -Z

iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z

iptables -t mangle -F
iptables -t mangle -X
iptables -t mangle -Z

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/rp_filter
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

iptables -t nat -A POSTROUTING -j MASQUERADE

iptables -t mangle -A PREROUTING -s 192.168.2.1 -d uol.com.br -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -j MARK --set-mark 1


iptables -t mangle -A OUTPUT -s $192.168.2.1 -d uol.com.br -j MARK --set-mark 2
#iptables -t mangle -A OUTPUT -s $ip_ou_rede -d $erp -j MARK --set-mark 2 //acrescente conforme for necessário.
iptables -t mangle -A OUTPUT -j MARK --set-mark 1





9. Re: ip route com iptables [RESOLVIDO]

Bruno Thomaz
SarusKant

(usa CentOS)

Enviado em 18/02/2016 - 21:53h

Só por curiosidade, usou traceroute para IP ou Domínio?
Se usou para domínio nosso problema pode ser DNS, coloque o 8.8.8.8 como único servidor de nomes do resolv.conf
E teste novamente.
Reinicie a maquina e comece do zero, para ter certeza.
--
Bruno Thomaz


10. Re: ip route com iptables

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 18/02/2016 - 22:21h

não da certo, se eu aplica gateway default de qualquer umas das interface wan funciona , mais usando as regras acima não da certo, pode ser que tenha que criar alguma regra no iptables para dns
pois a maquina cliente da erro de dns_proble_finished_no_internet, porem esse erro pode ser causado por não existe um gateway respondendo.
usando o comando traceroute na maquina cliente, não tem saída , acho que e devido não ter gateway respondendo.

o que acha ?


11. Re: ip route com iptables

Bruno Thomaz
SarusKant

(usa CentOS)

Enviado em 18/02/2016 - 22:36h

tenta assim
iptables -t nat -A POSTROUTING -j MASQUERADE

Se caso não der, da uma lida ai.
http://lartc.org/howto/lartc.rpdb.multiple-links.html
--
Bruno Thomaz


12. Re: ip route com iptables [RESOLVIDO]

jose marciano de sousa brito
jmsb

(usa Outra)

Enviado em 18/02/2016 - 22:40h

já tentei dessa forma, também não da certo.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts