Direcionar host para gateway especifico [RESOLVIDO]

1. Direcionar host para gateway especifico [RESOLVIDO]

Douglas Menger
DouglasMenger

(usa XUbuntu)

Enviado em 03/12/2013 - 09:09h

Amigos,

Tenho um servidor firewall com 3 interfaces de rede:

- eth0 Rede Local 192.168.56.101
- eth1 Link GVT 192.168.0.30 Gateway 192.168.0.200
- eth2 Link TPA 10.0.0.100 Gateway 10.0.0.1

O Gateway padrão do meu servidor e 192.168.0.200 mas preciso fazer com que o ip 192.168.56.101 da minha rede local saia pelo gateway 10.0.0.1, utilizei esse comando route add -host 192.168.56.101 gw 10.0.0.1 para tentar fazer o roteamento porem não funciona, segue a minha configuração de firewall:

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A INPUT -j LOG --log-prefix "iptables : "
iptables -A OUTPUT -j LOG --log-prefix "iptables : "
iptables -A FORWARD -j LOG --log-prefix "iptables : "

Estou a 4 dias fazendo leitura de vários artigos e pesquisando mas não consigo fazer funcionar, não consegui identificar aonde esta o erro de configuração.

Agradeço se alguém puder me ajudar.


  


2. Re: Direcionar host para gateway especifico [RESOLVIDO]

Thiago
thiagodvp

(usa Slackware)

Enviado em 03/12/2013 - 12:01h

Cara, o comando route define rotas baseadas no destino, não na origem.

Deixa ver se entendi, sua rede local sai pela eth1 e voce quer que apenas seu firewall sai pela eth2,certo ?

Tente usar ip rule com marcação de pacotes no iptables.

Abs.


3. Re: Direcionar host para gateway especifico [RESOLVIDO]

Douglas Menger
DouglasMenger

(usa XUbuntu)

Enviado em 03/12/2013 - 12:13h

Eu quero que toda a rede local (estações) saia pelo gateway da eth1, mas tem um servidor Windows que preciso fazer sair pelo gateway da eth2.


4. Re: Direcionar host para gateway especifico [RESOLVIDO]

Thiago
thiagodvp

(usa Slackware)

Enviado em 03/12/2013 - 13:31h

use ip rule com marcação de pacotes


5. Re: Direcionar host para gateway especifico [RESOLVIDO]

Douglas Menger
DouglasMenger

(usa XUbuntu)

Enviado em 03/12/2013 - 16:36h

thiagodvp escreveu:

use ip rule com marcação de pacotes


Ja tentei varias vezes usando artigos diferentes que encontrei na internet, inclusive tentei de novo agora usando este artigo.

http://www.vivaolinux.com.br/dica/Roteamento-com-marcacao-de-pacotes

Eu fico observando o log do firewall e vejo que ele esta direcionando corretamente porem não funciona, por exemplo eu redirecionei as portas 80 e 443 tento navegar e não funciona. Tentei outras portas tambem como 110,587,25 uso comando telnet a partir do host e nada funciona.

E bem estranho mesmo, mas ainda não desisti.


6. Re: Direcionar host para gateway especifico [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 03/12/2013 - 17:14h

Acredito que o teu problema esteja nessas duas regras abaixo.

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

Elas estão dizendo:
iptables compartilhe tudo que entrar e sair pela eth1 com todas as outras placas de rede.
iptables compartilhe tudo que entrar e sair pela eth2 com todas as outras placas de rede.

Ou seja, tudo está sendo compartilhado com tudo.

Tente colocar estas duas regras abaixo ANTES das duas regras acima e reinicie o Iptables e teste.
iptables -t nat -A PREROUTING -i eth2 -j DNAT --to 192.168.56.101
iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to 192.168.56.101

Se estas regras fizerem TODO o tráfego da eth2 ser direcionado para o IP em questão, tente colocar elas depois das regras MASQUERADE.
Lembre-se que a ordem de colocação das regras no Iptables é muito importante, isso faz toda a diferença.

Senão somente fazendo ip rule com marcação de pacotes como o thiagodvp disse para determinar ao Iptables quais pacotes saiam e entrem por qual rota.

Segue link com o Manuel do Iptables traduzido:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras?pagina=1


7. Re: Direcionar host para gateway especifico [RESOLVIDO]

Douglas Menger
DouglasMenger

(usa XUbuntu)

Enviado em 03/12/2013 - 18:26h

Buckminster,

Segui sua orientação e fiz testes colocando as regras antes e depois conforme você falou, mas não mudou nada. Preciso que apenas um ip da rede local saia pelo gateway secundario, acho muito estranho nos logs ele apontar para o caminho certo mas nada funcionar. De qualquer forma agradeço pela ajuda e continuo minha pesquisa.


8. Re: Direcionar host para gateway especifico [RESOLVIDO]

Buckminster
Buckminster

(usa Debian)

Enviado em 03/12/2013 - 18:28h

Esse aqui é todo teu script do Iptables?

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A INPUT -j LOG --log-prefix "iptables : "
iptables -A OUTPUT -j LOG --log-prefix "iptables : "
iptables -A FORWARD -j LOG --log-prefix "iptables : "

Ou tem mais alguma regra nele?
Se tiver, posta todo o script aqui.


9. Re: Direcionar host para gateway especifico [RESOLVIDO]

Douglas Menger
DouglasMenger

(usa XUbuntu)

Enviado em 03/12/2013 - 18:42h

# Interface da Internet
LOCAL="eth0"

# Interface da Rede Interna
GVT="eth1"

# Interface da Rede Interna
TPA="eth2"

GW1='192.168.0.200'
GW2='10.0.0.1'

# Limpa regras
iptables -F
iptables -t nat -F
iptables -t mangle -F

# Modulos do iptables
modprobe nf_nat_ftp
modprobe nf_conntrack_ftp
modprobe ip_nat_ftp
modprobe iptable_nat
modprobe ip_tables
modprobe iptable_filter
modprobe ip_conntrack
modprobe nf_conntrack_ipv4
modprobe ipt_MASQUERADE
modprobe iptable_mangle
modprobe nf_nat
modprobe nf_conntrack
modprobe x_tables
modprobe nf_nat_pptp

# Roteamento de kernel
echo 1 > /proc/sys/net/ipv4/ip_forward

# Compartilhar Internet
iptables -t nat -A POSTROUTING -o $GVT -j MASQUERADE
iptables -t nat -A POSTROUTING -o $TPA -j MASQUERADE

iptables -t nat -t mangle -A PREROUTING -s 192.168.56.101 -j MARK --set-mark 2


# Otimiza conexão de entrada e saida
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Logs de bloqueios
iptables -A INPUT -j LOG --log-prefix "iptables : "
iptables -A OUTPUT -j LOG --log-prefix "iptables : "
iptables -A FORWARD -j LOG --log-prefix "iptables : "






10. Re: Direcionar host para gateway especifico [RESOLVIDO]

Thiago
thiagodvp

(usa Slackware)

Enviado em 03/12/2013 - 21:45h

roda o comando ip rule e posta aí

roda o ip route show table NOMEDASTABLESQUECRIOU e posta ae tbm.


11. Re: Direcionar host para gateway especifico [RESOLVIDO]

Douglas Menger
DouglasMenger

(usa XUbuntu)

Enviado em 04/12/2013 - 08:59h

thiagodvp escreveu:

roda o comando ip rule e posta aí

roda o ip route show table NOMEDASTABLESQUECRIOU e posta ae tbm.


root@fw:~# ip rule
0: from all lookup local
32765: from all fwmark 0x3 lookup tpa
32766: from all lookup main
32767: from all lookup default

root@fw:~# ip route show table tpa
default via 10.0.0.1 dev eth2

Segue também meu script do iptables:


ip route add default via 10.0.0.1 table tpa
ip rule add fwmark 3 table tpa

iptables -t nat -t mangle -A PREROUTING -s 192.168.56.101 -j MARK --set-mark 3

echo 1 > /proc/sys/net/ipv4/ip_forward

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

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -j LOG --log-prefix "iptables : "
iptables -A OUTPUT -j LOG --log-prefix "iptables : "
iptables -A FORWARD -j LOG --log-prefix "iptables : "


12. Evolução

Douglas Menger
DouglasMenger

(usa XUbuntu)

Enviado em 05/12/2013 - 10:26h

Bom dia.

Consegui uma evolução a respeito da configuração, porem ainda não esta 100%, consigo direcionar os hosts para os gateways que eu quero usar mas quando direciono o qualquer host para sair no gateway eth1 (192.168.0.200) percebo que a conexão fica instável, notei isso rodando o comando ping.

Vejam como esta minha configuração atual:

eth0 | Rede Local | 189.100.0.200
eth1 | Link GVT | 192.168.0.30 Gateway 192.168.0.200
eth2 | Link TPA | 10.0.0.100 Gateway 10.0.0.1

# ------------------------------------------------------------------- #
ip route add 192.168.0.0/24 dev eth1 src 192.168.0.30 table gvt
ip route add default 192.168.0.200 table gvt

ip route add 10.0.0.0/24 dev eth2 src 10.0.0.100 table tpa
ip route add default via 10.0.0.1 table tpa

ip rule add from 192.168.0.30 table gvt
ip rule add from 10.0.0.100 table tpa

ip route add default scope global nexthop via 192.168.0.200 dev eth1 weight 1 nexthop via 10.0.0.1 dev eth2 weight 1

ip rule add fwmark 1 table gvt
ip rule add fwmark 2 table tpa
ip route flush cache

iptables -t nat -t mangle -A PREROUTING -s 189.100.0.102 -j MARK --set-mark 2
iptables -t nat -t mangle -A PREROUTING -s 189.100.0.100 -j MARK --set-mark 1


echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

iptables -A INPUT -j LOG --log-prefix "iptables : "
iptables -A OUTPUT -j LOG --log-prefix "iptables : "
iptables -A FORWARD -j LOG --log-prefix "iptables : "





01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts