{"id":4222,"date":"2015-12-10T10:51:32","date_gmt":"2015-12-10T12:51:32","guid":{"rendered":"https:\/\/www.viazap.com.br\/?p=4222"},"modified":"2015-12-09T01:53:31","modified_gmt":"2015-12-09T03:53:31","slug":"configurando-o-segundo-default-gateway-para-um-link-de-entrada-especifico","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4222","title":{"rendered":"CONFIGURANDO O SEGUNDO DEFAULT GATEWAY PARA UM LINK DE ENTRADA ESPEC\u00cdFICO"},"content":{"rendered":"<h1>INTRODU\u00c7\u00c3O<\/h1>\n<p>&nbsp;<\/p>\n<div>Os objetivos desse artigo s\u00e3o:<\/p>\n<ul>\n<li>Apresentar o cen\u00e1rio onde existe a necessidade de publicar um servi\u00e7o em dois links de internet.<\/li>\n<li>Detalhar os problemas que podem ocorrer e como identific\u00e1-los.<\/li>\n<li>Aplicar a solu\u00e7\u00e3o e assim fazer dois default gateway funcionar de forma plena.<\/li>\n<\/ul>\n<h1>CEN\u00c1RIO<\/h1>\n<p>A empresa ACME possui um servidor Debian 8 (D8-SRV01) que executa uma aplica\u00e7\u00e3o na porta 3333, o servidor tem o seguinte IP de Lan 172.16.10.100 e esta conectando diretamente a um firewall <a href=\"http:\/\/www.vivaolinux.com.br\/linux\/\">Linux<\/a> executando Iptables puro (D8-FW01) IP de Lan 172.16.10.254, existe um link de internet dedicado com a operadora A conectado diretamente ao firewall, o IP v\u00e1lido fornecido \u00e9 200.2.2.5, assim o firewall faz o redirect desse IP na porta 3333 para o IP interno do servidor (D8-SRV01) e tudo funciona adequadamente.<\/p>\n<p>Devido a import\u00e2ncia desse servi\u00e7o e as constantes instabilidades da operadora A a empresa ACME decide contratar um segundo link de internet com a operadora B, recebendo o IP v\u00e1lido 187.8.8.5, como o servi\u00e7o da porta 3333 \u00e9 muito conhecido por todos os funcion\u00e1rios e o software que utiliza \u00e9 bem complexo de configurar o gerente pede para que n\u00e3o troque a porta acessada externamente, ou seja, a porta de acesso deve ser a mesma tanto na operadora A quanto na operadora B. O administrador de rede muito feliz pela possibilidade de aumentar a disponibilidade do servi\u00e7o com a contrata\u00e7\u00e3o de mais um link de internet, acaba percebendo que fazer os acessos do servidor funcionar simultaneamente pelas duas operadoras n\u00e3o vai ser uma tarefa t\u00e3o f\u00e1cil quanto pensava.<\/p><\/div>\n<div><\/div>\n<div><!--more--><\/p>\n<p>De formar resumida, o cen\u00e1rio da empresa ACME \u00e9 esse:<\/p>\n<div class=\"figura\"><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/Imagem_01-projeto118.jpg\" target=\"_blank\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_Imagem_01-projeto118.jpg\" alt=\"\" width=\"500\" height=\"359\" border=\"0\" \/><\/a><\/div>\n<h1>CONFIGURA\u00c7\u00d5ES DO FIREWALL (D8-FW01)<\/h1>\n<p>Localiza\u00e7\u00e3o e conte\u00fado do script iptables:<\/p>\n<p><strong>$ cat \/usr\/local\/bin\/fwregras.sh <\/strong><\/p>\n<div class=\"codigo\"><span class=\"comentario\">#Limpando regras<\/span><br \/>\niptables -F<br \/>\niptables -F -t nat<br \/>\niptables -F -t mangle<\/p>\n<p><span class=\"comentario\">#Definindo politica padr\u00e3o<\/span><br \/>\niptables -P INPUTS DROP<br \/>\niptables -P FORWARD DROP<br \/>\niptables -P OUTPUT ACCEPT<\/p>\n<p><span class=\"comentario\">#Declarando vari\u00e1veis<\/span><br \/>\nSERVER=172.16.10.100<br \/>\nIPOPA=200.2.2.5<br \/>\nIPOPB=187.8.8.5<\/p>\n<p><span class=\"comentario\">#Liberando FORWARD<\/span><br \/>\necho 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward<\/p>\n<p><span class=\"comentario\">#Liberando ICMP INPUT<\/span><br \/>\niptables -A INPUT -p icmp -j ACCEPT<\/p>\n<p><span class=\"comentario\">#Liberando SSH INPUT na porta 22 (apenas para ambiente de teste)<\/span><br \/>\niptables -A INPUT -p tcp -s 0\/0 &#8211;dport 22 -j ACCEPT<\/p>\n<p><span class=\"comentario\">#Mascarando o ICMP<\/span><br \/>\niptables -t nat -A POSTROUTING -p ICMP -o eth0 -j MASQUERADE<\/p>\n<p><span class=\"comentario\">#Redirect para os IPs v\u00e1lidos <\/span><br \/>\niptables -t nat -A PREROUTING -p TCP -d $IPOPA &#8211;dport 3333 -i eth1 -j DNAT &#8211;to $SERVER:3333<br \/>\niptables -t nat -A PREROUTING -p TCP -d $IPOPB &#8211;dport 3333 -i eth2 -j DNAT &#8211;to $SERVER:3333<\/p>\n<p><span class=\"comentario\">#Forward para o servidor D8-SRV01<\/span><br \/>\niptables -A FORWARD -p TCP -d $SERVER &#8211;dport 3333 -j ACCEPT<\/p>\n<p><span class=\"comentario\">#NATs para o servidor D8-SRV01<\/span><br \/>\niptables -t nat -A POSTROUTING -s 172.16.10.100 -o eth1 -j MASQUERADE<br \/>\niptables -t nat -A POSTROUTING -s 172.16.10.100 -o eth2 -j MASQUERADE<\/p>\n<p><span class=\"comentario\">#Tornando o firewall STATEFUL<\/span><br \/>\niptables -A FORWARD -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<br \/>\niptables -A INPUT -m state &#8211;state ESTABLISHED,RELATED -j ACCEPT<\/div>\n<p>Arquivo de configura\u00e7\u00e3o das interfaces de rede:<\/p>\n<p><strong>$ cat \/etc\/network\/interface<\/strong><\/p>\n<div class=\"codigo\">allow-hotplug eth0<br \/>\niface eth0 inet static<br \/>\naddress 172.16.10.254<br \/>\nnetmask 255.255.255.0<\/p>\n<p>allow-hotplug eth1<br \/>\niface eth1 inet static<br \/>\naddress 200.2.2.2<br \/>\nnetmask 255.255.255.252<br \/>\ngateway 200.2.2.1<\/p>\n<p>allow-hotplug eth2<br \/>\niface eth2 inet static<br \/>\naddress 187.8.8.2<br \/>\nnetmask 255.255.255.252<\/p><\/div>\n<\/div>\n<h1>PROBLEMAS E SOLU\u00c7\u00d5ES<\/h1>\n<p>&nbsp;<\/p>\n<div>Nesse cen\u00e1rio existem dois problemas.<\/p>\n<p>1. Utiliza\u00e7\u00e3o da banda nos dois links<\/p>\n<p>O firewall por ter apenas um default gateway, o acesso externo chegar\u00e1 pelo link da operadora B, por\u00e9m sair\u00e1 pela operadora A. Situa\u00e7\u00e3o muito ruim, pois o servi\u00e7o ainda depender\u00e1 do link principal.<\/p>\n<p>2. Antispoofing<\/p>\n<p>Caso o antisoofing esteja ativado no roteador de borda, apenas os IPs que s\u00e3o entregues por ele poder\u00e3o sair, ou seja, o acesso realizado pelo segundo link saindo pelo link principal n\u00e3o funcionar\u00e1 de jeito nenhum. Essa situa\u00e7\u00e3o \u00e9 mais dif\u00edcil de acontecer, pois poucas operadoras se preocupam em ativar esse recurso.<\/p>\n<p>Demonstra\u00e7\u00e3o do problema:<\/p>\n<p>Pacote entrando pela interface eth2 (Operadora B), origem rede do cliente IP 200.7.7.2.<\/p>\n<div class=\"figura\"><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/Imagem_02-projeto118.png\" target=\"_blank\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_Imagem_02-projeto118.png\" alt=\"\" width=\"500\" height=\"35\" border=\"0\" \/><\/a><\/div>\n<p>Pacote passando pela eth0 (LAN) ao servidor de aplica\u00e7\u00e3o 172.16.10.100 porta 3333 e servidor respondendo a requisi\u00e7\u00e3o.<\/p>\n<div class=\"figura\"><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/Imagem_03-projeto118.png\" target=\"_blank\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_Imagem_03-projeto118.png\" alt=\"\" width=\"500\" height=\"44\" border=\"0\" \/><\/a><\/div>\n<p>Pacote saindo pela eth1 (Operadora A), IP de sa\u00edda 187.8.8.5 para o cliente 200.7.7.2.<\/p>\n<div class=\"figura\"><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/Imagem_04-projeto118.png\" target=\"_blank\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_Imagem_04-projeto118.png\" alt=\"\" width=\"500\" height=\"49\" border=\"0\" \/><\/a><\/div>\n<h1>SOLU\u00c7\u00c3O<\/h1>\n<p>A solu\u00e7\u00e3o \u00e9 bem simples, basta marcar os pacotes que entram pelo segundo link e configurar outra tabela de roteamento contendo um default gateway para os pacotes marcados.<\/p>\n<p>1. Editar o script do iptables do servidor D8-FW01, adicionando no final do arquivo.<\/p>\n<p><strong># vim \/usr\/local\/bin\/fwregras.sh <\/strong><\/p>\n<div class=\"codigo\"><span class=\"comentario\">#Setar a marca 10 nos pacotes com o destino ao 187.8.8.5 (IPOBP) e porta 3333.<\/span><br \/>\niptables -t mangle -A PREROUTING -i eth2 -p tcp -d $IPOPB &#8211;dport 3333 -j MARK &#8211;set-mark 10<\/p>\n<p><span class=\"comentario\">#Salva a marca\u00e7\u00e3o dos pacotes.<\/span><br \/>\niptables -t mangle -A PREROUTING -i eth2 -p tcp -d $IPOPB &#8211;dport 3333 -j CONNMARK &#8211;save-mark<\/p>\n<p><span class=\"comentario\">#Quando o servidor estiver devolvendo o pacote a marca\u00e7\u00e3o ser\u00e1 restaurada.<\/span><br \/>\niptables -t mangle -A PREROUTING -i eth0 -p tcp -s $SERVER &#8211;sport 3333 -m state &#8211;state ESTABLISHED,RELATED -j CONNMARK &#8211;restore-mark<\/div>\n<p>2. Criar uma tabela de roteamento com n\u00famero 200 com nome rotasmark10.<\/p>\n<p><strong># echo &#8220;200 rotasmark10&#8221; &gt;&gt; \/etc\/iproute2\/rt_tables<\/strong><\/p>\n<p>3. Configurar o arquivo interfaces, adicionando no final do arquivo.<\/p>\n<p><strong># vim \/etc\/network\/interface<\/strong><\/p>\n<div class=\"codigo\"><span class=\"comentario\">#Cria a regra fwmark10 dizendo que os pacotes marcados com 10 utilizas a tabela rotasmark10.<\/span><br \/>\nup ip rule add fwmark 10 table rotasmark10 || \/bin\/true<\/p>\n<p><span class=\"comentario\">#Adicionar a rede LAN 172.16.10.0\/24 na tabela rotasmask10.<\/span><br \/>\nup ip route add 172.16.10.0\/24 dev eth0 table rotasmark10 || \/bin\/true<\/p>\n<p><span class=\"comentario\">#Configura o default gateway da tabela rotasmask10.<\/span><br \/>\nup ip route add default via 187.8.8.1 dev eth2 table rotasmark10 || \/bin\/true<\/div>\n<p>4. Subir rotas manualmente, para n\u00e3o precisar reiniciar o firewall, executando os comandos.<\/p>\n<p><strong># ip rule add fwmark 10 table rotasmark10<br \/>\n# ip route add 172.16.10.0\/24 dev eth0 table rotasmark10<br \/>\n# ip route add default via 187.8.8.1 dev eth2 table rotasmark10<\/strong><\/p>\n<p>5. Testar o acesso.<\/p>\n<p>Pacote entrando pela interface eth2 (Operadora B), origem rede do cliente IP 200.7.7.2 e j\u00e1 mostrando o retorno, ou seja, configura\u00e7\u00e3o realizada com sucesso!<\/p>\n<div class=\"figura\"><a href=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/Imagem_05-projeto118.png\" target=\"_blank\" rel=\"nofollow\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/img.vivaolinux.com.br\/imagens\/artigos\/comunidade\/thumb_Imagem_05-projeto118.png\" alt=\"\" width=\"500\" height=\"55\" border=\"0\" \/><\/a><\/div>\n<p>6. Caso ainda n\u00e3o esteja funcionando existe alguns comandos para auxiliar no troubleshooting.<\/p>\n<p>Validar se a regra fwmark foi criada.<\/p>\n<p><strong># ip rule list<\/strong><\/p>\n<p>Validar se as rotas est\u00e3o ativas na tabela de roteamento 200.<\/p>\n<p><strong># ip route list table 200<\/strong><\/p>\n<p>Validar se as regras de marca\u00e7\u00e3o foram carregadas e est\u00e3o corretas.<\/p>\n<p><strong># iptables -t mangle -nvL | grep 3333<\/strong><\/p>\n<p>Validar se os pacotes para a porta 3333 est\u00e3o sendo marcados.<\/p>\n<p><strong># watch &#8216;iptables -t mangle -nvL | grep 3333&#8217;<\/strong><\/p>\n<h1>CONSIDERA\u00c7\u00d5ES<\/h1>\n<p>Configurei a marca\u00e7\u00e3o de pacotes apenas para o segundo link, todavia \u00e9 interessante fazer a marca\u00e7\u00e3o para ambos os links, pois caso seja necess\u00e1rio alterar a rota default para a operadora B n\u00e3o ocorrera a mesmo problema.<\/p>\n<h1>REFER\u00caNCIAS<\/h1>\n<ul>\n<li><a href=\"http:\/\/bcp.nic.br\/entenda-o-antispoofing\/\" target=\"_blank\" rel=\"nofollow\">Antispoofing nic.br<\/a><\/li>\n<li><a href=\"https:\/\/home.regit.org\/netfilter-en\/netfilter-connmark\/\" target=\"_blank\" rel=\"nofollow\">Netfilter connmark<\/a><\/li>\n<li><a href=\"https:\/\/www.frozentux.net\/iptables-tutorial\/iptables-tutorial.html\" target=\"_blank\" rel=\"nofollow\">Iptables Tutorial 1.2.2<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>INTRODU\u00c7\u00c3O &nbsp; Os objetivos desse artigo s\u00e3o: Apresentar o cen\u00e1rio onde existe a necessidade de publicar um servi\u00e7o em dois links de internet. Detalhar os problemas que podem ocorrer e como identific\u00e1-los. Aplicar a solu\u00e7\u00e3o e assim fazer dois default gateway funcionar de forma plena. CEN\u00c1RIO A empresa ACME possui um servidor Debian 8 (D8-SRV01) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[460,730,1,830,540,79,725,42,51,495,514,85,68,271,501],"tags":[718,353,1003,1005,1006,1004,953,698,355,1002,370],"class_list":["post-4222","post","type-post","status-publish","format-standard","hentry","category-awstats","category-clusterweb","category-viazap","category-debian","category-dhcp-2","category-firewall","category-hospedagem","category-leitura-recomendada","category-linux-linuxrs","category-profissional-de-ti","category-programacao","category-proxy","category-redes-2","category-seguranca-2","category-shell-script","tag-configurando","tag-de","tag-default","tag-entrada","tag-especifico","tag-gateway","tag-link","tag-o","tag-para","tag-segundo","tag-um"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4222","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4222"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4222\/revisions"}],"predecessor-version":[{"id":4223,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4222\/revisions\/4223"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4222"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}