{"id":3052,"date":"2014-09-19T13:28:59","date_gmt":"2014-09-19T13:28:59","guid":{"rendered":"http:\/\/www.deuzebranaweb.com.br\/?p=3052"},"modified":"2014-09-19T13:28:59","modified_gmt":"2014-09-19T13:28:59","slug":"entendendo-iptables-prerouting-e-postrouting","status":"publish","type":"post","link":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/2014\/09\/19\/entendendo-iptables-prerouting-e-postrouting\/","title":{"rendered":"Entendendo IPTABLES: PREROUTING e POSTROUTING"},"content":{"rendered":"<div align=\"JUSTIFY\">Quando o assunto \u00e9 firewall logo se pensa em usar um Linux com iptables. O que n\u00e3o falta s\u00e3o tutoriais pela Internet que ensinam como instalar e configurar um firewall no Linux usando o iptables. Infelizmente muita gente se confunde quando o assunto \u00e9 a chain PREROUTING e POSTROUTING da tabelna NAT do Netfilter.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">A proposta deste post \u00e9 justamente explicar o que acontece com o pacote quando passa por uma dessas chains.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><span style=\"text-decoration: underline;\"><i><b>PREROUTING<\/b><\/i><\/span><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Logo que o pacote chega ele \u00e9 modificado, isso acontece antes do roteamento do pacote. \u00c9 usado em regras de DNAT e Redirecionamento de porta.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Vamos analisar o cen\u00e1rio abaixo, onde estamos fazendo um DNAT, ou seja, toda requisi\u00e7\u00e3o feita para o IP 200.164.30.20 na porta 80 ser\u00e1 repassado para o IP da rede interna 192.168.2.100.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div class=\"separator\"><a href=\"http:\/\/2.bp.blogspot.com\/-t4BlKevhW-4\/TswouAFIRlI\/AAAAAAAAAOA\/I6azi_WNmvY\/s1600\/firewall1.jpeg\"><img decoding=\"async\" src=\"http:\/\/2.bp.blogspot.com\/-t4BlKevhW-4\/TswouAFIRlI\/AAAAAAAAAOA\/I6azi_WNmvY\/s320\/firewall1.jpeg\" alt=\"\" width=\"320\" height=\"87\" border=\"0\" \/><\/a><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">A requisi\u00e7\u00e3o vem da Internet com destino 200.164.30.20:80.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">No nosso firewall a porta 80 esta desabilitada, neste caso o pacote seria \u201cdropado\u201d, mas como temos essa regra de IPTABLES:<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">iptables -t nat -A PREROUTING -d 200.164.30.20 -p tcp &#8211;dport 80 -j DNAT &#8211;to 192.168.2.100<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Neste caso todo pacote com destino 200.164.30.20:80 ser\u00e1 repassado para 192.168.2.100:80, por\u00e9m isso acontece antes de qualquer roteamento. Veja a figura abaixo que mostra o que acontece logo que o pacote chega no firewall:<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div class=\"separator\"><a href=\"http:\/\/4.bp.blogspot.com\/-Zv4L7cYd9Tg\/TswouemuvRI\/AAAAAAAAAOI\/2AWUjq5vbik\/s1600\/firewall2.jpeg\"><img decoding=\"async\" src=\"http:\/\/4.bp.blogspot.com\/-Zv4L7cYd9Tg\/TswouemuvRI\/AAAAAAAAAOI\/2AWUjq5vbik\/s320\/firewall2.jpeg\" alt=\"\" width=\"320\" height=\"92\" border=\"0\" \/><\/a><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Como o nosso firewall conhece a rede 192.168.2.0\/24 o pacote ser\u00e1 repassado para o IP 192.168.2.100 na porta 80. Note que o roteamento foi o \u00faltimo procedimento realizado. Neste caso n\u00e3o seria l\u00f3gico realizar o roteamento primeiro j\u00e1 que o DST possui o mesmo IP do firewall (200.164.30.20).<\/div>\n<div><\/div>\n<div><\/div>\n<div><span style=\"text-decoration: underline;\"><i><b>POSTROUTING<\/b><\/i><\/span><\/div>\n<div><\/div>\n<div align=\"JUSTIFY\">Os pacotes precisam ser modificados ap\u00f3s o roteamento. \u00c9 usado em regras de SNAT e IP MASQUERADING.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Neste post vou usar o MASQUERADING para explicar como funciona o POSTROUTING.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Segue abaixo a descri\u00e7\u00e3o tirada do FOCALINUX do que seria o MASQUERADING:<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">\u201cO IP Masquerading \u00e9 um tipo especial de SNAT usado para conectar a sua rede interna a internet quando voc\u00ea recebe um IP din\u00e2mico de seu provedor\u201d.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Veja o cen\u00e1rio abaixo:<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div class=\"separator\"><a href=\"http:\/\/1.bp.blogspot.com\/-BqJkIEOR5YY\/TswouxbPKAI\/AAAAAAAAAOQ\/VJju-sFkefI\/s1600\/firewall3.jpeg\"><img decoding=\"async\" src=\"http:\/\/1.bp.blogspot.com\/-BqJkIEOR5YY\/TswouxbPKAI\/AAAAAAAAAOQ\/VJju-sFkefI\/s320\/firewall3.jpeg\" alt=\"\" width=\"320\" height=\"80\" border=\"0\" \/><\/a><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">A m\u00e1quina 192.168.2.100 pretende acessar a INTERNET, mas para isso \u00e9 preciso ter uma regra de MASQUERADING no Firewall, onde o mesmo mascara todo acesso da m\u00e1quina de origem para que saia para a Internet com o IP do pr\u00f3prio Firewall. A regra do iptables seria assim:<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<pre class=\"western\">iptables -t nat -A POSTROUTING -s 192.168.2.100 -o eth0 -j MASQUERADE<\/pre>\n<div align=\"JUSTIFY\">A requisi\u00e7\u00e3o vem de uma m\u00e1quina interna da rede (192.168.2.100) com destino (dst) <a href=\"http:\/\/www.google.com\/\">www.google.com<\/a>.<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Veja a figura abaixo que mostra o que acontece logo que o pacote chega no firewall:<\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div class=\"separator\"><a href=\"http:\/\/1.bp.blogspot.com\/-c6sC2fQ-p0I\/TswovGHUGMI\/AAAAAAAAAOY\/i5cTU3jJ8q0\/s1600\/firewall4.jpeg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/1.bp.blogspot.com\/-c6sC2fQ-p0I\/TswovGHUGMI\/AAAAAAAAAOY\/i5cTU3jJ8q0\/s320\/firewall4.jpeg\" alt=\"\" width=\"320\" height=\"78\" border=\"0\" \/><\/a><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">Quando o pacote chegar no Firewall vai ser repassado para o Gateway padr\u00e3o do Firewall que esta configurado na placa de rede com sa\u00edda para a Internet. No segundo momento, logo depois do roteamento, o pacote bate na chain POSTROUTING da nossa regra de iptables e o mesmo \u00e9 modificado para que possa navegar na Internet com um IP v\u00e1lido, no nosso caso o IP do Firewall (200.164.30.20).<\/p>\n<p>\u00c9 fundamental entender o fluxo do pacote quando o mesmo passa pelo Netfilter, Postrouting e Prerouting s\u00e3o chains que poucos entendem. Espero que com este post as d\u00favidas possam ter sido esclarecidas sobre o assunto.<\/p><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\"><\/div>\n<div align=\"JUSTIFY\">http:\/\/osvaldohp.blogspot.com.br\/2011\/11\/entendendo-iptables-prerouting-e.html<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Quando o assunto \u00e9 firewall logo se pensa em usar um Linux com iptables. O que n\u00e3o falta s\u00e3o tutoriais pela Internet que ensinam como instalar e configurar um firewall no Linux usando o iptables. Infelizmente muita gente se confunde quando o assunto \u00e9 a&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_angie_page":false,"page_builder":"","footnotes":""},"categories":[12],"tags":[],"class_list":["post-3052","post","type-post","status-publish","format-standard","hentry","category-iptables"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3052","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/comments?post=3052"}],"version-history":[{"count":0,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/posts\/3052\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/media?parent=3052"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/categories?post=3052"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.deuzebranaweb.com.br\/index.php\/wp-json\/wp\/v2\/tags?post=3052"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}