<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Eduardo Schoedler</title>
    <description>The latest articles on Forem by Eduardo Schoedler (@eschoedler).</description>
    <link>https://forem.com/eschoedler</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3810009%2Fb451544e-8aa6-48db-ac1a-ddd5377ce40b.jpg</url>
      <title>Forem: Eduardo Schoedler</title>
      <link>https://forem.com/eschoedler</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/eschoedler"/>
    <language>en</language>
    <item>
      <title>Juniper: como exportar de forma fácil todos os IPs da caixa para blackhole no uplink</title>
      <dc:creator>Eduardo Schoedler</dc:creator>
      <pubDate>Mon, 09 Mar 2026 20:15:21 +0000</pubDate>
      <link>https://forem.com/eschoedler/juniper-como-exportar-de-forma-facil-todos-os-ips-da-caixa-para-blackhole-no-uplink-1pj1</link>
      <guid>https://forem.com/eschoedler/juniper-como-exportar-de-forma-facil-todos-os-ips-da-caixa-para-blackhole-no-uplink-1pj1</guid>
      <description>&lt;p&gt;Infelizmente, nos dias de hoje, é muito comum ataque DDoS.&lt;br&gt;
Se você tem ASN e ainda não levou ataque, calma... a única certeza é que esse momento chegará para você também.&lt;/p&gt;

&lt;p&gt;Existem muitas pessoas de má fé na internet.&lt;br&gt;
Por estar há muito tempo trabalhando nessa área, já escutei rumores de práticas de DDoS entre ISPs de uma mesma região.&lt;br&gt;
Uma das práticas ocorre no início de mês, que geralmente é o vencimento da mensalidade do serviço prestado.&lt;br&gt;
Um outro player contrata um ataque DDoS, causando intermitência de navegação, indisponibilidades e acaba por gerar instatisfação sobre o serviço prestado.&lt;br&gt;
Ou seja, a intenção do ataque é tentar arrecadar os clientes do concorrente.&lt;br&gt;
É a triste realidade do mercado brasileiro.&lt;/p&gt;

&lt;p&gt;Esse artigo tem como foco principal explicar o comportamento do junos ao exportar alguns tipos de prefixos do que com o DDoS em si. Hoje em dia, existem empresas que vendem solução de mitigação de DDoS, onde o tráfego é analisado e tratado em um scrubbing center, que é menos intrusivo do que descartar totalmente o tráfego de um IP do seu ASN.&lt;/p&gt;

&lt;p&gt;Antes de começarmos, estou supondo que você leu a &lt;a href="https://www.rfc-editor.org/rfc/rfc6192.html" rel="noopener noreferrer"&gt;RFC6192&lt;/a&gt; [1] e já tem algum filtro do tipo "PROTECT-RE".&lt;br&gt;
É imprescindível ter esse filtro aplicado em roteadores que estão em produção, descartando tráfego indesejado direcionado à Control-Plane da sua caixa.&lt;/p&gt;

&lt;p&gt;Agora focando na parte técnica, existem algumas formas de minimizar o impacto de um DDoS.&lt;br&gt;
Uma delas é manter a estabilidade da caixa durante um evento desse porte.&lt;br&gt;
Manter a control-plane do roteador operando sem quedas de BGP é imprescindível nesse momento.&lt;/p&gt;

&lt;p&gt;Algumas coisas que você terá de validar antes de começar:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sua(s) operadora(s) aceita(m) anúncios blackhole?&lt;/li&gt;
&lt;li&gt;Está habilitado juntamente na sua sessão BGP de trânsito ou é uma sessão separada apenas para blackhole?&lt;/li&gt;
&lt;li&gt;Qual o limite de prefixos que está liberado na sua sessão BGP?&lt;/li&gt;
&lt;li&gt;Qual é a community BGP que a operadora exige que marque no prefixo?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eis a topologia desse lab, mais simples impossível.&lt;br&gt;
É apenas uma sessão BGP entre dois routers, simulando um upstream para validação dos anúncios.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Far2v6y4aiihq0wfjfy7s.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Far2v6y4aiihq0wfjfy7s.PNG" alt="lab topology" width="500" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Primeiramente, vamos verificar qual é o comportamento do Junos e como exportar esses endereços locais.&lt;/p&gt;

&lt;p&gt;Os IPs da caixa são considerados "&lt;code&gt;protocol local&lt;/code&gt;", você pode validar com o comando:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxeid9punxbclbeuwd1ts.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxeid9punxbclbeuwd1ts.png" alt="show route protocol local" width="800" height="1058"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repare que todos os IPs da caixa já estão com a máscara /32, o que facilita muito exportá-los para blackhole.&lt;/p&gt;

&lt;p&gt;No juniper, todo tipo de anúncio BGP é feito via policy.&lt;br&gt;
Então vamos montar uma policy simples para exportá-los:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1me9rqd6ahltcf4cl7k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1me9rqd6ahltcf4cl7k.png" alt="policy export-local" width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repare aqui na policy que estou filtrando exatamente o que eu quero que seja anunciado, evitando que vaze algum prefixo indevidamente, como a loopback, por exemplo.&lt;/p&gt;

&lt;p&gt;Vamos aplicar a policy na sessão BGP para exportar os prefixos:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdi94qs0hlfuibwzw0ttv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdi94qs0hlfuibwzw0ttv.png" alt="show bgp neighbor - before" width="800" height="947"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notaram que, apesar da policy estar aplicada corretamente na sessão BGP, o Junos não está exportando os prefixos? Por padrão, o Junos não envia os prefixos do tipo "local". É necessário que a gente altere o comportamento padrão dele, cfe abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4gsdajdtld5uo1y70k2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv4gsdajdtld5uo1y70k2.png" alt="set routing-options interface-routes family inet export lan" width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Logo após o commit, os prefixos já estão sendo exportados, como podemos verificar:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7serfkremrahw7h640p8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7serfkremrahw7h640p8.png" alt="show bgp neighbor - after" width="800" height="980"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa36gmsk8vm9ls7ca1afh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa36gmsk8vm9ls7ca1afh.png" alt="show route advertising-protocol bgp" width="800" height="578"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Perfeito!&lt;br&gt;
Essa é a teoria por trás de como habilitar o export dos prefixos "&lt;code&gt;protocol local&lt;/code&gt;" no Juniper.&lt;/p&gt;

&lt;p&gt;Agora vamos colocar isso em prática.&lt;br&gt;
Vamos simular que esse ISP está conectado ao IX.br.&lt;/p&gt;

&lt;p&gt;O material necessário está no site: &lt;a href="https://ix.br/documentacao" rel="noopener noreferrer"&gt;https://ix.br/documentacao&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A documentação da utilização está na página 4 do documento abaixo:&lt;br&gt;
&lt;a href="https://docs.ix.br/doc/politica-de-tratamento-de-communities-no-ix-br-v4_3.pdf" rel="noopener noreferrer"&gt;https://docs.ix.br/doc/politica-de-tratamento-de-communities-no-ix-br-v4_3.pdf&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A tabela completa está no documento abaixo:&lt;br&gt;
&lt;a href="https://docs.ix.br/doc/communities-table-ix-br-v2_1-14082024.pdf" rel="noopener noreferrer"&gt;https://docs.ix.br/doc/communities-table-ix-br-v2_1-14082024.pdf&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Procurem por "BH announce" (anúncio para blackhole), na tabela consta como sendo a community &lt;code&gt;65535:666&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Com essa informação, mãos à obra.&lt;/p&gt;

&lt;p&gt;Primeiro passo é marcar a community exigida no IX.br para que os route-servers passem a aceitar os anúncios.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5u7ncnq3uuvcrryvccwv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5u7ncnq3uuvcrryvccwv.png" alt="exporting prefixes with blackhole community" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A policy de export já está marcando a community BGP nos anúncios, vamos validar se eles já estão sendo exportados ao neighbor:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstadipb6hflr1cnt17vu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstadipb6hflr1cnt17vu.png" alt="validating bgp advertisements" width="800" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Parece promissor!&lt;br&gt;
Agora você pode utilizar a ferramenta de &lt;a href="https://lg.ix.br/" rel="noopener noreferrer"&gt;looking glass do IX.br&lt;/a&gt; para validar se os seus anúncios estão sendo aceitos por lá.&lt;/p&gt;

&lt;p&gt;Se por acaso a sessão BGP cair após você incluir os anúncios de blackhole, é muito provável que o limite de prefixos esteja apertado. É necessário que você abra um ticket para aumento do limite.&lt;/p&gt;

&lt;p&gt;Uma outra boa prática é manter seu &lt;a href="https://www.peeringdb.com/" rel="noopener noreferrer"&gt;PeeringDB&lt;/a&gt; atualizado. Lá existe um campo específico para você informar quantos prefixos v4 e v6 o seu ASN poderá exportar no máximo, aqui você deve considerar seus prefixos de blackhole.&lt;/p&gt;

&lt;p&gt;Espero que esse artigo tenha sido útil de alguma forma.&lt;/p&gt;

&lt;p&gt;Obrigado.&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
Referências:&lt;/p&gt;

&lt;p&gt;[1] &lt;a href="https://www.rfc-editor.org/rfc/rfc6192.html" rel="noopener noreferrer"&gt;https://www.rfc-editor.org/rfc/rfc6192.html&lt;/a&gt;, apêndice A.2.&lt;br&gt;
[2] &lt;a href="https://ix.br/documentacao" rel="noopener noreferrer"&gt;https://ix.br/documentacao&lt;/a&gt;&lt;br&gt;
[3] &lt;a href="https://docs.ix.br/doc/politica-de-tratamento-de-communities-no-ix-br-v4_3.pdf" rel="noopener noreferrer"&gt;https://docs.ix.br/doc/politica-de-tratamento-de-communities-no-ix-br-v4_3.pdf&lt;/a&gt;&lt;br&gt;
[4] &lt;a href="https://docs.ix.br/doc/communities-table-ix-br-v2_1-14082024.pdf" rel="noopener noreferrer"&gt;https://docs.ix.br/doc/communities-table-ix-br-v2_1-14082024.pdf&lt;/a&gt;&lt;br&gt;
[5] &lt;a href="https://lg.ix.br/" rel="noopener noreferrer"&gt;https://lg.ix.br/&lt;/a&gt;&lt;br&gt;
[6] &lt;a href="https://www.peeringdb.com/" rel="noopener noreferrer"&gt;https://www.peeringdb.com/&lt;/a&gt;&lt;br&gt;
[7] Mais boas práticas em &lt;a href="https://bcp.nic.br/" rel="noopener noreferrer"&gt;https://bcp.nic.br/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>networking</category>
      <category>tutorial</category>
      <category>bgp</category>
      <category>juniper</category>
    </item>
  </channel>
</rss>
