Iptables + Marcação de pacote

340 views
Skip to first unread message

Deivid de Castro Pilla

unread,
Apr 25, 2013, 2:55:31 PM4/25/13
to tche...@googlegroups.com
Vamos ver se alguém consegue me auxiliar...

Tenho um firewall com 2 links está funcionando os dois links, tudo saindo pelo link1 um e algumas maquinas saindo pelo link2.

O problema é o seguinte, por ex, tenho uma maquina saindo pela link default, link1. mas preciso que determinada porta seja feito pelo outro link, por exemplo um acesso TS.

Meu link 2 está com a marcação de pacote 2.
ip rule add fwmark 2 table link2 prio 10

no firewall estou fazendo assim:
iptables -I FORWARD -p tcp --dport 3389 -j ACCEPT
iptables -t nat -I PREROUTING -i eth2 -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.200
iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.200 --dport 3389 -j MARK --set-mark 2

(eth2 = link2)

Mas não está funcionando, não consigo acessar o TS. Somente se eu coloco o IP sair todo pelo link, com:
ip rule add from 192.168.1.200 table link2

Será que ta faltando alguma coisa...  alguém pode auxiliar?

Abs.

Deivid Pilla

Analista de Suporte Técnico 

Vinicius Mello

unread,
Apr 25, 2013, 8:40:14 PM4/25/13
to tche...@googlegroups.com
On 04/25/2013 03:55 PM, Deivid de Castro Pilla wrote:
> no firewall estou fazendo assim: iptables -I FORWARD -p
> tcp --dport 3389 -j ACCEPT iptables -t nat -I PREROUTING
> -i eth2 -p tcp --dport 3389 -j DNAT --to-destination
> 192.168.1.200 iptables -t mangle -I PREROUTING -p tcp -s
> 192.168.1.200 --dport 3389 -j MARK --set-mark 2
>
> (eth2 = link2)
>
> Mas n�o est� funcionando, n�o consigo acessar o TS.
> Somente se eu coloco o IP sair todo pelo link, com: ip
> rule add from 192.168.1.200 table link2
>
> Ser� que ta faltando alguma coisa... algu�m pode
> auxiliar?

Ol� Deivid,

> iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.200
> --dport 3389 -j MARK --set-mark 2

Me parece que o correto seria usar --sport ao inv�s de
--dport na linha acima, pra marcar os pacotes de volta. Assim:

iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.200 \
--sport 3389 -j MARK --set-mark 2



Sds,

--
Vinicius Mello

Deivid de Castro Pilla

unread,
Apr 26, 2013, 8:01:42 AM4/26/13
to tche...@googlegroups.com
Vinicius,
Valeu pelo retorno, assim que possível irei testar e posto o resultado, devo testar hoje durante o dia.

Valeu, abs.


Deivid Pilla
Analista de Suporte Técnico 



> Date: Thu, 25 Apr 2013 21:40:14 -0300
> From: vmm...@vmmello.eti.br
> To: tche...@googlegroups.com
> Subject: Re: [TcheLinux] Iptables + Marcação de pacote

>
> On 04/25/2013 03:55 PM, Deivid de Castro Pilla wrote:
> > no firewall estou fazendo assim: iptables -I FORWARD -p
> > tcp --dport 3389 -j ACCEPT iptables -t nat -I PREROUTING
> > -i eth2 -p tcp --dport 3389 -j DNAT --to-destination
> > 192.168.1.200 iptables -t mangle -I PREROUTING -p tcp -s
> > 192.168.1.200 --dport 3389 -j MARK --set-mark 2
> >
> > (eth2 = link2)
> >
> > Mas não está funcionando, não consigo acessar o TS.

> > Somente se eu coloco o IP sair todo pelo link, com: ip
> > rule add from 192.168.1.200 table link2
> >
> > Será que ta faltando alguma coisa... alguém pode
> > auxiliar?
>
> Olá Deivid,

>
> > iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.200
> > --dport 3389 -j MARK --set-mark 2
>
> Me parece que o correto seria usar --sport ao invés de
> --dport na linha acima, pra marcar os pacotes de volta. Assim:
>
> iptables -t mangle -I PREROUTING -p tcp -s 192.168.1.200 \
> --sport 3389 -j MARK --set-mark 2
>
>
>
> Sds,
>
> --
> Vinicius Mello
>
> --
> Mensagem enviada para <http://groups.google.com/group/tchelinux>.
> Regras de Conduta para o grupo: <http://tchelinux.org/regras>.
>
> ---
> Você está recebendo esta mensagem porque se inscreveu no grupo "TcheLinux" dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para tchelinux+...@googlegroups.com.
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>
>

Marcos Carraro

unread,
Apr 26, 2013, 9:03:19 AM4/26/13
to tche...@googlegroups.com
Buenas Devid,

Cara, no momento que tu marcou o pacote para entrar, ele entra pelo link correto, até aqui beleza?

Porém depois ele se perde na tabela nat, e acaba perdendo a marcação, o que te faz marcar a saida do IP:PORTA para sair pelo link X certo, como o felipe falou, porém tem um artigo legal, faz tempo que eu li, ocupei algumas coisas somente, na metade do mesmo o autor comenta que tem uma solução para marcar definitivamente um pacote (http://tiagonux.blogspot.com.br/2008/11/roteamento-de-entradasada-com-iproute-e.html)
"# Aqui é onde acontece a mágia. Quando simplesmente marcamos um pacote que entra
# por um link de Internet ele perde sua marca quando passa pela tabela NAT. É nesse
# ponto que todo mundo fica perdido, pois em todos os foruns que li a dúvida maior é
# essa, o porque do pacote não retorna pelo link que ele entrou se eu marquei ele na
# sua entrada.
# Acontece que ao passar de uma tabela (mangle) para outra (nat) ele perde a marca.
# Descobri isso lendo a documentação do iptables e com ajuda do tcpdump conclui isso.
# Mas sempre tem uma maneira de resolver esse problema.
# Simplesmente vamos dizer que queremos que seja lembrado a marca anterior do
# pacote.
# Como pode ser visto na regra abaixo, na chain PREROUTING da mangle salvo a marca
# do pacote jogando para o ALVO CONNMARK
#
$IPTABLES -t mangle -A PREROUTING -i $LINK_WAN1 -j CONNMARK --save-mark
#
# E quando o pacote retorna entrando pela interface interna é lembrado sua marca
# anterior.
# Isso tudo ocorre pela --save-mark da regra anterior e --restore-mark da regra abaixo.
#
$IPTABLES -t mangle -A PREROUTING -i $LINK_INT1 -p tcp -m state --state \
ESTABLISHED,RELATED -j CONNMARK --restore-mark"

Na minha outra empresa, tenho o sistema de VPN rodando de uma maneira parecida, porém eu utilizo somente as tabelas de roteamento, indicando que tudo que sair da rede X vai pela tabela X, e tudo que sair da range H vai sair pela tabela H, e cada tabela tem um Gateway. 

Qualquer coisa prende o grito.

Abraços

--
Att
Marcos Carraro

Deivid de Castro Pilla

unread,
Apr 26, 2013, 10:30:21 AM4/26/13
to tche...@googlegroups.com
Marcos,

Cara, acho que é isso que ta ocorrendo, executei a regra agora a pouco conforme o Vinicios falou, usando o "sport" em vez de "dport" mas mesmo assim não rolou. o pacote entra pelo link certo mas não volta.

Vou da uma lida no link e posto o resultado aí.

Valeu!!


Deivid Pilla
Analista de Suporte Técnico 




From: marcos.g...@gmail.com
Date: Fri, 26 Apr 2013 10:03:19 -0300

Subject: Re: [TcheLinux] Iptables + Marcação de pacote

Marcos Carraro

unread,
Apr 26, 2013, 11:40:14 AM4/26/13
to tche...@googlegroups.com
Opa,

cara tenta ficar na escuta com o tcpdump, ele é um forte ajudante nestas horas HAHAHHA.

abraços

--
Att
Marcos Carraro


Reply all
Reply to author
Forward
0 new messages