<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Arquivos bgp - Remontti</title>
	<atom:link href="https://blog.remontti.com.br/tag/bgp/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.remontti.com.br/tag/bgp</link>
	<description>rudimar@remontti</description>
	<lastBuildDate>Tue, 16 Jan 2024 17:27:58 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.remontti.com.br/wp-content/uploads/2024/09/icone-rr-80x80.png</url>
	<title>Arquivos bgp - Remontti</title>
	<link>https://blog.remontti.com.br/tag/bgp</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>BGP Monitoring Protocol (BMP) aprenda a instalar o OpenBMP</title>
		<link>https://blog.remontti.com.br/6723</link>
					<comments>https://blog.remontti.com.br/6723#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Thu, 04 Aug 2022 23:47:18 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[junos]]></category>
		<category><![CDATA[monitoramento]]></category>
		<category><![CDATA[openbmp]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6723</guid>

					<description><![CDATA[<p>openBMP é um sistema de monitoramento BGP. Compatível com protocolo de monitoramento BGP (BMP). Os dados BGP são armazenados no banco de dados PostgreSQL. Os RIBs são mantidos pelo estado, bem como o histórico&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6723">BGP Monitoring Protocol (BMP) aprenda a instalar o OpenBMP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="https://www.openbmp.org/"><strong>openBMP</strong></a> é um sistema de monitoramento BGP. Compatível com protocolo de monitoramento BGP (BMP). Os dados BGP são armazenados no banco de dados PostgreSQL. Os RIBs são mantidos pelo estado, bem como o histórico completo para cada atualização do BGP.</p>
<p><img fetchpriority="high" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-flow.png" alt="" width="640" height="565" class="alignnone size-full wp-image-6727" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-flow.png 640w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-flow-300x265.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></p>
<p>&#8211; Dispositivos BMP (por exemplo, roteadores) enviam mensagens BMP para um coletor/daemon OpenBMP. Um daemon OpenBMP pode lidar com muitos roteadores e peers bgp, mas em uma rede grande com links de trânsito e tabelas de roteamento de internet completas, vários coletores OpenBMP são recomendados. Basta configurar no dispositivo BMP (roteador) qual servidor BMP deve ser utilizado.</p>
<p>&#8211; O Kafka permite que muitos aplicativos acessem os feeds BMP existentes de qualquer número de roteadores. Um único feed BMP via OpenBMP pode alimentar centenas de aplicativos de consumo, como MySQL, Cassandra, monitores em tempo real, arquivo simples, ELK, Apache Spark, etc.</p>
<p>&#8211; Administradores, engenheiros de rede, programas/scripts automatizados, etc. interagem com a API OpenBMP ou qualquer outro aplicativo de consumo</p>
<h5>Casos de uso</h5>
<p><em>(Tradução de: <a href="https://www.openbmp.org">https://www.openbmp.org</a>)</em><br />
Existem muitas razões para usar o OpenBMP, mas para destacar algumas comuns:</p>
<p>&#8211; Coletor BMP Centralizado &#8211; OpenBMP é um produtor para Kafka. Você pode escrever seu próprio consumidor ou usar um existente. Outros produtos podem interagir com o OpenBMP via Apache Kafka para fluxos RAW BMP ou as mensagens analisadas. Consulte Especificação da API do Barramento de Mensagens para obter mais detalhes.</p>
<p>&#8211; Monitoramento de topologia em tempo real &#8211; Pode monitorar e alertar sobre alterações de topologia, alterações de política ou falta de aplicação, vazamento de rota, seqüestro, etc.</p>
<p>&#8211; Segurança de BGP/Rota &#8211; Vazamento de rota, seqüestro por origem, por melhores caminhos de trânsito ou desvio da linha de base</p>
<p>&#8211; Espelhos &#8211; IPv4, IPv6 e VPN4</p>
<p>&#8211; Route Analytics &#8211; Rastreie tempos de convergência, histórico de prefixos conforme eles mudam ao longo do tempo, monitore e rastreie mudanças de política BGP, etc…</p>
<p>&#8211; Análise de Engenharia de Tráfego &#8211; Adapte-se dinamicamente às mudanças e saiba qual é a melhor mudança</p>
<p>&#8211; Hipóteses pré-políticas de BGP &#8211; As informações de roteamento pré-políticas fornecem informações sobre todos os atributos de caminho de vários pontos na rede, permitindo visualizações de topologia hipotéticas não intrusivas para novas validações de políticas</p>
<p>&#8211; Topologia IGP &#8211; BGP-LS (link-state) fornece a topologia completa do IGP (OSPF e/ou IS-IS). A topologia IGP fornece informações de nível de nó, link e prefixo. Isso inclui todos os próximos saltos do BGP. Agora é possível fazer uma seleção de melhor caminho BGP com métrica IGP para informações Adj-In-RIB. Também é possível monitorar o próprio IGP no que se refere a links, nós, prefixos e BGP.</p>
<p>Quem desejar se aprofundar mais tem um lindo artigo no <a href="https://wiki.brasilpeeringforum.org/w/Solucoes_para_o_gerenciamento_efetivo_do_bgp_em_um_sistema_autonomo" rel="noopener" target="_blank">Brasil Peering Fórum</a> escrito pelo <a href="https://www.linkedin.com/in/leofurtadonyc/" rel="noopener" target="_blank">Leonardo Furtado</a>. Agradeço ao <a href="https://www.linkedin.com/in/rudsoncosta/" rel="noopener" target="_blank">Rudson Costa</a> por me apresentar a ferramenta e me instigar a escrever este tutorial.</p>
<p><strong>Distribuição utilizada neste tutorial:</strong><br />
Debian 11 (Bullseye) 64 bits <a href="https://blog.remontti.com.br/5792" rel="noopener" target="_blank">instalação mínima</a><br />
<a href="https://blog.remontti.com.br/5867" rel="noopener" target="_blank">Como melhorar a produtividade no seu Debian após instalação</a> (Recomendado)</p>
<p>Atualize e instale os pacotes necessários</p>
<pre class="remontti-code"># apt update -y 
# apt upgrade -y 
# apt install wget git vim nano docker-compose htop tree -y </pre>
<p>Crie o diretório qual iremos baixar o projeto OpenBMP</p>
<pre class="remontti-code"># mkdir /root/obmp-install
# cd /root/obmp-install
# wget https://raw.githubusercontent.com/OpenBMP/obmp-docker/main/docker-compose.yml 
# git clone https://github.com/OpenBMP/obmp-grafana.git</pre>
<p>Crie todos os diretórios e de as devidas permissões <em>(segui a documentação, antes de vir me criticar do 777)</em></p>
<pre class="remontti-code"># export OBMP_DATA_ROOT=/var/openbmp
# mkdir -p $OBMP_DATA_ROOT
# mkdir -p ${OBMP_DATA_ROOT}/config
# chmod -R 777 ${OBMP_DATA_ROOT}/config
# mkdir -p ${OBMP_DATA_ROOT}/zk-data
# mkdir -p ${OBMP_DATA_ROOT}/zk-log
# chown -R 1000:1000 ${OBMP_DATA_ROOT}/zk-*/
# mkdir -p ${OBMP_DATA_ROOT}/postgres/data
# mkdir -p ${OBMP_DATA_ROOT}/postgres/ts
# chown -R 1000:1000 ${OBMP_DATA_ROOT}/postgres/
# mkdir -p ${OBMP_DATA_ROOT}/kafka-data
# chown -R 1000:1000 ${OBMP_DATA_ROOT}/kafka-data/
# chmod 777 ${OBMP_DATA_ROOT}/kafka-data
# mkdir -p ${OBMP_DATA_ROOT}/grafana
# cp -r obmp-grafana/dashboards obmp-grafana/provisioning ${OBMP_DATA_ROOT}/grafana/
# chmod -R 777 ${OBMP_DATA_ROOT}/grafana</pre>
<p>Verifique se tudo foi criado</p>
<pre class="remontti-code"># tree $OBMP_DATA_ROOT</pre>
<p>Ajuste a memória Psql-App leia mais <a href="https://www.openbmp.org/getting_started.html#vm-sizing" rel="noopener" target="_blank">aqui</a> sobre requisitos de hardware</p>
<pre class="remontti-code"># sed -i &#039;s/- MEM=3/- MEM=4/&#039; docker-compose.yml</pre>
<p>Agora iremos subir todos os containes:</p>
<pre class="remontti-code"># OBMP_DATA_ROOT=/var/openbmp docker-compose -f ./docker-compose.yml -p obmp up -d</pre>
<p>Verifique se todos os containes estão Ups</p>
<pre class="remontti-code">docker ps</pre>
<pre class="remontti-code-plain">#CONTAINER ID   IMAGE                             COMMAND                  CREATED          STATUS          PORTS                                        NAMES
#079afaaba23f   confluentinc/cp-kafka:7.1.1       &quot;/etc/confluent/dock…&quot;   24 minutes ago   Up 24 minutes   0.0.0.0:9092-&gt;9092/tcp                       obmp-kafka
#fc2f5a316138   openbmp/whois:2.2.0               &quot;/bin/sh -c &#039;/usr/lo…&quot;   24 minutes ago   Up 24 minutes   0.0.0.0:4300-&gt;43/tcp                         obmp-whois
#47d8776c4fc9   openbmp/psql-app:2.2.1            &quot;/usr/sbin/run&quot;          24 minutes ago   Up 23 minutes   0.0.0.0:9005-&gt;9005/tcp                       obmp-psql-app
#9b97cc146ff7   openbmp/postgres:2.2.0            &quot;/docker-entrypoint.…&quot;   24 minutes ago   Up 24 minutes   8008/tcp, 0.0.0.0:5432-&gt;5432/tcp, 8081/tcp   obmp-psql
#dc694dd40972   openbmp/collector:2.2.0           &quot;/usr/sbin/run&quot;          24 minutes ago   Up 24 minutes   0.0.0.0:5000-&gt;5000/tcp                       obmp-collector
#305a1f316ba8   confluentinc/cp-zookeeper:7.1.1   &quot;/etc/confluent/dock…&quot;   24 minutes ago   Up 24 minutes   2181/tcp, 2888/tcp, 3888/tcp                 obmp-zookeeper
#949272653acb   grafana/grafana:8.5.4             &quot;/run.sh&quot;                24 minutes ago   Up 24 minutes   0.0.0.0:3000-&gt;3000/tcp                       obmp-grafana</pre>
<p>Acesse o grafana na porta 3000 deslogue e logue novamente com usuário <strong>admin</strong> e senha <strong>openbmp</strong> e faça a alteração do mesmo.<br />
<img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana.png" alt="" width="1580" height="870" class="alignnone size-full wp-image-6734" srcset="https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana.png 1580w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana-300x165.png 300w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana-1024x564.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana-768x423.png 768w, https://blog.remontti.com.br/wp-content/uploads/2022/08/openbmp-grafana-1536x846.png 1536w" sizes="(max-width: 1580px) 100vw, 1580px" /></p>
<h3>Criando um firewall para proteger</h3>
<p>Podemos consultar com o comando ss várias portas abertas, por segurança vamos fecha-las.</p>
<pre class="remontti-code"># ss -putan | grep LIST</pre>
<pre class="remontti-code-plain">tcp   LISTEN 0      128          0.0.0.0:22          0.0.0.0:*     users:((&quot;sshd&quot;,pid=441,fd=3))                        
tcp   LISTEN 0      4096         0.0.0.0:5432        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=5651,fd=4))               
tcp   LISTEN 0      4096         0.0.0.0:3000        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=5547,fd=4))               
tcp   LISTEN 0      4096         0.0.0.0:9092        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=6188,fd=4))               
tcp   LISTEN 0      4096         0.0.0.0:5000        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=5576,fd=4))               
tcp   LISTEN 0      4096       127.0.0.1:42315       0.0.0.0:*     users:((&quot;containerd&quot;,pid=429,fd=13))                 
tcp   LISTEN 0      4096         0.0.0.0:4300        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=5756,fd=4))               
tcp   LISTEN 0      4096         0.0.0.0:9005        0.0.0.0:*     users:((&quot;docker-proxy&quot;,pid=6559,fd=4))               
tcp   LISTEN 0      128             [::]:22             [::]:*     users:((&quot;sshd&quot;,pid=441,fd=4))  </pre>
<p>O nftablesjá vem por padrão instalado no Debian 11. </p>
<pre class="remontti-code"># vim /etc/nftables.conf</pre>
<p>Neste exemplo (quase q auto explicativo) vou deixar apenas a porta do Grafana aberta, as demais restritas a variável <strong>ACESSO_EXTERNO</strong>.</p>
<pre class="remontti-code">#!/usr/sbin/nft -f

flush ruleset

define PORTAS_RESTRITAS = { 22,4300,5000,5432,9092,9005 }
define PORTAS_ABERTAS = { 3000 }

define ACESSO_EXTERNO_IPv4 = { 172.16.0.0/12, 10.0.0.0/8, 200.200.200.0/24 }
define ACESSO_EXTERNO_IPv6 = { 2001:db8:1::/64 }

define ACESSO_LOCALHOST_IPv4 = { 127.0.0.0/8 }
define ACESSO_LOCALHOST_IPv6 = { ::1/128 }

table inet filter {
    set src_ipv4 {
        type ipv4_addr
        flags interval
        elements = { $ACESSO_LOCALHOST_IPv4, $ACESSO_EXTERNO_IPv4 }
    }
    set src_ipv6 {
        type ipv6_addr
        flags interval
        elements = { $ACESSO_LOCALHOST_IPv6, $ACESSO_EXTERNO_IPv6 }
    }
    chain input {
        type filter hook input priority 0;
        ip saddr  != @src_ipv4 tcp dport { $PORTAS_RESTRITAS } counter drop
        ip6 saddr != @src_ipv6 tcp dport { $PORTAS_RESTRITAS } counter drop

        tcp dport { $PORTAS_ABERTAS } counter accept
        
    }
    chain forward {
        type filter hook forward priority 0;
    }
    chain output {
        type filter hook output priority 0;
    }
}</pre>
<p>Habilite para o boot e reinicie o nftables </p>
<pre class="remontti-code"># systemctl enable nftables 
# systemctl restart nftables </pre>
<p>Se desejar matar todos os containes rode:</p>
<pre class="remontti-code"># cd /root/obmp-install
OBMP_DATA_ROOT=/var/openbmp docker-compose -p obmp down</pre>
<p>Para apagar tudo:</p>
<pre class="remontti-code"># rm -rf /var/openbmp</pre>
<h4>Integração com Huawei</h4>
<pre class="remontti-code">bmp
 #
 bmp-session __IP_SERVIDOR__ alias meuprovedor
 tcp connect port 5000
 #
 monitor public
  route-mode ipv4-family unicast adj-rib-in pre-policy
 #
 monitor peer __IP_SERVIDOR__
#
bgp xxxx
 ipv4-family unicast
 peer __IP_PEER_MONITORADO__ keep-all-routes
</pre>
<p><strong>Se quiser apoiar o blog e fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p><strong>FONTE:</strong> <a href="https://www.openbmp.org/" rel="noopener" target="_blank">https://www.openbmp.org/</a></p>
<p>O post <a href="https://blog.remontti.com.br/6723">BGP Monitoring Protocol (BMP) aprenda a instalar o OpenBMP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6723/feed</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>Monitorando no Zabbix as sessões BGP do RouterOS v6 (Mikrotik) via SNMP</title>
		<link>https://blog.remontti.com.br/6175</link>
					<comments>https://blog.remontti.com.br/6175#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Tue, 28 Dec 2021 20:31:48 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[routeros v6]]></category>
		<category><![CDATA[snmp]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6175</guid>

					<description><![CDATA[<p>Neste tutorial vamos aprender a monitorar o status da sessão BGP no RouterOS v6 o nosso &#8220;querido&#8221; Mikrotik, bem como receber notificações se a sessão cair ou reconectar. Como a mikrotik não disponibiliza essas&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6175">Monitorando no Zabbix as sessões BGP do RouterOS v6 (Mikrotik) via SNMP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/12/mikrotik_bgp_zabbix_snmp.png" alt="" width="750" height="375" class="alignnone size-full wp-image-6178" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/12/mikrotik_bgp_zabbix_snmp.png 750w, https://blog.remontti.com.br/wp-content/uploads/2021/12/mikrotik_bgp_zabbix_snmp-300x150.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<p>Neste tutorial vamos aprender a monitorar o status da sessão BGP no RouterOS v6 o nosso &#8220;querido&#8221; Mikrotik, bem como receber notificações se a sessão cair ou reconectar.</p>
<p>Como a mikrotik não disponibiliza essas informações via SNMP das sessões BGP, usaremos das artimanhas. Então juntamente com meu amigo <strong><a href="https://github.com/saulotarsobc" rel="noopener" target="_blank">Saulo Costa</a></strong> qual identificou que existe uma OID dos script que estão no RouterOS (<em>1.3.6.1.4.1.14988.1.1.8.1.1.2</em>) e outra (<em>1.3.6.1.4.1.14988.1.1.18.1.1.2.<strong>***</strong></em>) que é possivel executar-lo bem como ter retornos, e ai meu amigo as mentes voaram longe!</p>
<p>Acompanhe o raciocínio:</p>
<h3>1º Crie um script em seu RouterOS</h3>
<p>Darei o nome do script de <strong>bgp_snmp</strong></p>
<pre class="remontti-code">:put &quot;{\&quot;peer\&quot;: [&quot;;
:global lista [/routing bgp peer find];
:global contador 0;
:foreach i in=$lista do={
  :global disabled [/routing bgp peer get value-name=disabled number=$i];
  :global name [/routing bgp peer get value-name=name number=$i];
  :global remoteaddress [/routing bgp peer get value-name=remote-address number=$i];
  :global remoteas [/routing bgp peer get value-name=remote-as number=$i];
  :global state [/routing bgp peer get value-name=state number=$i];
    :if (state = &quot;idle&quot;) do={:set state 1;};
    :if (state = &quot;connect&quot;) do={:set state 2;}
    :if (state = &quot;active&quot;) do={:set state 3;}; 
    :if (state = &quot;opensent&quot;) do={:set state 4;}
    :if (state = &quot;openconfirm&quot;) do={:set state 5;}; 
    :if (state = &quot;established&quot;) do={:set state 6;}
    :if (disabled = true) do={:set state 1;}
  :global prefix [/routing bgp peer get value-name=prefix number=$i];
    :if (prefix &lt; 1) do={:set prefix 0;}  
  :global uptime [/routing bgp peer get value-name=uptime number=$i];
    :if (uptime &lt; 1) do={:set uptime 0;}
    :global uptimeseconds 0; :global weekend 0; 
    :global dayend 0; :global weeks 0; :global days 0;
    :if ([:find $uptime &quot;w&quot; -1] &gt; 0) do={
      :set weekend [:find $uptime &quot;w&quot; -1];
      :set weeks [:pick $uptime 0 $weekend];
      :set weekend ($weekend+1);
    };
    :if ([:find $uptime &quot;d&quot; -1] &gt; 0) do={
      :set dayend [:find $uptime &quot;d&quot; -1];
      :set days [:pick $uptime $weekend $dayend];
    };
    :global time [:pick $uptime ([:len $uptime]-8) [:len $uptime]]; 
    :global hours [:pick $time 0 2];
    :global minutes [:pick $time 3 5];
    :global seconds [:pick $time 6 8]; 
    :set uptimeseconds [($weeks*86400*7+$days*86400+$hours*3600+$minutes*60+$seconds)];

  :set contador ($contador + 1);
  :if ( $contador &lt; [:len $lista]) do={
    :put &quot;{\&quot;Id\&quot;: \&quot;$contador\&quot;,\&quot;Disabled\&quot;: \&quot;$disabled\&quot;,\&quot;Name\&quot;: \&quot;$name\&quot;,\&quot;Remote-Address\&quot;: \&quot;$remoteaddress\&quot;,\&quot;Remote-AS\&quot;: \&quot;$remoteas\&quot;,\&quot;State\&quot;: \&quot;$state\&quot;,\&quot;Prefix\&quot;: \&quot;$prefix\&quot;,\&quot;Uptime\&quot;: \&quot;$uptimeseconds\&quot;},&quot;
  } else={
    :put &quot;{\&quot;Id\&quot;: \&quot;$contador\&quot;,\&quot;Disabled\&quot;: \&quot;$disabled\&quot;,\&quot;Name\&quot;: \&quot;$name\&quot;,\&quot;Remote-Address\&quot;: \&quot;$remoteaddress\&quot;,\&quot;Remote-AS\&quot;: \&quot;$remoteas\&quot;,\&quot;State\&quot;: \&quot;$state\&quot;,\&quot;Prefix\&quot;: \&quot;$prefix\&quot;,\&quot;Uptime\&quot;: \&quot;$uptimeseconds\&quot;}&quot;
  };
  };
:put &quot;]}&quot;;</pre>
<p>A idéa é pegar as informações no scrip e apenas imprimi-las. Experimente executar o script agora!</p>
<pre class="remontti-code">[user@mikrotik] &gt; system script run bgp_snmp</pre>
<p>Você terá uma saída em JSON com as informações que iremos coletar lá no Zabbix.</p>
<pre class="remontti-code-plain">{&quot;peer&quot;: [
{&quot;Id&quot;: &quot;1&quot;,&quot;Disabled&quot;: &quot;false&quot;,&quot;Name&quot;: &quot;VS_BORDA_IPv4&quot;,&quot;Remote-Address&quot;: &quot;10.50.50.29&quot;,&quot;Remote-AS&quot;: &quot;1234&quot;,&quot;State&quot;: &quot;6&quot;,&quot;Prefix&quot;: &quot;1&quot;,&quot;Uptime&quot;: &quot;83235&quot;},
{&quot;Id&quot;: &quot;2&quot;,&quot;Disabled&quot;: &quot;false&quot;,&quot;Name&quot;: &quot;VS_BORDA_IPv6&quot;,&quot;Remote-Address&quot;: &quot;fd00:bacb:50:28::1&quot;,&quot;Remote-AS&quot;: &quot;1234&quot;,&quot;State&quot;: &quot;6&quot;,&quot;Prefix&quot;: &quot;1&quot;,&quot;Uptime&quot;: &quot;3500&quot;}
]}</pre>
<h3>2º Configure o SNMP</h3>
<p>Será necessário habiliar o <strong>write-access</strong>, então tenha certeza de ter uma community fora dos padrões <em>(ex public {mando te matar!})</em> bem como restringir o acesso apenas para IP ou Prefixos de seus servidores.<br />
Segue um exemplo:</p>
<pre class="remontti-code">/snmp community set [ find default=yes ] addresses=200.200.200.0/28 name=sUpErS3cret0 write-access=yes
/snmp set contact=&quot;noc@remontti.com.br&quot; enabled=yes location=&quot;Seu Local&quot; trap-version=2
</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_mikrotik_snmp_conf.png" data-rel="lightbox-gallery-6oiutPkr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_mikrotik_snmp_conf.png" alt="" width="1426" height="684" class="alignnone size-full wp-image-6182" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_mikrotik_snmp_conf.png 1426w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_mikrotik_snmp_conf-300x144.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_mikrotik_snmp_conf-1024x491.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_mikrotik_snmp_conf-768x368.png 768w" sizes="auto, (max-width: 1426px) 100vw, 1426px" /></a></p>
<h3>3º Teste do seu servidor Zabbix</h3>
<p>No exemplo meu router tem o IP 10.50.50.30 e minha community é sUpErS3cret0. Se você não tem as MIBS e o comando snmpwalk não "funciona" <a href="https://github.com/remontti/Zabbix-Templates/blob/main/README.md" rel="noopener" target="_blank">leia aqui</a>.</p>
<pre class="remontti-code"># snmpwalk -v2c -c sUpErS3cret0 10.50.50.30 1.3.6.1.4.1.14988.1.1.8.1.1.2</pre>
<p>Você tera um resultado com todos os seus scripts:</p>
<pre class="remontti-code-plain">SNMPv2-SMI::enterprises.14988.1.1.8.1.1.2.1 = STRING: &quot;bakup_ftp&quot;
SNMPv2-SMI::enterprises.14988.1.1.8.1.1.2.4 = STRING: &quot;script_da_morte&quot;
SNMPv2-SMI::enterprises.14988.1.1.8.1.1.2.7 = STRING: &quot;bgp_snmp&quot;</pre>
<p>O que é iportante para nós é esse numerozinho aqui: 14988.1.1.8.1.1.2.<strong>7</strong>, mais propriamente dito o final dele, neste exemplo o nº <strong>7</strong>, este é o identificador do script. Anote ele, vamos precisar ele lá no nosso template.<br />
Agora vamos rodar o script e fazer um get para ver se temos o retorno com o OID 1.3.6.1.4.1.14988.1.1.18.1.1.2.<strong>X</strong>. Onde <strong>X</strong> é o nº do identificador do script (neste ex 7).</p>
<pre class="remontti-code"># snmpget -v2c -c sUpErS3cret0 10.50.50.30 1.3.6.1.4.1.14988.1.1.18.1.1.2.7 |  sed -e &#039;s/\\//g&#039;</pre>
<p>Você irá receber uma saída com todos os peers do seu router:</p>
<pre class="remontti-code-plain">SNMPv2-SMI::enterprises.14988.1.1.18.1.1.2.8 = STRING: &quot;{&quot;peer&quot;: [
{&quot;Id&quot;: &quot;1&quot;,&quot;Disabled&quot;: &quot;false&quot;,&quot;Name&quot;: &quot;VS_BORDA_IPv4&quot;,&quot;Remote-Address&quot;: &quot;10.50.50.29&quot;,&quot;Remote-AS&quot;: &quot;1234&quot;,&quot;State&quot;: &quot;6&quot;,&quot;Prefix&quot;: &quot;1&quot;,&quot;Uptime&quot;: &quot;84508&quot;},
{&quot;Id&quot;: &quot;2&quot;,&quot;Disabled&quot;: &quot;false&quot;,&quot;Name&quot;: &quot;VS_BORDA_IPv6&quot;,&quot;Remote-Address&quot;: &quot;fd00:bacb:50:28::1&quot;,&quot;Remote-AS&quot;: &quot;1234&quot;,&quot;State&quot;: &quot;6&quot;,&quot;Prefix&quot;: &quot;1&quot;,&quot;Uptime&quot;: &quot;4773&quot;}
]}&quot;</pre>
<h3>4º Importando o template para o Zabbix</h3>
<p>Faça download do template <strong><a href="https://raw.githubusercontent.com/remontti/Zabbix-Templates/main/Mikrotik/BGP_SNMP_SCRIPT/RR%20Mikrotik%20-%20BGP%20-%20SNMP%20Script.xml" rel="noopener" target="_blank">RR Mikrotik - BGP - SNMP Script.xml</a></strong> e importe o mesmo.</p>
<h3>5º Crie/Edite um host usando o template</h3>
<p>Informe o Nome, grupo bem como IP com agente SNMP.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_1.png" data-rel="lightbox-gallery-6oiutPkr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_1.png" alt="" width="1274" height="709" class="alignnone size-full wp-image-6188" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_1.png 1274w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_1-300x167.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_1-1024x570.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_1-768x427.png 768w" sizes="auto, (max-width: 1274px) 100vw, 1274px" /></a><br />
Selecione o template<strong> RR Mikrotik - BGP - SNMP Script</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_2.png" data-rel="lightbox-gallery-6oiutPkr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_2.png" alt="" width="1001" height="261" class="alignnone size-full wp-image-6187" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_2.png 1001w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_2-300x78.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_2-768x200.png 768w" sizes="auto, (max-width: 1001px) 100vw, 1001px" /></a><br />
Lembra do identificador, precisamos informa-lo aqui.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_3.png" data-rel="lightbox-gallery-6oiutPkr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_3.png" alt="" width="1195" height="390" class="alignnone size-full wp-image-6186" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_3.png 1195w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_3-300x98.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_3-1024x334.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_3-768x251.png 768w" sizes="auto, (max-width: 1195px) 100vw, 1195px" /></a></p>
<p>Acesse os dados recentes para verificar se os itens foram criados (lembrado que ele é executado a cada 5min) então tenha paciência de aguardar 10min ou execute manualmente.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_4.png" data-rel="lightbox-gallery-6oiutPkr" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_4.png" alt="" width="1617" height="808" class="alignnone size-full wp-image-6191" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_4.png 1617w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_4-300x150.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_4-1024x512.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_4-768x384.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/12/bgp_snmp_routeros_4-1536x768.png 1536w" sizes="auto, (max-width: 1617px) 100vw, 1617px" /></a></p>
<p>Bem mais simplique que o metodo do outro <a href="https://blog.remontti.com.br/6075" rel="noopener" target="_blank">tutorial com script python</a>.</p>
<p>Espero que tenha gostado! E mais uma vez deixo meu agradecimento ao parceio Saulo. Se fizer algo legal não deixe de compartilhar! Com isso você pode criar até mesmo outros templates, para coletar outras informações. Isso é o legal de compartilhar!</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a><br />
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>O post <a href="https://blog.remontti.com.br/6175">Monitorando no Zabbix as sessões BGP do RouterOS v6 (Mikrotik) via SNMP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6175/feed</wfw:commentRss>
			<slash:comments>30</slash:comments>
		
		
			</item>
		<item>
		<title>Monitorando no Zabbix as sessões BGP do RouterOS/Mikrotik (Script Python)</title>
		<link>https://blog.remontti.com.br/6075</link>
					<comments>https://blog.remontti.com.br/6075#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Wed, 17 Nov 2021 00:03:50 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[grafana]]></category>
		<category><![CDATA[monitoramenteo]]></category>
		<category><![CDATA[peer]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[zabbix]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=6075</guid>

					<description><![CDATA[<p>Neste tutorial vamos aprender a monitorar o status da sessão BGP no RouterOS/Mikrotik, bem como receber notificações se a sessão cair ou reconectar. PARA PARA PARA&#8230;. Quando escrevi este tutorial não existia esse tutorial&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/6075">Monitorando no Zabbix as sessões BGP do RouterOS/Mikrotik (Script Python)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/mikrotik_bgp_zabbix.png" alt="" width="750" height="375" class="alignnone size-full wp-image-6091" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/mikrotik_bgp_zabbix.png 750w, https://blog.remontti.com.br/wp-content/uploads/2021/11/mikrotik_bgp_zabbix-300x150.png 300w" sizes="auto, (max-width: 750px) 100vw, 750px" /></p>
<p>Neste tutorial vamos aprender a monitorar o status da sessão BGP no RouterOS/Mikrotik, bem como receber notificações se a sessão cair ou reconectar.</p>
<p><font color="red">PARA PARA PARA&#8230;.</font> Quando escrevi este tutorial não existia esse <a href="https://blog.remontti.com.br/6175" rel="noopener" target="_blank">tutorial aqui</a>, recomendo você lêr ele, pois descobrimos outra forma mais simples.</p>
<p>Como a mikrotik não disponibiliza essas informações via SNMP (até o momento, esperaça de pobre é a ultima que morre) teremos que usar das artimanhas, então nosso amigo <a target="_blank" href="https://github.com/gtkpad" rel="noopener">Gabriel Vargas Padilha</a> fez um script em python <a target="_blank" href="https://github.com/gtkpad/mikrotikBgpZabbixScript" rel="noopener">mikrotikBgpZabbixScript</b></a> para buscar as informações, eu montei a parte do <a target="_blank" href="https://github.com/remontti/Zabbix-Templates/edit/main/Mikrotik/BGP_ROUTEROS/" rel="noopener">Zabbix</b></a>. </p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/dados.png" alt="" width="1305" height="272" class="alignnone size-full wp-image-6077" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/dados.png 1305w, https://blog.remontti.com.br/wp-content/uploads/2021/11/dados-300x63.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/dados-1024x213.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/dados-768x160.png 768w" sizes="auto, (max-width: 1305px) 100vw, 1305px" /></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/graficos_bgp.png" alt="" width="1666" height="724" class="alignnone size-full wp-image-6078" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/graficos_bgp.png 1666w, https://blog.remontti.com.br/wp-content/uploads/2021/11/graficos_bgp-300x130.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/graficos_bgp-1024x445.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/graficos_bgp-768x334.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/11/graficos_bgp-1536x668.png 1536w" sizes="auto, (max-width: 1666px) 100vw, 1666px" /></p>
<p>Se aida não tem o Zabbix instalado siga: <a target="_blank" href="https://blog.remontti.com.br/5517" rel="noopener">Instalação do Zabbix 5 LTS + Grafana + NGINX + PostgreSQL + Telegram</a></p>
<h1>Configuração</h2>
<p><strong>Requisitos: </strong><br />
&#8211; RouterOS 6.48 ou maior<br />
&#8211; Zabbix Server 5.x<br />
&#8211; Distribuição: Debian 10/11</p>
<h4>Configuração no RouterOS/Mikrotik</h4>
<p>Será necessário criar um usuário com permissões somente de leitura bem como restringindo o acesso para somente o IP do Zabbix, para fazer a conexão para coletas de dados.</p>
<pre class="remontti-code">/user add group=read address=IP_ZABBIX name=SEU_USUARIO password=SUA_SENHA</pre>
<p>Se desejar desativar as infomação de login. Isso fará com que você não veja mais nenhum login feito no router.</p>
<pre class="remontti-code">/system logging set 0 topics=info,!account</pre>
<p>OBS: Não use espaço e caracter especial nos nomes dos Peer&#8217;s e tenha nomes diferentes para cada Peer.</p>
<h4>Zabbix Serve/Linux</h4>
<p>Pacotes necessários:</p>
<pre class="remontti-code-plain"># apt install python3-pip
# pip3 install librouteros</pre>
<p>Acesse o diretório externalscripts e faça download.</p>
<pre class="remontti-code"># cd /usr/lib/zabbix/externalscripts/</pre>
<p>Faça download dos scripts </p>
<pre class="remontti-code"># apt install wget 
# wget https://raw.githubusercontent.com/gtkpad/mikrotikBgpZabbixScript/main/main.py -O mikrotikBgp.py
# wget https://raw.githubusercontent.com/gtkpad/mikrotikBgpZabbixScript/main/Mikrotik.py</pre>
<p>De permissão para os arquivos para execução e altere o dono para o usuário zabbix.</p>
<pre class="remontti-code"># touch mikrotikBgp.log 
# chmod +x mikrotikBgp.py 
# chown zabbix. mikrotikBgp.py Mikrotik.py mikrotikBgp.log 
# systemctl  restart zabbix-server</pre>
<p>Informações de uso do script:</p>
<pre class="remontti-code"># ./mikrotikBgp.py &lt;IP&gt; &lt;USER&gt; &lt;PASS&gt; &lt;API_PORT&gt; &lt;METHOD&gt;
# ./mikrotikBgp.py &lt;IP&gt; &lt;USER&gt; &lt;PASS&gt; &lt;API_PORT&gt; &lt;METHOD&gt; &lt;PEER_NAME&gt;
# ./mikrotikBgp.py &lt;IP&gt; &lt;USER&gt; &lt;PASS&gt; &lt;API_PORT&gt; &lt;METHOD&gt; &lt;PEER_NAME&gt; &lt;PEER_INFO&gt;</pre>
<p><strong>METHOD&#8217;s</strong><br />
<strong>getPeer</strong> &#8211; Retorna todos os peerings em formato json.<br />
<strong>getPeerInfo</strong> &#8211; Retorna o valor especifico de um peer.</p>
<p>Exemplos de uso:</p>
<pre class="remontti-code"># cd /usr/lib/zabbix/externalscripts
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeers</pre>
<pre class="remontti-code-plain">{
   &quot;data&quot;:[
      {
         &quot;{#PEER_NAME}&quot;:&quot;VS_BORDA_IPV4&quot;,
         &quot;{#PEER_AS}&quot;:12345,
         &quot;{#PEER_ADDR}&quot;:&quot;10.20.30.5&quot;
      },
      {
         &quot;{#PEER_NAME}&quot;:&quot;VS_BORDA_IPV6&quot;,
         &quot;{#PEER_AS}&quot;:12345,
         &quot;{#PEER_ADDR}&quot;:&quot;fd00:bacb:20:30::1&quot;
      },
      {
         &quot;{#PEER_NAME}&quot;:&quot;NAT_PPPOES_IPV4&quot;,
         &quot;{#PEER_AS}&quot;:65530,
         &quot;{#PEER_ADDR}&quot;:&quot;10.20.30.14&quot;
      }
   ]
}</pre>
<pre class="remontti-code">
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 name
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 instance
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 remote-address
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 remote-as
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 uptime
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 established
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 prefix-count
# ./mikrotikBgp.py 10.20.30.40 usuario senha 8728 getPeerInfo VS_BORDA_IPV4 advertisements</pre>
<p>Agora acesse seu Zabbix, e importe o Template:<br />
Faça download do template <a href="https://raw.githubusercontent.com/remontti/Zabbix-Templates/main/Mikrotik/BGP_ROUTEROS/RR%20Mikrotik%20-%20BGP%20-%20Script%20Python.xml" rel="noopener" target="_blank"><strong>RR Mikrotik &#8211; BGP &#8211; Script Python.xml</strong></a> e importe.</p>
<p>Crie um novo host, ou inclua o agent.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb1.png" alt="" width="1283" height="673" class="alignnone size-full wp-image-6081" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb1.png 1283w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb1-300x157.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb1-1024x537.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb1-768x403.png 768w" sizes="auto, (max-width: 1283px) 100vw, 1283px" /></p>
<p>Selecione o Template RR Mikrotik &#8211; BGP &#8211; Script. Você encontra <a href="https://github.com/remontti/Zabbix-Templates/tree/main/Mikrotik" rel="noopener" target="_blank">outros templates aqui</a> também.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb2.png" alt="" width="1016" height="237" class="alignnone size-full wp-image-6082" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb2.png 1016w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb2-300x70.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb2-768x179.png 768w" sizes="auto, (max-width: 1016px) 100vw, 1016px" /></p>
<p>Por fim, herde os macros do template, e clique em modificar para informar os seus dados em seguida clique em salvar<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb3.png" alt="" width="1200" height="596" class="alignnone size-full wp-image-6083" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb3.png 1200w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb3-300x149.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb3-1024x509.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb3-768x381.png 768w" sizes="auto, (max-width: 1200px) 100vw, 1200px" /></p>
<p>OBS: A descoberta esta ajustada para 6h, se desejar que seja mais rápido execute manualmente, para realizar esse procedimento faça:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb4.png" alt="" width="1618" height="484" class="alignnone size-full wp-image-6085" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb4.png 1618w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb4-300x90.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb4-1024x306.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb4-768x230.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb4-1536x459.png 1536w" sizes="auto, (max-width: 1618px) 100vw, 1618px" /></p>
<h4>Grafana Modelo</h4>
<p>Apenas uma idéia para você montar uma dash bacaninha:<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb5.png" alt="" width="1779" height="288" class="alignnone size-full wp-image-6086" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/zb5.png 1779w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb5-300x49.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb5-1024x166.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb5-768x124.png 768w, https://blog.remontti.com.br/wp-content/uploads/2021/11/zb5-1536x249.png 1536w" sizes="auto, (max-width: 1779px) 100vw, 1779px" /></p>
<p>Vou deixar aqui <a href="https://raw.githubusercontent.com/remontti/Zabbix-Templates/main/Mikrotik/BGP_ROUTEROS/Grafana_Modelo.json">dash Modelo</a><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2021/11/grafana.png" alt="" width="1090" height="218" class="alignnone size-full wp-image-6087" srcset="https://blog.remontti.com.br/wp-content/uploads/2021/11/grafana.png 1090w, https://blog.remontti.com.br/wp-content/uploads/2021/11/grafana-300x60.png 300w, https://blog.remontti.com.br/wp-content/uploads/2021/11/grafana-1024x205.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2021/11/grafana-768x154.png 768w" sizes="auto, (max-width: 1090px) 100vw, 1090px" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a><br />
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>O post <a href="https://blog.remontti.com.br/6075">Monitorando no Zabbix as sessões BGP do RouterOS/Mikrotik (Script Python)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/6075/feed</wfw:commentRss>
			<slash:comments>15</slash:comments>
		
		
			</item>
		<item>
		<title>Instalação do FRRouting (FRR) &#8211; Roteamento dinâmico no seu linux +Bônus iBGP</title>
		<link>https://blog.remontti.com.br/4771</link>
					<comments>https://blog.remontti.com.br/4771#respond</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sun, 20 Sep 2020 18:20:40 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[babel]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[frr]]></category>
		<category><![CDATA[frrouting]]></category>
		<category><![CDATA[ipv4]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[ospf]]></category>
		<category><![CDATA[ospf6]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[routing]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4771</guid>

					<description><![CDATA[<p>FRRouting (FRR) é um conjunto de protocolos de roteamento IP para plataformas Linux e Unix que inclui daemons de protocolo para BGP, IS-IS, LDP, OSPF, PIM e RIP. A integração perfeita do FRR com&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4771">Instalação do FRRouting (FRR) &#8211; Roteamento dinâmico no seu linux +Bônus iBGP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><a href="http://frrouting.org/" target="_blank" rel="noopener noreferrer">FRRouting</a> (FRR) é um conjunto de protocolos de roteamento IP para plataformas Linux e Unix que inclui daemons de protocolo para BGP, IS-IS, LDP, OSPF, PIM e RIP.</p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/09/frr-remontti.png" alt="" width="700" height="274" class="alignnone size-full wp-image-5085" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/09/frr-remontti.png 700w, https://blog.remontti.com.br/wp-content/uploads/2020/09/frr-remontti-300x117.png 300w" sizes="auto, (max-width: 700px) 100vw, 700px" /></p>
<p>A integração perfeita do FRR com as pilhas de rede IP Linux/Unix nativas o torna aplicável a uma ampla variedade de casos de uso.</p>
<p>FRR tem suas raízes no projeto Quagga (Fork do Quagga). Na verdade, ele foi iniciado por muitos desenvolvedores de Quagga de longa data que combinaram seus esforços para melhorar a base bem estabelecida do Quagga para criar a melhor pilha de protocolo de roteamento disponível.</p>
<p>Uma ótima apresentação foi feita pelo <a href="https://www.linkedin.com/in/jrcorazza/" target="_blank" rel="noopener noreferrer">Junior Corazza</a>. no GTER 46.<br />
<strong><a href="https://www.youtube.com/watch?v=4-77r2PGKB4" target="_blank" rel="noopener noreferrer">BSDRP &#8211; Uma opção de softrouter com FRR</a></strong><br />
<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/4-77r2PGKB4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="allowfullscreen"></iframe><br />
Apresentação: <a href="ftp://ftp.registro.br/pub/gter/gter46/11-BSDRP.pdf" target="_blank" rel="noopener noreferrer">ftp://ftp.registro.br/pub/gter/gter46/11-BSDRP.pdf</a></p>
<p><strong>Requesitos</strong>:<br />
<a href="https://blog.remontti.com.br/2966" target="_blank" rel="noopener noreferrer">Debian 10 Stretch – Instalação Limpa</a><br />
<a href="https://blog.remontti.com.br/5792" target="_blank" rel="noopener noreferrer">Debian 11 Bullseye – Instalação Limpa</a></p>
<p>Antes de começar não esqueça de virar root da forma correta e atualizar os pacotes, e instalar alguns pacotes que serão necessários.</p>
<pre class="remontti-code"># su -
# apt update
# apt upgrade
# apt install curl apt-transport-https gnupg2 lsb-release tree net-tools</pre>
<h4>Instalação do Free Range Routing</h4>
<p>Pacotes presente do FRR no repositório do Debian 10 estão na versão 6.x.x, e Debian 11 na 7.5.x vou ir além e usar o repositório mais atualizado do FRR disponíveis em <a href="https://deb.frrouting.org" target="_blank" rel="noopener noreferrer">https://deb.frrouting.org</a>, mas fica a seu critério se desejar usar o repositório &#8220;default&#8221;.</p>
<p>Para usar pacotes do <a href="https://deb.frrouting.org/" rel="noopener" target="_blank">repositório FFR</a> faça:</p>
<pre class="remontti-code"># curl -s https://deb.frrouting.org/frr/keys.asc | apt-key add -</pre>
<p>Iremos usar a versão estável oficial mais recente &#8220;<strong>frr-stable</strong>&#8221; na variável &#8220;FRRVER&#8221;, mas é possíveis para também: <strong>frr-6 frr-7 frr-8 frr-stable</strong>.</p>
<pre class="remontti-code"># FRRVER=&quot;frr-stable&quot;
# echo deb https://deb.frrouting.org/frr $(lsb_release -s -c) $FRRVER | tee -a /etc/apt/sources.list.d/frr.list
# apt update</pre>
<p>Podemos entrar agora em nosso respositório varios pacores FRR:</p>
<pre class="remontti-code"># apt search frr</pre>
<p><strong>frr</strong> &#8211; FRRouting suite<br />
<strong>frr-doc</strong> &#8211; Manual<br />
<strong>frr-rpki-rtrlib</strong> &#8211; Suporte BGP RPKI<br />
<strong>frr-rpki-rtrlib-dbgsym</strong> &#8211; Debug do pacote frr-rpki-rtrlib<br />
<strong>frr-snmp </strong>&#8211; Suporte SNMP<br />
<strong>frr-snmp-dbgsym</strong> &#8211; Debug do pacote frr-snmp<br />
<strong>frr-pythontools</strong> &#8211; Python tools</p>
<p>Instalarei alguns mas fique a seu critério/necessidade.</p>
<pre class="remontti-code"># apt install frr frr-doc frr-pythontools frr-rpki-rtrlib frr-snmp</pre>
<p>Após instalação o diretorio /etc/ffr/ será criado juntamente com seus arquivos de configuração. Arquitetura do diretório:</p>
<pre class="remontti-code"># tree /etc/frr/</pre>
<pre class="remontti-code-plain">/etc/frr/
├── daemons
├── frr.conf
├── support_bundle_commands.conf
└── vtysh.conf</pre>
<p>Como de costume vamos fazer um backup dos arquivos originais caso cometermos alguma &#8220;cagada&#8221; <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f600.png" alt="😀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code"># mkdir /etc/frr/backups
# cp /etc/frr/daemons /etc/frr/backups/
# cp /etc/frr/frr.conf /etc/frr/backups/
# cp /etc/frr/vtysh.conf /etc/frr/backups/
# cp /etc/frr/support_bundle_commands.conf /etc/frr/backups/</pre>
<p>Antes de mais nada vamos entender um pouco como a aplicação funciona.</p>
<p>No FRR o roteamento é diferente de um roteamento tradicional, ele tem um conjunto de daemons que trabalham juntos para construir a tabela de roteamento.</p>
<p>Cada protocolo principal é implementado em seu próprio daemon, e esses daemons se comunicam com um daemon intermediário (zebra), que é responsável por coordenar as decisões de roteamento.</p>
<p>Esta arquitetura permite alta resiliência, uma vez que um erro, travamento ou exploração em um daemon de protocolo geralmente não afetará os outros. Também é flexível e extensível, uma vez que a modularidade torna mais fácil implementar novos protocolos e vinculá-los ao conjunto. Além disso, cada daemon implementa um sistema de plug-in permitindo que novas funcionalidades sejam carregadas em tempo de execução.</p>
<p>Ilustração da arquitetura em grande escala:</p>
<pre class="remontti-code-plain">+----+  +----+  +-----+  +----+  +----+  +----+  +-----+
|bgpd|  |ripd|  |ospfd|  |ldpd|  |pbrd|  |pimd|  |.....|
+----+  +----+  +-----+  +----+  +----+  +----+  +-----+
     |       |        |       |       |       |        |
+----v-------v--------v-------v-------v-------v--------v
|                                                      |
|                         Zebra                        |
|                                                      |
+------------------------------------------------------+
       |                    |                   |
       |                    |                   |
+------v------+   +---------v--------+   +------v------+
|             |   |                  |   |             |
| *NIX Kernel |   | Remote dataplane |   | ........... |
|             |   |                  |   |             |
+-------------+   +------------------+   +-------------+</pre>
<p>Todos os daemons FRR podem ser gerenciados por meio de um único shell de interface de usuário integrado chamado vtysh. O vtysh se conecta a cada daemon através de um soquete de domínio UNIX e então funciona como um proxy para a entrada do usuário. Além de um front-end unificado, o vtysh também oferece a capacidade de configurar todos os daemons usando um único arquivo de configuração por meio do modo de configuração integrado. Isso evita a sobrecarga de manter um arquivo de configuração separado para cada daemon.</p>
<p>Você encontra mais informações em: <a href="http://docs.frrouting.org/en/latest/overview.html" target="_blank" rel="noopener noreferrer">http://docs.frrouting.org/en/latest/overview.html</a></p>
<h4>Módulos do kernel</h4>
<p>Na <a href="http://docs.frrouting.org/en/latest/installation.html#linux-notes" target="_blank" rel="noopener noreferrer">documentação oficial de instalação</a> é recomendado fazer alguns ajustes nas configurações de sysctl do Linux, caso para sua realidade não seja necessário pule esta parte.</p>
<p>Os itens a seguir são definidos para habilitar o encaminhamento de IP no kernel:</p>
<p><strong>Encaminhamento IPv4 e IPv6</strong></p>
<pre class="remontti-code"># vim /etc/sysctl.conf</pre>
<p>Descomente:</p>
<pre class="remontti-code">net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1</pre>
<p><strong>Encaminhamento MPLS</strong> <em>(Ative se achar necessário)</em><br />
O suporte MPLS básico foi introduzido no kernel na versão 4.1 e recursos adicionais foram introduzidos na 4.3 e 4.5.</p>
<pre class="remontti-code"># vim /etc/modules-load.d/modules.conf</pre>
<p>Adicione</p>
<pre class="remontti-code"># Load MPLS Kernel Modules
mpls_router
mpls_iptunnel</pre>
<p>Veja quais o(s) nome(s) de sua(s) interface(s) e adicione:</p>
<pre class="remontti-code"># ip -br link |grep -v lo |awk &#039;{print $1}&#039;
# vim /etc/sysctl.conf</pre>
<p>Adicione ao final do arquivo (Anteção para o nome das interfaces: net.mpls.conf.[INTERFACE].input)</p>
<pre class="remontti-code"># Habilite o processamento de rótulo MPLS em todas as interfaces
net.mpls.conf.enp0s3.input=1
net.mpls.platform_labels=100000</pre>
<p><strong>Encaminhamento VRF </strong> (Ative se achar necessário)<br />
O seguinte impacta como os soquetes BGP TCP são gerenciados em VRFs:</p>
<pre class="remontti-code">net.ipv4.tcp_l3mdev_accept=0</pre>
<p>Com essa configuração, um soquete BGP TCP é aberto por VRF. Essa configuração garante que outros serviços TCP, como SSH, fornecidos para fins não VRF, sejam bloqueados nas interfaces Linux associadas a VRF.</p>
<pre class="remontti-code">net.ipv4.tcp_l3mdev_accept=1</pre>
<p>Reinicie seu servidor para carregar as novas configurações de kernel.</p>
<pre class="remontti-code"># reboot</pre>
<p>Acesse novamente seu servidor, não esqueça de virar root com o comando &#8220;su -&#8221;</p>
<p>Após instalado o FRR não fará nada. Isso ocorre porque os daemons devem ser ativados e até o momento não temos nenhum, para ativar edite o arquivo /etc/frr/daemons e determine quais daemons serão ativados colocando um <strong>yes</strong> no daemon desejado. No meu exemplo vou ativar o bgpd qual deixarei uma &#8220;brincadeira&#8221; de exemplo ao final.</p>
<pre class="remontti-code"># vim /etc/frr/daemons</pre>
<pre class="remontti-code-plain"># Para habilitar um daemon específico, simplesmente altere o &#039;no&#039; correspondente para &#039;yes&#039;, e será necessário reiniciar o serviço.
bgpd=yes 	# BGP
ospfd=no 	# OSPFD (OSPFv2 - IPv4)
ospf6d=no 	# OSPF6D (OSPFv3 - IPv6)
ripd=no 	# RIPD (RIPv2 - IPv4)
ripngd=no 	# RIPNGD (RIPv3 - IPv6)
isisd=no 	# ISISD (IS-IS - Protocolo igp Cisco)
pimd=no 	# PIMD (PIM - Roteamento Multicast)
ldpd=no 	# LDPD (LDP - Labels MPLS para rotas igp)
nhrpd=no 	# NHRPD (NHRP - roteamento entre tuneis)
eigrpd=no 	# EIGRPD (EIGRP - protocolo igp Cisco)
babeld=no 	# BABELD (BABEL - protocolo igp dual-stack)
sharpd=no 	# SHARPD (SHARP - protocolo exemplo zclient)
pbrd=no 	# PBRD (PBR - gestao de regras para Police Based Routing)
bfdd=no 	# BFDD (BFD - protocolo de adjacencia instantanea)
fabricd=no 	# FABRICD (OpenFabric)
vrrpd=no 	# VRRPD (Virtual Router Redundancy Protocol Deamon)

# Como o nome diz, isso faz com que o VTYSH aplique a configuração ao iniciar aos daemons. 
vtysh_enable=yes 

# O próximo conjunto de linhas controla quais opções são passadas aos daemons quando iniciados. 
zebra_options=&quot;  -A 127.0.0.1 -s 90000000&quot;
bgpd_options=&quot;   -A 127.0.0.1&quot;
ospfd_options=&quot;  -A 127.0.0.1&quot;
ospf6d_options=&quot; -A ::1&quot;
ripd_options=&quot;   -A 127.0.0.1&quot;
ripngd_options=&quot; -A ::1&quot;
isisd_options=&quot;  -A 127.0.0.1&quot;
pimd_options=&quot;   -A 127.0.0.1&quot;
ldpd_options=&quot;   -A 127.0.0.1&quot;
nhrpd_options=&quot;  -A 127.0.0.1&quot;
eigrpd_options=&quot; -A 127.0.0.1&quot;
babeld_options=&quot; -A 127.0.0.1&quot;
sharpd_options=&quot; -A 127.0.0.1&quot;
pbrd_options=&quot;   -A 127.0.0.1&quot;
staticd_options=&quot;-A 127.0.0.1&quot;
bfdd_options=&quot;   -A 127.0.0.1&quot;
fabricd_options=&quot;-A 127.0.0.1&quot;
vrrpd_options=&quot;  -A 127.0.0.1&quot;</pre>
<p>Como este tutorial é um laboratório irei ativar os daemons <strong>OSPFv2, OSPFv3, BABEL e BGP</strong>, (em produção ative somente o necessário) pois em seguida teremos alguns exemplos contribuídos pelo <a href="http://www.patrickbrandao.com/" target="_blank" rel="noopener noreferrer">Patrick Brandão</a>.</p>
<p>Alterações feitas no /etc/frr/daemons vamos reiniciar o FRR</p>
<pre class="remontti-code"># systemctl restart frr</pre>
<p>Verifique se o mesmo está ok</p>
<pre class="remontti-code"># systemctl status frr</pre>
<pre class="remontti-code-plain">● frr.service - FRRouting
   Loaded: loaded (/lib/systemd/system/frr.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2020-08-11 14:00:29 -03; 41s ago
     Docs: https://frrouting.readthedocs.io/en/latest/setup.html
  Process: 665 ExecStart=/usr/lib/frr/frrinit.sh start (code=exited, status=0/SUCCESS)
   Status: &quot;FRR Operational&quot;
    Tasks: 18 (limit: 1150)
   Memory: 24.2M
   CGroup: /system.slice/frr.service
           ├─674 /usr/lib/frr/watchfrr -d -F traditional zebra bgpd ospfd ospf6d babeld staticd
           ├─699 /usr/lib/frr/zebra -d -F traditional -A 127.0.0.1 -s 90000000
           ├─704 /usr/lib/frr/bgpd -d -F traditional -A 127.0.0.1
           ├─712 /usr/lib/frr/ospfd -d -F traditional -A 127.0.0.1
           ├─716 /usr/lib/frr/ospf6d -d -F traditional -A ::1
           ├─720 /usr/lib/frr/babeld -d -F traditional -A 127.0.0.1
           └─724 /usr/lib/frr/staticd -d -F traditional -A 127.0.0.1

ago 11 14:00:29 frr zebra[699]: client 47 says hello and bids fair to announce only static routes vrf=0
set 23 15:44:11 accel watchfrr[1220]: zebra state -&gt; up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: bgpd state -&gt; up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: ospfd state -&gt; up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: ospf6d state -&gt; up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: staticd state -&gt; up : connect succeeded
set 23 15:44:11 accel watchfrr[1220]: all daemons up, doing startup-complete notify
ago 11 14:00:29 frr frrinit.sh[665]: Started watchfrr.
ago 11 14:00:29 frr systemd[1]: Started FRRouting.</pre>
<p>Pode também conferir se o serviço de cada daemons ativos foi iniciado:</p>
<pre class="remontti-code"># netstat -putan</pre>
<pre class="remontti-code-plain">Proto Recv-Q Send-Q Endereço Local          Endereço Remoto         Estado      PID/Program name    
tcp        0      0 127.0.0.1:2601          0.0.0.0:*               OUÇA       699/zebra           
tcp        0      0 127.0.0.1:2604          0.0.0.0:*               OUÇA       712/ospfd           
tcp        0      0 127.0.0.1:2605          0.0.0.0:*               OUÇA       704/bgpd            
tcp        0      0 127.0.0.1:2616          0.0.0.0:*               OUÇA       724/staticd         
tcp6       0      0 ::1:2606                :::*                    OUÇA       716/ospf6d</pre>
<p>Lista completa das portas:</p>
<pre class="remontti-code-plain">zebrasrv      2600/tcp    # zebra service
zebra         2601/tcp    # zebra vty
ripd          2602/tcp    # RIPd vty
ripngd        2603/tcp    # RIPngd vty
ospfd         2604/tcp    # OSPFd vty
bgpd          2605/tcp    # BGPd vty
ospf6d        2606/tcp    # OSPF6d vty
ospfapi       2607/tcp    # ospfapi
isisd         2608/tcp    # ISISd vty
babeld        2609/tcp    # BABELd vty
nhrpd         2610/tcp    # nhrpd vty
pimd          2611/tcp    # PIMd vty
ldpd          2612/tcp    # LDPd vty
eigprd        2613/tcp    # EIGRPd vty
bfdd          2617/tcp    # bfdd vty
fabricd       2618/tcp    # fabricd vty
vrrpd         2619/tcp    # vrrpd vty</pre>
<h4>Entrado no Shell VTY</h4>
<p>Vtysh fornece um frontend combinado para todos os daemons FRR em uma única sessão combinada.</p>
<pre class="remontti-code"># vtysh</pre>
<pre class="remontti-code-plain">Hello, this is FRRouting (version 7.3.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

frr# show running-config
Building configuration...

Current configuration:
!
frr version 7.3.1
frr defaults traditional
hostname frr
log syslog informational
service integrated-vtysh-config
!
line vty
!
end
frr# exit</pre>
<p>vtysh tem um arquivo de configuração /etc/frr/vtysh.conf que contém opções que controlam o comportamento da autenticação. Este arquivo também não será escrito por comandos de salvamento de configuração, ele deve ser atualizado manualmente.</p>
<p>Isso também significa que os comandos hostname e (que têm efeito para vtysh) precisam ser atualizados manualmente no vtysh.conf</p>
<p>Todas as configurações salvas (<strong>write</strong>) no terminal do vtysh são escritas no arquivo <strong>frr.conf</strong>. </p>
<p>A documentação também ressalta que é possível salvar os arquivos separados por daemons, para alterar esse comportamento é precisamos editar o /etc/frr/vtysh.conf <em>(Fica a seu critério também, eu particularmente não altero)</em></p>
<pre class="remontti-code"># vim /etc/frr/vtysh.conf</pre>
<p>Estão o que isso faz?<br />
<strong>service integrated-vtysh-config </strong><br />
&#8211; O vtysh sempre salvará no frr.conf.</p>
<p><strong>no service integrated-vtysh-config </strong><br />
&#8211; vtysh nunca vai salvar no frr.conf, em vez disso, ele pedirá aos daemons que escrevam/crie seus arquivos de configuração individuais.</p>
<p>Se fizer a altração reinicie a aplicação</p>
<pre class="remontti-code"># systemctl restart frr</pre>
<p>Mais sobre vtysh: <a href="http://docs.frrouting.org/en/latest/vtysh.html" target="_blank" rel="noopener noreferrer">http://docs.frrouting.org/en/latest/vtysh.html</a></p>
<p>Acessamos o terminal do vtysh e usamos o comando write (salvar).</p>
<pre class="remontti-code"># vtysh</pre>
<pre class="remontti-code-plain">Hello, this is FRRouting (version 7.3.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

frr# write 
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Warning: /etc/frr/frr.conf.sav unlink failed
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
frr# exit</pre>
<p>Na próxima vez que salvar (write) um &#8220;____.<strong>conf.sav</strong>&#8221; será criado também preservando a configuração posterior.</p>
<p>Você também pode acessar o terminal vtysh (zebra) por telnet, lembra que vimos as porta que cada serviço estava rodando, logo o zebra roda na porta 2601(tcp), porém responde apenas localmente (localhost/127.0.0.1) caso você deseje abrir esse acesso externamente (restringi-lo por firewall o acesso a determinados IPs é uma boa prática) faça e alteração no arquivo daemons.</p>
<pre class="remontti-code"># vim /etc/frr/daemons</pre>
<p>Encontre:</p>
<pre class="remontti-code">zebra_options=&quot;  -A 127.0.0.1 -s 90000000&quot;</pre>
<p>E altere por:</p>
<pre class="remontti-code">zebra_options=&quot;  -A 0.0.0.0 -s 90000000&quot;</pre>
<p>Se você desejar alterar esta porta basta incluir &#8220;-P porta&#8221;</p>
<pre class="remontti-code">zebra_options=&quot;  -A 0.0.0.0 -s 90000000 -P 40023&quot;</pre>
<p>Salve e reinicie o FRR</p>
<pre class="remontti-code"># systemctl restart frr</pre>
<p>Porém se você tentar acessar mesmo que localmente não será possível, pois uma senha não foi definida.</p>
<pre class="remontti-code-plain"># telnet localhost 40023
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is &#039;^]&#039;.
Vty password is not set.
Connection closed by foreign host.</pre>
<p>Para configura as senha de login e de enable:</p>
<pre class="remontti-code"># vtysh</pre>
<pre class="remontti-code"># configure terminal 
# password senha_de_login
# enable password senha_para_enable
# service password-encryption
# line vty 
# login 
# end 
# write
# exit</pre>
<p>Ex.:</p>
<pre class="remontti-code-plain">frr# configure terminal 
frr(config)# password remontti
frr(config)# enable password remontti
frr(config)# service password-encryption
frr(config)# line vty 
frr(config-line)# login 
frr(config-line)# end 
frr# write 
Note: this version of vtysh never writes vtysh.conf
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
frr# exit</pre>
<p>Faça um teste localmente ou externamente caso tenha liberado o acesso:</p>
<pre class="remontti-code"># telnet localhost 40023</pre>
<pre class="remontti-code-plain">Trying 127.0.0.1...
Connected to localhost.
Escape character is &#039;^]&#039;.

Hello, this is FRRouting (version 7.3.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

User Access Verification

Password: 
frr&gt; enable 
Password: 
frr# exit</pre>
<p>Por mais inseguro que seja o uso do telnet, em alguns casos é comum o acesso de servidores Looking Glass publicamente. Para tornar o acesso telnet público (não vai exigir senha) apenas leitura, basta remove a senha. (Ainda assim é possível ter poderes com em enable+senha)</p>
<p>Removendo senha:</p>
<pre class="remontti-code"># configure terminal
# no password
# line vty
# no login
# end
# write
# exit
</pre>
<pre class="remontti-code-plain">Hello, this is FRRouting (version 7.3.1).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

frr# configure terminal
frr(config)# no password
Please be aware that removing the password is a security risk and you should think twice about this command.
frr(config)# line vty
frr(config-line)# no login
frr(config-line)# end
frr# write 
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Building Configuration...
Integrated configuration saved to /etc/frr/frr.conf
[OK]
frr# exit</pre>
<h4>Zerando as configurações</h4>
<p>Caso você queira começar tudo do zero, basta remover todos os .conf e copiar os arquivos originais que estão na pasta backup, e dar suas devidas permissões!<br />
Ex.:</p>
<pre class="remontti-code"># rm /etc/frr/*.conf
# rm /etc/frr/*.sav
# rm /etc/frr/daemons
# cp /etc/frr/backups/* /etc/frr/
# chown frr. /etc/frr/ -R</pre>
<h3>Modelos de configurações:</h3>
<p>Alguns exemplos de configurações para os daemons podem ser encontrados em:</p>
<pre class="remontti-code-plain"># tree /usr/share/doc/frr/examples/
├── babeld.conf.sample
├── bfdd.conf.sample
├── bgpd.conf.sample
├── bgpd.conf.sample2
├── bgpd.conf.vnc.sample
├── eigrpd.conf.sample
├── isisd.conf.sample
├── ldpd.conf.sample
├── ospf6d.conf.sample
├── ospfd.conf.sample
├── pbrd.conf.sample
├── pimd.conf.sample
├── ripd.conf.sample
├── ripngd.conf.sample
├── staticd.conf.sample
├── vtysh.conf.sample
└── zebra.conf.sample</pre>
<p>Em <a href="http://docs.frrouting.org/en/latest/" rel="noopener noreferrer" target="_blank">http://docs.frrouting.org/en/latest/</a> você encontra uma ampla documentação com muitos exemplos. </p>
<h4>Bônus iBGP</h4>
<p>Vou deixar aqui um modelo simples iBGP entre um servidor Linux vs Mikrotik.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/09/frr-bgp-mikrotik-1.png" alt="" width="706" height="261" class="alignnone size-full wp-image-5076" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/09/frr-bgp-mikrotik-1.png 706w, https://blog.remontti.com.br/wp-content/uploads/2020/09/frr-bgp-mikrotik-1-300x111.png 300w" sizes="auto, (max-width: 706px) 100vw, 706px" /></p>
<p>Exemplo para iBGP para um DNS Anycast distribuído, usando os IPs do DNS Google, <strong>mas não estou incentivando a fazer isso</strong> é apenas um exemplo! </p>
<p><strong>Configuração Linux DNS</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/09/a.png" alt="" width="225" height="121" class="alignnone size-full wp-image-5090" /></p>
<pre class="remontti-code"># vtysh</pre>
<p>Nesta configuração vamos adicionar os IPs de loopbacks em seguida fechar os peers IPv4 e IPv6, e finalizando configurando os filtros para receber rota default (Logo no RouterOS será necessário envia) e ensinar apenas as IPs de lo. Este é apenas um exemplo para você começar a brincar e estudar mais sobre o assunto.</p>
<pre class="remontti-code">configure terminal
!
interface lo
 ip address 8.8.8.8/32
 ipv6 address 2001:4860:4860::8888/128
!
router bgp 65530
 bgp router-id 10.1.0.2
 neighbor 10.1.0.1 remote-as 65530
 neighbor 10.1.0.1 description &quot;iBGP_DNS_IPv4&quot;
 neighbor 2001:db8:1::1 remote-as 65530
 neighbor 2001:db8:1::1 description &quot;iBGP_DNS_IPv6&quot;
 !
 address-family ipv4 unicast
  redistribute kernel
  redistribute connected
  redistribute static
  neighbor 10.1.0.1 prefix-list RR-IPV4-IN in
  neighbor 10.1.0.1 prefix-list RR-IPV4-OUT out
 exit-address-family
 !
 address-family ipv6 unicast
  redistribute kernel
  redistribute connected
  redistribute static
  neighbor 2001:db8:1::1 activate
  neighbor 2001:db8:1::1 prefix-list RR-IPV6-IN in
  neighbor 2001:db8:1::1 prefix-list RR-IPV6-OUT out
 exit-address-family
!
ip prefix-list RR-IPV4-IN seq 5 permit 0.0.0.0/0
ip prefix-list RR-IPV4-OUT seq 5 permit 8.8.8.8/32
!
ipv6 prefix-list RR-IPV6-IN seq 5 permit ::/0
ipv6 prefix-list RR-IPV6-OUT seq 5 permit 2001:4860:4860::8888/128
!
line vty
!
end
write</pre>
<p><strong>Configuração no Mikrotik/RouterOS (Gateway DNS)</strong></p>
<pre class="remontti-code">/routing bgp instance
add client-to-client-reflection=no name=iBGP-DNS router-id=10.1.0.1

/routing bgp peer
add default-originate=always instance=iBGP-DNS name=DNS-FRR-IPv4 remote-address=10.1.0.2 remote-as=65530
add default-originate=always instance=iBGP-DNS name=DNS-FRR-IPv6 remote-address=2001:db8:1::2 remote-as=65530 address-families=ipv6
</pre>
<p><strong>Configuração Linux Accel-PPP</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/09/b.png" alt="" width="258" height="154" class="alignnone size-full wp-image-5089" /></p>
<pre class="remontti-code"># vtysh</pre>
<p>Nesta configuração vamos fechar os peers IPv4 e IPv6, e configurar os filtros para receber rota default (Logo no RouterOS será necessário envia) e ensinar apenas as IPs possíveis ips dinâmicos desta rede (45.0.0.0/22, 100.64.0.0/10). Lembrando que este é apenas um exemplo simples para você começar a brincar e estudar mais sobre o assunto.</p>
<pre class="remontti-code">configure terminal
!
router bgp 65530
 bgp router-id 10.1.0.2
 neighbor 10.2.0.1 remote-as 65530
 neighbor 10.2.0.1 description &quot;iBGP_ACCEL_IPv4&quot;
 neighbor 2001:db8:2::1 remote-as 65530
 neighbor 2001:db8:2::1 description &quot;iBGP_ACCEL_IPv6&quot;
 !
 address-family ipv4 unicast
  redistribute kernel
  redistribute connected
  redistribute static
  neighbor 10.2.0.1 prefix-list FILTRO-RR-IPV4-IN in
  neighbor 10.2.0.1 prefix-list FILTRO-RR-IPV4-OUT out
 exit-address-family
 !
 address-family ipv6 unicast
  redistribute kernel
  redistribute connected
  redistribute static
  neighbor 2001:db8:2::1 activate
  neighbor 2001:db8:2::1 prefix-list FILTRO-RR-IPV6-IN in
  neighbor 2001:db8:2::1 prefix-list FILTRO-RR-IPV6-OUT out
 exit-address-family
!
ip prefix-list FILTRO-RR-IPV4-IN seq 5 permit 0.0.0.0/0
ip prefix-list FILTRO-RR-IPV4-OUT seq 5 permit 100.64.0.0/10 le 32
ip prefix-list FILTRO-RR-IPV4-OUT seq 10 permit 45.0.0.0/22 le 32
ip prefix-list FILTRO-RR-IPV4-OUT seq 15 permit 10.0.0.0/8 le 32
!
ipv6 prefix-list FILTRO-RR-IPV6-IN seq 5 permit ::/0
ipv6 prefix-list FILTRO-RR-IPV6-OUT seq 10 permit 2001:db8::/32 le 128
!
line vty
!
end
write</pre>
<p><strong>Configuração no Mikrotik/RouterOS (Gateway Accel-PPP)</strong></p>
<pre class="remontti-code">/routing bgp instance
add client-to-client-reflection=no name=iBGP-Accel router-id=10.2.0.2

/routing bgp peer
add default-originate=always instance=iBGP-Accel name=DNS-FRR-IPv4 remote-address=10.2.0.2 remote-as=65530
add default-originate=always instance=iBGP-Accel name=DNS-FRR-IPv6 remote-address=2001:db8:2::2 remote-as=65530 address-families=ipv6
</pre>
<p>Espero que tenha lhe instigado a buscar mais sobre o FRR.</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Deixo aqui agradecimento ao Patrick Brandão que está elaborando um belo <a href="http://www.patrickbrandao.com/?p=artigos&#038;a=frr#frr" rel="noopener noreferrer" target="_blank">tutorial com muitos exemplos</a>. </p>
<p>Fontes:<br />
<a href="https://frrouting.org/" rel="noopener noreferrer" target="_blank">https://frrouting.org/</a><br />
<a href="http://docs.frrouting.org/" rel="noopener noreferrer" target="_blank">http://docs.frrouting.org/</a></p>
<p>O post <a href="https://blog.remontti.com.br/4771">Instalação do FRRouting (FRR) &#8211; Roteamento dinâmico no seu linux +Bônus iBGP</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4771/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como configurar o RPKI de forma simples, instalação do Krill</title>
		<link>https://blog.remontti.com.br/4848</link>
					<comments>https://blog.remontti.com.br/4848#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 21 Aug 2020 21:59:02 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[Bullseye]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debian 10]]></category>
		<category><![CDATA[krill]]></category>
		<category><![CDATA[registro.br]]></category>
		<category><![CDATA[rpki]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4848</guid>

					<description><![CDATA[<p>RPKI é a especificação de uma tecnologia discutida e proposta pelo IETF (Internet Engeenering Task Force), RFC 6480, que permite a validação de anúncios de rotas via protocolo BGP. Essa tecnologia faz uso de&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4848">Como configurar o RPKI de forma simples, instalação do Krill</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti.png" alt="" width="1792" height="1024" class="alignnone size-full wp-image-7757" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti.png 1792w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti-300x171.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti-1024x585.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti-768x439.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-capa-remontti-1536x878.png 1536w" sizes="auto, (max-width: 1792px) 100vw, 1792px" /></p>
<p>RPKI é a especificação de uma tecnologia discutida e proposta pelo IETF (Internet Engeenering Task Force), RFC 6480, que permite a validação de anúncios de rotas via protocolo BGP.</p>
<p>Essa tecnologia faz uso de Certificados Digitais (PKI), e de uma cadeia de certificação para validar a alocação de um conjunto de Recursos de Numeração Internet feita por um RIR/NIR a uma organização.</p>
<p>Um dos objetos a ser assinado com a referida chave privada se chama ROA (Route Origin Authorization), e que contém uma lista de blocos IPv4 e/ou IPv6 e um ASN que está autorizado a originar rotas para os referidos blocos.</p>
<p>As ROAs são então publicadas em repositórios e poderão ser utilizadas para validar que uma determinada rota para um bloco IP, recebida através do protocolo BGP, está sendo originada pelo ASN autorizado pelo detentor da alocação do bloco IP em questão.</p>
<p>Dessa forma cria-se um mecanismo para evitar uso indevido de blocos de endereços IP ou &#8220;sequestros&#8221;, que é quando através de um ASN se origina rotas para blocos IP alocados para outras organizações que não aquela responsável pelo ASN.</p>
<p>Vídeo recomendado que pode lhe ajudar esclarecer a importância do RPKI.<br />
<strong>RPKI: Uma proteção para roubo de prefixos no BGP</strong><br />
<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/wBpyhVuq8dw" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></p>
<p>Está instalação tem como base o projeto <strong><a href="https://github.com/NLnetLabs/krill" rel="noopener noreferrer" target="_blank">Krill</a></strong>. Krill é um daemon de Resource RPKI, apresentando uma Autoridade de Certificação (CA) e um servidor de publicação, escrito em Rust. </p>
<p><strong>Distribuição recomendada</strong>:<br />
<a href="https://blog.remontti.com.br/7236" rel="noopener noreferrer" target="_blank">Instalação do Debian 12 Bookworm limpa passo-a-passo<br />
</a></p>
<p>A base desta instalação foi com informações na <a href="https://krill.docs.nlnetlabs.nl/" rel="noopener noreferrer" target="_blank">documentação oficial</a>.</p>
<p>Não esqueça de virar root da forma correta e atualizar os pacotes, e instalar alguns pacotes que serão necessários. </p>
<pre class="remontti-code"># su - 
# apt update 
# apt install curl wget gnupg2 apt-transport-https net-tools ca-certificates lsb-release</pre>
<p>Adicionaremos ao repositório Debian para os pacotes da nlnetlabs:</p>
<p>Importe a chave do repositório.</p>
<pre class="remontti-code"># curl -fsSL https://packages.nlnetlabs.nl/aptkey.asc | gpg --dearmor -o /usr/share/keyrings/nlnetlabs-archive-keyring.gpg</pre>
<pre class="remontti-code"># echo \
&quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/nlnetlabs-archive-keyring.gpg] https://packages.nlnetlabs.nl/linux/debian \
$(lsb_release -cs) main&quot; | tee /etc/apt/sources.list.d/nlnetlabs.list &gt; /dev/null
</pre>
<p>Atualize o repositório</p>
<pre class="remontti-code"># apt update</pre>
<p>Instale o krill</p>
<pre class="remontti-code"># apt install krill krillup krillta</pre>
<p>Após a instalação será criado no sistema um usuário chamado krill que é dono do diretório /var/lib/krill/ (que até o momento não existe nada nele).</p>
<p>Por segurança criaremos um backp original do krill.conf o arquivo de configuração. </p>
<pre class="remontti-code"># cp /etc/krill.conf /etc/krill.conf.orig</pre>
<p>Por padrão o krill roda em localhost porta 3000. Mas para nós acessar posteriormente sua interface web (lagosta) será necessário ter acesso a mesma, tornado aberta para todos. <em>(Veremos também como aplicar um firewall, para não deixar acessível à todos)</em></p>
<pre class="remontti-code"># vim /etc/krill.conf</pre>
<p>Adicione como no print:</p>
<pre class="remontti-code">ip = &quot;0.0.0.0&quot;</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_3000_port.png" alt="" width="948" height="268" class="alignnone size-full wp-image-4857" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_3000_port.png 948w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_3000_port-300x85.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_3000_port-768x217.png 768w" sizes="auto, (max-width: 948px) 100vw, 948px" /></p>
<p>Por padrão o mesmo não vem habilitado na inicialização, para isso vamos habilita-lo.</p>
<pre class="remontti-code"># systemctl enable krill</pre>
<p>Agora inicie o serviço </p>
<pre class="remontti-code"># systemctl start krill</pre>
<p>Verifique se o mesmo está rodando sem nenhum erro.</p>
<pre class="remontti-code"># systemctl status krill</pre>
<p>Com o comando netstat você pode se certificar que agora o krill está aberto para qualquer IP &#8220;0.0.0.0&#8221;</p>
<pre class="remontti-code"># netstat -putan |grep krill</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1.png" alt="" width="1225" height="88" class="alignnone size-full wp-image-4858" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1.png 1225w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1-300x22.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1-1024x74.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_service-1-768x55.png 768w" sizes="auto, (max-width: 1225px) 100vw, 1225px" /></p>
<p>Tudo certo até aqui, será necessário pegarmos o Token que ele gerou na instalação, ele se encontra no arquivo /etc/krill.conf, para pega-ló pode executar este comando:</p>
<pre class="remontti-code"># cat /etc/krill.conf |grep &quot;token =&quot; | cut -d&#039;&quot;&#039; -s -f 2</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_token.png" alt="" width="940" height="130" class="alignnone size-full wp-image-4855" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_token.png 940w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_token-300x41.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_token-768x106.png 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /><br />
Neste caso meu token é <em>38d8ffbe35eaa2391b01681662037600</em>, salve isso com 7 chaves!</p>
<p>E a instalação é só isso! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /> </p>
<p>Agora basta acessar em seu navegador <strong>https://IP:3000</strong> e nos depararemos com interface web do krill &#8220;lagosta&#8221;. <strong>(User o Firefox)</strong> É necessário aceitar o certificado inválido.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0.png" alt="" width="1285" height="582" class="alignnone size-full wp-image-7755" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0.png 1285w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0-300x136.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0-1024x464.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-0-768x348.png 768w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /></p>
<p>Informe o seu <strong>token</strong> em senha, no meu ex.: <em>&#8220;38d8ffbe35eaa2391b01681662037600&#8221;</em></p>
<p>Ao entrar pela primera vez será necessário informar um nome de autoridade, adotarei como nome &#8220;meu AS&#8221;<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name.png" alt="" width="1381" height="790" class="alignnone size-full wp-image-4861" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name.png 1381w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name-300x172.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name-1024x586.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_ca_name-768x439.png 768w" sizes="auto, (max-width: 1381px) 100vw, 1381px" /></p>
<p>Hora de acessarmos nossa conta no <a href="https://registro.br/login/" rel="noopener noreferrer" target="_blank">Registro.br</a></p>
<p>Clique em titularidade, em seguida &#8220;1 ASN&#8221;<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade.png" alt="" width="1160" height="401" class="alignnone size-full wp-image-4862" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade.png 1160w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade-300x104.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade-1024x354.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_titulariade-768x265.png 768w" sizes="auto, (max-width: 1160px) 100vw, 1160px" /></p>
<p>Role a página ate o final e <strong>clique em Configurar RPKI</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki.png" alt="" width="1150" height="403" class="alignnone size-full wp-image-4863" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki.png 1150w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki-300x105.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki-1024x359.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_rpki-768x269.png 768w" sizes="auto, (max-width: 1150px) 100vw, 1150px" /></p>
<p>Volte a tela do Krill, e clique em <strong>Parents</strong> e copie o conteúdo do <strong>Child Request</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1.png" data-rel="lightbox-gallery-GRP5xAkT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1.png" alt="" width="1283" height="934" class="alignnone size-full wp-image-7744" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1.png 1283w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1-300x218.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1-1024x745.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-1-768x559.png 768w" sizes="auto, (max-width: 1283px) 100vw, 1283px" /></a></p>
<p>Retorne ao Registro.BR e cole o conteúdo no campo <strong>Child Request</strong> e <strong>Habilitar RPKI</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request.png" alt="" width="1159" height="563" class="alignnone size-full wp-image-4866" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request.png 1159w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request-300x146.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request-1024x497.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_child_request-768x373.png 768w" sizes="auto, (max-width: 1159px) 100vw, 1159px" /></p>
<p>Copie o conteúdo do <strong>Parent Response</strong> que o RegistroBR gerou<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response.png" alt="" width="1151" height="847" class="alignnone size-full wp-image-4868" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response.png 1151w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response-300x221.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response-1024x754.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_parent_response-768x565.png 768w" sizes="auto, (max-width: 1151px) 100vw, 1151px" /></p>
<p>Cole o mesmo no Krill campo <strong>Parent Response</strong> e clique em confirmar.<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2.png" data-rel="lightbox-gallery-GRP5xAkT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2.png" alt="" width="1285" height="941" class="alignnone size-full wp-image-7745" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2.png 1285w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2-300x220.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2-1024x750.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-2-768x562.png 768w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /></a></p>
<p>Deve retornar uma mensagem de sucesso.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/su.png" alt="" width="380" height="100" class="alignnone size-full wp-image-4870" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/su.png 380w, https://blog.remontti.com.br/wp-content/uploads/2020/08/su-300x79.png 300w" sizes="auto, (max-width: 380px) 100vw, 380px" /></p>
<p>Você será já direcionado para o <strong>Repository</strong>, então copie a <strong>Publisher Request</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3.png" data-rel="lightbox-gallery-GRP5xAkT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3.png" alt="" width="1285" height="854" class="alignnone size-full wp-image-7746" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3.png 1285w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3-1024x681.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-3-768x510.png 768w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /></a></p>
<p>Vá ao registroBR e logo a baixo de parent response clique em <strong>Configurar publicação remota</strong> irá abrir um campo <strong>Publisher Request</strong>, agora cole e clique em <strong>Habilitar Publicação Remota</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request.png" alt="" width="1161" height="769" class="alignnone size-full wp-image-4872" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request.png 1161w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request-300x199.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request-1024x678.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/registrobr_publisher_request-768x509.png 768w" sizes="auto, (max-width: 1161px) 100vw, 1161px" /></p>
<p>Role um pouco a paixa para baixo e veja que temos agora o <strong>Repository Response</strong> copie o mesmo e volte ao Krill<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response.png" alt="" width="1154" height="759" class="alignnone size-full wp-image-4873" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response.png 1154w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response-300x197.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response-1024x673.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/rpki_registrobr_repository_response-768x505.png 768w" sizes="auto, (max-width: 1154px) 100vw, 1154px" /></p>
<p>Cole no campo <strong>Repository Response</strong> e clique em <strong>Confirmar</strong><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4.png" data-rel="lightbox-gallery-GRP5xAkT" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4.png" alt="" width="1277" height="857" class="alignnone size-full wp-image-7747" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4.png 1277w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4-300x201.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4-1024x687.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-4-768x515.png 768w" sizes="auto, (max-width: 1277px) 100vw, 1277px" /></a></p>
<p>Novamente deve retornar uma mensagem de sucesso.<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/su.png" alt="" width="380" height="100" class="alignnone size-full wp-image-4870" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/su.png 380w, https://blog.remontti.com.br/wp-content/uploads/2020/08/su-300x79.png 300w" sizes="auto, (max-width: 380px) 100vw, 380px" /></p>
<p>Clique em ROAs. Você verá seus prefixos anunciados. (Se não aparecer atualize a página, pode levar uns minutos)<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5.png" alt="" width="1283" height="734" class="alignnone size-full wp-image-7749" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5.png 1283w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5-300x172.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5-1024x586.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-5-768x439.png 768w" sizes="auto, (max-width: 1283px) 100vw, 1283px" /></p>
<p>Agora precisamos adicionar nossos ROAs, clique em <strong>Add ROA/Adicionar ROA</strong><br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7.png" alt="" width="1279" height="681" class="alignnone size-full wp-image-7751" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7.png 1279w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7-300x160.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7-1024x545.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-7-768x409.png 768w" sizes="auto, (max-width: 1279px) 100vw, 1279px" /></p>
<p>Adicione todos seus prefixos<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6.png" alt="" width="1275" height="661" class="alignnone size-full wp-image-7752" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6.png 1275w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6-300x156.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6-1024x531.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-6-768x398.png 768w" sizes="auto, (max-width: 1275px) 100vw, 1275px" /></p>
<p>ROAs adicionados com sucesso! Nosso RPKI está finalizado!<br />
<img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8.png" alt="" width="1280" height="556" class="alignnone size-full wp-image-7753" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8.png 1280w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8-300x130.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8-1024x445.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill-8-768x334.png 768w" sizes="auto, (max-width: 1280px) 100vw, 1280px" /></p>
<p>Para validar você pode acessar os Routinator da ripe.net (<a href="https://blog.remontti.com.br/5720" rel="noopener" target="_blank">ou crie o seu</a>), mas <strong>tenha paciência, aguarde pelo menos 1 hora antes de arrancar os cabelos</strong> se não validar. <strong><a href="https://rpki-validator.ripe.net" rel="noopener" target="_blank">https://rpki-validator.ripe.net</a>/</strong></p>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator.png" alt="" width="1258" height="698" class="alignnone size-full wp-image-7311" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator.png 1258w, https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator-300x166.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator-1024x568.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/08/routnator-768x426.png 768w" sizes="auto, (max-width: 1258px) 100vw, 1258px" /></p>
<p>Não podemos esquecer o firewall, usarei o nftables</p>
<p>Instale e ative-o para iniciar com o sistema. (No <strong>Debian 11</strong> nftables já é o subistituto do iptables, não é necessários instalar, mas é necessário dar um enable)</p>
<pre class="remontti-code"># apt install nftables 
# systemctl enable nftables</pre>
<p>Edite as regras</p>
<pre class="remontti-code"># vim /etc/nftables.conf </pre>
<p>Neste exemplo eu acessível apenas deixo apenas aberto para 200.200.200.0/22 e 192.168.0.0/24</p>
<pre class="remontti-code">#!/usr/sbin/nft -f
  
flush ruleset

table inet filter {
        chain input {
                type filter hook input priority 0;
                # Krill
                ip saddr 127.0.0.1 tcp dport 3000 counter accept
                ip6 saddr ::1 tcp dport 3000 counter accept
                ip saddr 192.168.0.0/24 tcp dport 3000 counter accept
                ip saddr 200.200.200.0/22 tcp dport 3000 counter accept
                # Drop 
                tcp dport 3000 counter drop
        }
        chain forward {
                type filter hook forward priority 0;
        }
        chain output {
                type filter hook output priority 0;
        }
}
</pre>
<p>Reinicie o serviço</p>
<pre class="remontti-code"># systemctl restart nftables</pre>
<p>Verificar as regras:</p>
<pre class="remontti-code"># nft list ruleset</pre>
<h5>Backup</h5>
<p>Não esqueça de colocar o diretório em suas políticas de backups: <strong>/var/lib/krill/</strong>. Uma dica é o tutorial: <a href="https://blog.remontti.com.br/4791" rel="noopener noreferrer" target="_blank">Criando backups de forma simples e enviando para o Telegram ou servidor via SSH</a></p>
<h5>Bônus &#8211; Múltiplos CA</h5>
<p>Se quiser hospedar as CA de outros provedores ou é responsável por mais de um AS, basta adicionar nova CA pelo cliente do terminal, e assim será possível gerenciar pela interface web (lagosta) </p>
<pre class="remontti-code"># krillc add --token seutoken --ca NOME_CA</pre>
<p>Ex:</p>
<pre class="remontti-code"># krillc add --token 38d8ffbe35eaa2391b01681662037600 --ca AS4321</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_multipos_ca.png" alt="" width="691" height="262" class="alignnone size-full wp-image-4909" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_multipos_ca.png 691w, https://blog.remontti.com.br/wp-content/uploads/2020/08/krill_multipos_ca-300x114.png 300w" sizes="auto, (max-width: 691px) 100vw, 691px" /><br />
<em>Deixou meu agradecimento ao amigo <a href="https://t.me/GlauberMattar" rel="noopener noreferrer" target="_blank">@GlauberMattar</a> por essa dica.</em></p>
<h5>Monitoramento</h5>
<p>Template<strong> Zabbix 5 e 4.4</strong> para monitorar se a porta 3000 está respondendo. <a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/RR_Krill.zip"><strong>RR Krill Zabbix 5</strong></a> / <a href="https://blog.remontti.com.br/wp-content/uploads/2020/08/RR_Krill_zbx4.4.zip"><strong>RR Krill Zabbix 4.4</strong></a></p>
<h5>Leitura recomendada:</h5>
<p><a href="https://blog.remontti.com.br/5720" rel="noopener" target="_blank">Instalação do Routinator 3000, um software para validação RPKI</a></p>
<h3>Erros:</h3>
<p>Verifique se a hora do servidor está correta!</p>
<pre class="remontti-code"># apt install ntpdate
# ntpdate a.ntp.br</pre>
<p>Se desejar garantir coloque no cron para acertar a hora todos dia a meia noite, ex:</p>
<pre class="remontti-code"># cronta -e </pre>
<p>Adicione</p>
<pre class="remontti-code-plain"># m h  dom mon dow   command
00 00  *   *   *     ntpdate a.ntp.br</pre>
<p>Curtiu o conteúdo? Quer me ajudar manter essa p*** ? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>Fontes:<br />
<em>https://github.com/NLnetLabs/krill<br />
https://rpki.readthedocs.io/en/latest/krill/get-started.html<br />
https://registro.br/tecnologia/numeracao/rpki/</em></p>
<p>O post <a href="https://blog.remontti.com.br/4848">Como configurar o RPKI de forma simples, instalação do Krill</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4848/feed</wfw:commentRss>
			<slash:comments>44</slash:comments>
		
		
			</item>
		<item>
		<title>Servidor Looking Glass simples e rápido!</title>
		<link>https://blog.remontti.com.br/4243</link>
					<comments>https://blog.remontti.com.br/4243#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Fri, 27 Mar 2020 20:54:36 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[cisco]]></category>
		<category><![CDATA[Comware]]></category>
		<category><![CDATA[Huawei]]></category>
		<category><![CDATA[juniper]]></category>
		<category><![CDATA[lg]]></category>
		<category><![CDATA[looking glass]]></category>
		<category><![CDATA[OpenBGPD]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Quagga]]></category>
		<category><![CDATA[RADb]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[Zebra]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=4243</guid>

					<description><![CDATA[<p>Um servidor Looking Glass (ou servidor LG) é muito útil para acesso remoto com o objetivo de disponibilizar informações de roteamento publicamente. O servidor atua como um portal limitado e somente leitura para roteadores&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/4243">Servidor Looking Glass simples e rápido!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Um servidor Looking Glass (ou servidor LG) é muito útil para acesso remoto com o objetivo de disponibilizar informações de roteamento publicamente. O servidor atua como um portal limitado e somente leitura para roteadores de qualquer organização que esteja executando o servidor LG.</p>
<p>Para montar o servidor vamos usar um projeto muito simples que basicamente tem 2 arquivos, o <a href="https://github.com/remontti/lg" rel="noopener noreferrer" target="_blank">PHP Looking Glass</a> qual é um fork do projeto russo <a href="https://github.com/hsdn/lg" rel="noopener noreferrer" target="_blank">hsdn</a>.<br />
<center><a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph.png" data-rel="lightbox-gallery-FRC9cjCo" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-300x265.png" alt="" width="300" height="265" class="alignnone size-medium wp-image-4254" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-300x265.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph-768x677.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10_graph.png 848w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a> <a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp.png" data-rel="lightbox-gallery-FRC9cjCo" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-300x265.png" alt="" width="300" height="265" class="alignnone size-medium wp-image-4256" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-300x265.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp-768x677.png 768w, https://blog.remontti.com.br/wp-content/uploads/2020/03/show-ip-bgp.png 862w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></center></p>
<p>Você encontra outros projetos legais também como o da <a href="https://github.com/respawner/looking-glass" rel="noopener noreferrer" target="_blank">respawner</a> qual o pessoal da <a href="https://wiki.brasilpeeringforum.org/w/Como_Ter_Seu_Proprio_Looking_Glass" rel="noopener noreferrer" target="_blank">BPF</a> já fez tutorial sobre o mesmo. </p>
<h3>Características do PHP Looking Glass</h3>
<p>Suporte a Telnet e SSH (plink ou sshpass).<br />
Suporte aos roteadores <strong>Cisco, MikroTik (RouterOS), Juniper, Huawei (Comware), Quagga (Zebra) e OpenBGPD</strong>.<br />
Suppores aos protocolos IPv4 e IPv6.<br />
Conversão automática de IPs em sub-redes usando Merit RADb para MikroTik (http://www.ra.net/).<br />
Desenho do gráfico BGP AS usando o kit de ferramentas GraphViz.<br />
Funciona no php 5.2.0 e superiores.</p>
<p>Para subir o projeto em seu servidor você precisa ter um serviço web como apache por exemplo e PHP basicamente. Você pode subir ele em um servido já em produção, não é necessário criar um servidor apenas para essa finalidade. (Porém fica a seu critério) </p>
<p>Vou trazer uma instalação limpa com base na <a href="https://blog.remontti.com.br/2966" rel="noopener noreferrer" target="_blank">instalação zerada do Debian 10</a>. </p>
<p>Com Debian instalado vamos instalar os pacotes necessários:</p>
<pre class="remontti-code"># apt install apache2 apache2-utils sshpass graphviz
# apt install libapache2-mod-php php php-cli php-pear php-gmp php-gd php-bcmath php-mbstring php-curl php-xml php-zip
# pear install Image_GraphViz-1.3.0</pre>
<p>Vou colocar o projeto no diretório padrão do apache /var/www/html/, mas você pode criar um <a href="https://blog.remontti.com.br/3464" rel="noopener noreferrer" target="_blank">domínio virtual </a>para isso ficar muito mais legal e ainda criar um <a href="https://blog.remontti.com.br/3548" rel="noopener noreferrer" target="_blank">certificado gratuitamente</a> com o  Let’s Encrypt</p>
<pre class="remontti-code"># mkdir /var/www/html/lg
# cd /var/www/html/lg
# apt install wget
# wget https://github.com/remontti/lg/raw/master/htdocs/favicon.ico
# wget https://github.com/remontti/lg/raw/master/htdocs/lg_logo.gif
# wget https://raw.githubusercontent.com/remontti/lg/master/htdocs/index.php
# wget https://raw.githubusercontent.com/remontti/lg/master/htdocs/lg_config.php</pre>
<p>Agora basta vocÊ editar o arquivo <strong>lg_config.php</strong> e alterar os valores das variáveis:</p>
<p><strong>$_CONFIG[&#8216;asn&#8217;]</strong> &#8211; Seu AS para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;company&#8217;]</strong> &#8211; Nome da empresa para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;logo&#8217;]</strong> &#8211; O logotipo da sua empresa para exibição na página LG.<br />
<strong>$_CONFIG[&#8216;color&#8217;]</strong> &#8211; Cor principal dos elementos de design na página LG.</p>
<p>A configuração dos roteadores é especificada em $_CONFIG[&#8216;routers&#8217;], no seguinte formato:</p>
<pre class="remontti-code-plain">$_CONFIG[&#039;routers&#039;] = array
(
    &#039;router1&#039; = array
    (
        // Router valores
    ),
    &#039;router2&#039; = array
    (
        // Router valores
    ),
    // etc.
);</pre>
<p>No nosso arquivo atual já consta com 3 exemplos sendo um o do IX.BR (SP). Basta você configurar seu roteado seguindo os padrões:</p>
<p><strong>url</strong> &#8211; Endereço no formato: [ssh|telnet]://[login]:[password]@[host]:[port].<br />
<strong>pingtraceurl</strong> &#8211; Endereço URL para ferramentas de ping e traceroute para roteadores Quagga (ou * FALSE *).<br />
<strong>description</strong> &#8211; Descrição do roteador.<br />
<strong>group</strong> &#8211; Nome do grupo de roteadores (AS) (ou FALSE).<br />
<strong>ipv6</strong> &#8211; Suporte IPv6? (TRUE ou FALSE).<br />
<strong>os</strong> &#8211; Tipo do Router (ios, mikrotik, quagga, junos, openbgpd, huawei).</p>
<p>Configurações ajustada basta acessar o endereço http://ip-servidor/lg ou se você fez bonitinho via domínio <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /><br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png" data-rel="lightbox-gallery-FRC9cjCo" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png" alt="" width="978" height="544" class="alignnone size-full wp-image-4250" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10.png 978w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10-300x167.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/03/Looking_Glass_debina_10-768x427.png 768w" sizes="auto, (max-width: 978px) 100vw, 978px" /></a></p>
<p>Curtiu o conteúdo? Quer me ajudar? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento! (Esse deu trabalho!)</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Participe do canal no <a href="https://t.me/blogremontti" rel="noopener noreferrer" target="_blank">telegram</a> para ficar atualizado sempre que publicar um novo tutorial. </p>
<p>Abraço!</p>
<p><strong>Demos</strong><br />
<a href="http://dev.hsdn.org/lg/" rel="noopener noreferrer" target="_blank">http://dev.hsdn.org/lg/</a><br />
<a href="http://lg.campus-rv.net/" rel="noopener noreferrer" target="_blank">http://lg.campus-rv.net/</a><br />
<a href="http://lg.lankabell.com/" rel="noopener noreferrer" target="_blank">http://lg.lankabell.com/</a></p>
<p><strong>Gráfico da demonstração (BGP AS)</strong><br />
<a href="http://dev.hsdn.org/lg/?command=graph&#038;protocol=ipv4&#038;query=8.8.8.8&#038;router=example1" rel="noopener noreferrer" target="_blank">http://dev.hsdn.org/lg/?command=graph&#038;protocol=ipv4&#038;query=8.8.8.8&#038;router=example1</a></p>
<p>O post <a href="https://blog.remontti.com.br/4243">Servidor Looking Glass simples e rápido!</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/4243/feed</wfw:commentRss>
			<slash:comments>36</slash:comments>
		
		
			</item>
		<item>
		<title>Proteja-se de ataques DoS/DDoS mitigando com FastNetMon e anuncie os prefixos atacados (blackholes) para sua operadora, usando Mikrotik :-)</title>
		<link>https://blog.remontti.com.br/3981</link>
					<comments>https://blog.remontti.com.br/3981#comments</comments>
		
		<dc:creator><![CDATA[Rudimar Remontti]]></dc:creator>
		<pubDate>Sat, 25 Jan 2020 02:28:33 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[ataques]]></category>
		<category><![CDATA[bgp]]></category>
		<category><![CDATA[ddos]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[debina 10]]></category>
		<category><![CDATA[dos]]></category>
		<category><![CDATA[exabgp]]></category>
		<category><![CDATA[fastnetmon]]></category>
		<category><![CDATA[ibgp]]></category>
		<category><![CDATA[mitigação]]></category>
		<category><![CDATA[notificações]]></category>
		<category><![CDATA[proteção]]></category>
		<category><![CDATA[routeros]]></category>
		<category><![CDATA[telegram]]></category>
		<guid isPermaLink="false">https://blog.remontti.com.br/?p=3981</guid>

					<description><![CDATA[<p>Existe um tutorial mais atualizado acesse: Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS 👆 👆 👆 👆 👆 👆&#46;&#46;&#46;</p>
<p>O post <a href="https://blog.remontti.com.br/3981">Proteja-se de ataques DoS/DDoS mitigando com FastNetMon e anuncie os prefixos atacados (blackholes) para sua operadora, usando Mikrotik :-)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><font color="red">Existe um tutorial mais atualizado acesse:</font></h2>
<p><a href="https://blog.remontti.com.br/7322">Fortalecendo a Resiliência da Rede: Detecção de Ataques DDoS com FastNetMon, FRRouting, Grafana e Implementação em Debian 12 com Huawei &#038; RouterOS</a><br />
 <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f446.png" alt="👆" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<pre class="remontti-code">#
#
#
#
#
#
#
#
</pre>
<p><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.jpg" alt="" width="720" height="340" class="alignnone size-full wp-image-3991" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.jpg 720w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-300x142.jpg 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-520x245.jpg 520w" sizes="auto, (max-width: 720px) 100vw, 720px" /></p>
<p>Neste tutorial vamos aprender como identificar os ataques Dos/DDoS e anunciar os prefixo atacados (ou atacantes) <strong>de seu AS</strong> em envia-los para uma blackhole, e repassar os mesmo para sua operadora. (Acordo)</p>
<p>Vamos utilizar o <a href="https://github.com/pavel-odintsov/fastnetmon/" rel="noopener noreferrer" target="_blank">FastNetMon</a> que é um analisador de carga DoS/DDoS de alto desempenho, construído sobre vários mecanismos de captura de pacotes (NetFlow, IPFIX, sFlow, AF_PACKET, SnabbSwitch, netmap, PF_RING, PCAP). </p>
<p>Farei a instalação do FastNetMon no Debian 10 (Instalação Limpa)</p>
<p>Você irá precisar configurar o envido dos Flows em seu roteador de bora. Vou deixar aqui um exemplo de como configurar com o routerOS/Mikrotik.</p>
<p><strong>Cenário Ex.:</strong><br />
AS &#8211; 15169<br />
172.31.31.1/30 &#8211; RouterOS/Mikrotik<br />
172.31.31.2/30 &#8211; Servidor FastNetMon<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.png" data-rel="lightbox-gallery-Gx6gPzGb" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.png" alt="" width="1332" height="606" class="alignnone size-full wp-image-3984" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp.png 1332w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-300x136.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-1024x466.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_mikrotik_bgp-768x349.png 768w" sizes="auto, (max-width: 1332px) 100vw, 1332px" /></a></p>
<p>Ative o envido dos flows em seu routerOS/Mikrotik, selecionando as interfaces de entrada (WAN) ex suas operadoras, PTTs (No exemplo sfp1,VLAN.1234-PTT) <em>observe que não irei usar a porta padrão 2055 e sim 62055.</em></p>
<pre class="remontti-code">/ip traffic-flow set active-flow-timeout=1m cache-entries=4k enabled=yes interfaces=&quot;sfp1,VLAN.1234-PTT&quot;
/ip traffic-flow target add dst-address=172.31.31.2 port=62055</pre>
<h3>Instalação FastNetMon</h3>
<p>Antes de iniciar a instalação do seu do seu servidor em nosso exemplo estou usando o IP 172.31.31.2/30, porém eu NUCA recomendaria você fazer NAT em seu roteador de borda ainda mais ele sendo um Mikrotik, a performasse estaria comprometida, quem tem NAT estude de uma pesquisada sobrem IPv4 Fast Path,  IPv4 Fasttrack, Connection Tracking. Quando você compreender esses &#8220;caras&#8221; e aplicar dentro de sua rede, vai descobrir que o mikrotik não é tão ruim quanto falam por ai kkkkk. (Quem sabe um dia escrevo algo sobre), mas voltando&#8230; Porque utilizar o IP 172.31.31.2 então? Primeiramente por que ele não é acessível pelo mundo, logo não pode ser atacado, mas por outro lado se ele não tiver internet você não poderá por exemplo configurar para receber uma notificação (que neste tutorial vou explicar como fazer para enviar alertas no telegram) então como proceder, se você manja já deve ter pensado em uma solução. No meu caso eu sempre divido a a rede, o que é borda é borda, nunca ligo um servidor nela! O ideal é termos um router apenas para os servidores, ou então ligado quem sabe no concentrador de NAT, então nesse caso você pode fazer uma NAT para seu servidor, na pior das hipóteses use um ip válido. Você pode também fechar uma sessão <strong>multihop</strong>. Bom de seus pulos, ai já é engenharia de redes! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f61b.png" alt="😛" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>O pacote do fastnetmon já se encontra no repositório do debian, juntamente algumas pacotes extras que vamos utilizar em seguida.</p>
<pre class="remontti-code"># apt install fastnetmon zip curl wget python-pip socat -y</pre>
<p>Adicione todos os prefixos de se AS, são esses os IPs que ele fará analise. </p>
<pre class="remontti-code"># vim /etc/networks_list</pre>
<p>Exemplo</p>
<pre class="remontti-code">216.58.192.0/22
2800:3f0::/32</pre>
<p>Ajustes as configurações</p>
<pre class="remontti-code"># vim /etc/fastnetmon.conf</pre>
<p>Exlplicarei nos comentários</p>
<pre class="remontti-code"># Quantos pacotes serão coletados do tráfego de ataque
# Aumentamos para ter um log com mais informações
ban_details_records_count = 1000

# Defina por quanto tempo você irá ficar anunciando seu IP atacado a blackhole 
ban_time = 600

# Ative o rastreamento de conexão
enable_connection_tracking = on

# Ativaremos a detecção de ataques, por pacotes por/s, por limite de banda e pro flows.
ban_for_pps = on
ban_for_bandwidth = on
ban_for_flows = on

# Limites de pacotes
threshold_pps = 20000
# Limite de banda (Pode pegar como base o cliente/ plano com mair trafego 
# cuidado com ips de cgnat, eles terão bem mais consumo. 
threshold_mbps = 1000
# Limite por flows
threshold_flows = 3500

# Você pode desativar o sflow (Já que com RouterOS não vamos utiliza-lo)
sflow = off

# Ative o netflow
netflow = on

# Ative o exabgp (É com ele que vamos fechamos nosso per com a borda)
exabgp = on
# Defina para 60 o mesmo tempo setado la no Router (active-flow-timeout=1m)
average_calculation_time = 60

# Altere a porta para mesma que configuramos no Router
netflow_port = 62055

# Informe o IP da sua interface do servidor
exabgp_next_hop = 172.31.31.2

# Script que será executado sempre quer um banir/desbanir
notify_script_path = /usr/local/bin/notify_about_attack.sh</pre>
<p>O fastnetmon sempre que identificar um ataque irá executar <strong>notify_script_path</strong>, identificando o IP da sua rede que está sofrendo <strong>(incoming)</strong> o ataque ou que está cometendo <strong>(outgoing)</strong> o ataque. Ele <strong>NÃO</strong> irá identificar os IPs de origem. Em um futuro quando tivermos mais testes elaborados eu juntamente com o Gabriel Vargas Padilha estamos estudando os logs e através desses com um script (python) analisarmos a fundo vamos armazena-los em uma base de dados bem como identificar (porem no momento ainda tem falsos positivos), mas a ideia e saber a origem e através de um outro script notificar os IPs de origens enviando os logs para o dono do IP para que ele tome suas providencias, e por que não anunciar também nas blackholes.  </p>
<p>Criaremos então nosso arquivo chamado pelo opção &#8220;notify_script_path&#8221;, mas antes vamos criar um script para enviar notificações (mensagens) e arquivos pelo Telegram. Vai ser necessário criar um bot do telegram para o uso do mesmo. Se você não sabe como criar um Bot para telegram veja como fazer o mesmo no início do tutorial que já postei de como enviar alertas pelo zabbix, <a href="https://blog.remontti.com.br/3053" rel="noopener noreferrer" target="_blank">Zabbix 4.2 enviando alertas no Telegram via Bot (Debian 10)</a>, lá no ínico do tutorial explica como criar o bot, pegar o token e como descobrir o ID de um usuário ou grupo. </p>
<pre class="remontti-code"># cd /tmp/
# wget https://github.com/remontti/TelegramCMD/archive/master.zip
# unzip /tmp/master.zip
# chmod a+x /tmp/TelegramCMD-master/telegram
# mv /tmp/TelegramCMD-master/telegram* /usr/local/bin/</pre>
<p>Não esqueça de alterar o TOKEN para o do seu bot.</p>
<pre class="remontti-code"># vim /usr/local/bin/telegram.conf/token.conf</pre>
<pre class="remontti-code">######################################
# Telegram bot                       #
# Create a new bot with @BotFather   #
# get TOKEN                          #
######################################

TOKEN=&quot;000000000:FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF&quot;</pre>
<p>Como usar? É importante você saber que o IDs de grupos tem um &#8220;-&#8221; no inicio do ID, já usuários direto não.</p>
<pre class="remontti-code">Uso: telegram [Opções]
  -m: Para enviar uma mensagem
     ex: telegram -m &quot;ID Chat&quot; &quot;Meu assunto&quot; &quot;Minha mensagem...&quot;
     ex: telegram -m &quot;-123456789&quot; &quot;Notificação&quot; &quot;Mensagem para um grupo ID&quot;
     ex: telegram -m &quot;123456789&quot; &quot;Notificação&quot; &quot;Mensagem para direta/privado&quot;

  -f: Para enviar um arquivo
     ex: telegram -f &quot;ID Chat&quot; &quot;/diretorio/arquivo&quot; &quot;nome do arquivo zip&quot; &quot;Comentário&quot;
     ex: telegram -f &quot;12345689&quot; /var/log/syslog syslog &quot;Logs do sistema para user privado&quot;</pre>
<p>     ex: telegram -f &#8220;-12345689&#8221; /var/log/syslog syslog &#8220;Logs do sistema para um grupo&#8221;</p>
<p>Bot funcionando, criamos então uma pasta onde os logs de ataques que terminaram vão ser movidos, e o script que será executado sempre que um ataque for identificado (BAN/UNBAN).</p>
<pre class="remontti-code"># mkdir /var/log/fastnetmon_attacks/ataques
# vim /usr/local/bin/notify_about_attack.sh</pre>
<pre class="remontti-code">
#!/usr/bin/env bash

# This script will get following params:
#  $1 client_ip_as_string
#  $2 data_direction
#  $3 pps_as_string
#  $4 action (ban or unban)

# Desbanindo um IP
if [ &quot;$4&quot; = &quot;unban&quot; ]; then
    /usr/local/bin/telegram -m &quot;-12345678&quot; &quot;UNBAN: $2 Ataque&quot; &quot;&lt;code&gt;IP $1&lt;/code&gt; removido da blackhole&quot;
    # Movemos os logs para pasta ataques pois não queremos mais receber elas.
    mv /var/log/fastnetmon_attacks/$1* /var/log/fastnetmon_attacks/ataques
    # Unban actions if used
    exit 0
fi

# Banindo
if [ &quot;$4&quot; = &quot;ban&quot; ]; then
    /usr/local/bin/telegram -m &quot;-12345678&quot; &quot;BAN: $2 ataque&quot; &quot;&lt;code&gt;IP $1&lt;/code&gt; prefixo anunciado a blackhole&quot;
    /usr/local/bin/telegram -f &quot;-12345678&quot; /var/log/fastnetmon_attacks/$1* $1 &quot;Logs do ataque ao IP $1&quot;
    exit 0
fi

if [ &quot;$4&quot; == &quot;attack_details&quot; ]; then    
    #/usr/local/bin/telegram -m &quot;-12345678&quot; &quot;BAN&quot; &quot;&lt;code&gt;FastNetMon: IP $1 blocked because $2 attack with power $3 pps&lt;/code&gt;&quot;
    exit 0
fi</pre>
<pre class="remontti-code"># chmod a+x /usr/local/bin/notify_about_attack.sh</pre>
<p>Restarte o fastnetmon</p>
<pre class="remontti-code"># systemctl restart fastnetmon</pre>
<h3>Instalação do exaBGP</h3>
<p>Iremos utilizar o <a href="https://github.com/Exa-Networks/exabgp" rel="noopener noreferrer" target="_blank">exaBGP</a> fechar nossa conexão BGP para realizar os anúncios dos prefixos atacados.</p>
<pre class="remontti-code"># pip install exabgp==3.4.20</pre>
<p>Configure o arquivo para fechar o peer.</p>
<pre class="remontti-code"># vim /etc/exabgp.conf</pre>
<pre class="remontti-code">group RouterBorda {
    hold-time 180;
    # AS do nosso ExaBGP (Pode deixar 65001)
    local-as 65001;
    # AS Remoto (Seu AS pois você vai estar fechando com seu roteador de borda)
    peer-as 15169;
    # ID do ExaBGP router (use o mesmo IP da sua placa de rede)
    router-id 172.31.31.2;
    graceful-restart 1200;
    # Remote peer
    neighbor 172.31.31.1 {
        # Endereço IP da interface desse servidor
        local-address 172.31.31.2;
        description &quot;ExaBGP&quot;;
        family {
            ipv4 unicast;
            ipv6 unicast;
        }
    }
    # Processo que vai receber as linhas de comandos para adicionar ou excluir uma prefixo
    process service-dynamic {
        run /usr/bin/socat stdout pipe:/var/run/exabgp.cmd;
    }
}</pre>
<p>Antes de iniciar o exaBGP você precisa criar um peer e alguns filtros em seu roteador de borda, no nosso exemplo routerOS/Mikrotik.</p>
<p><strong>Filtros</strong>:<br />
Crie um filtro de entrada que todas as rotas aprendida do fastnetmon seja setadas como blackhole, e não ensine nada para ele.</p>
<pre class="remontti-code">/routing filter
add action=accept chain=FastNetMon-IN set-type=blackhole
add action=discard chain=FastNetMon-OUT</pre>
<p><strong>Peer</strong>:<br />
Atenção para a <strong>instance</strong> que deve estar selecionada corretamente (use a mesma que você usa com sua operadora). Caso seu servidor não esteja com um conexão direta a borda poe usar multihop=<strong>yes</strong>, como comentado anteriormente.</p>
<pre class="remontti-code">/routing bgp peer
add name=FastNetMon instance=default remote-as=65001 multihop=no  \
 in-filter=FastNetMon-IN out-filter=FastNetMon-OUT \
 remote-address=172.31.31.2 update-source=172.31.31.1</pre>
<p>Para não ter que carregar na mão o exabgp, criaremos um script para inicialização do exaBGP automaticamente.</p>
<pre class="remontti-code"># vim /etc/init.d/exabgp </pre>
<pre class="remontti-code">#!/bin/bash
### BEGIN INIT INFO
# Provides:          exabgp
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
### END INIT INFO

VERMELHO=&#039;\033[1;31m&#039;
VERDE=&#039;\033[1;32m&#039;
NC=&#039;\033[0m&#039;

PROCESSO=$(ps -x |grep -v &quot;grep&quot; |grep -v &quot;/bin/bash&quot; |grep exabgp |wc -l); 

function startExaBGP(){
    if [  $PROCESSO -eq 0 ]
    then
        echo &quot;Iniciandos...&quot;;
        env exabgp.daemon.user=root \
          exabgp.daemon.daemonize=true \
          exabgp.daemon.pid=/var/run/exabgp.pid \
          exabgp.log.destination=/var/log/exabgp.log \
          exabgp /etc/exabgp.conf
        sleep 0.3
        echo -e &quot;ExaBGP [${VERDE} Iniciado ${NC}] &quot;;
    else
        echo -e &quot;ExaBGP já exstá em execuxão. [${VERDE} Ativo ${NC}] &quot;;
    fi
}
 
function stopExaBGP(){
    if [  $PROCESSO -eq 0 ]
    then
        echo -e &quot;ExaBGP não está sendo executado. [${VERMELHO} Parado ${NC}]&quot;;
        
    else 
        echo &quot;Parando...&quot;;
        kill -9 `cat /var/run/exabgp.pid` &amp;&gt;/dev/null
        echo -e &quot;ExaBGP [${VERMELHO} Parado ${NC}] &quot;;
    fi
}

function statusExaBGP(){
    if [  $PROCESSO -eq 0 ]
    then
        echo -e &quot;ExaBGP está [${VERMELHO} Parado ${NC}]&quot;;
    else 
        echo -e &quot;ExaBGP está [${VERDE} Ativo ${NC}]&quot;;
    fi
    echo 
    echo &quot;Logs:&quot;
    tail /var/log/exabgp.log
}

case &quot;$1&quot; in
    start )
        startExaBGP
        ;;
 
    stop )
        stopExaBGP
        ;;
 
    restart )
        stopExaBGP
        sleep 1
        startExaBGP
        ;;
 
    status )
        statusExaBGP      
        ;;
 
    * )
        echo &quot;Opção inválida, use start | stop | restart | status&quot;
        ;;
esac</pre>
<p>De permissão para execução</p>
<pre class="remontti-code"># chmod a+x /etc/init.d/exabgp</pre>
<p>Crie o arquivo de serviço para o programa exabgp.</p>
<pre class="remontti-code"># vim /lib/systemd/system/exabgp.service</pre>
<p>Adicione</p>
<pre class="remontti-code">[Unit]
Description=ExaBGP
After=network.target remote-fs.target

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/etc/init.d/exabgp start
ExecStop=/etc/init.d/exabgp stop
ExecReload=/etc/init.d/exabgp restart
 
[Install]
WantedBy=multi-user.target</pre>
<p>Recarregue a nova definição do serviço:</p>
<pre class="remontti-code"># systemctl daemon-reload</pre>
<p>Ative o novo serviço, e verifique se o mesmo foi ativado</p>
<pre class="remontti-code"># systemctl enable exabgp
# systemctl list-unit-files | grep exabgp</pre>
<p>Reinicie seu servidor</p>
<pre class="remontti-code"># reboot</pre>
<p>Verifique se o exabgp foi carregado na inicialização, e seu peer estabilizou.</p>
<pre class="remontti-code"># systemctl status exabgp</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik.png" data-rel="lightbox-gallery-Gx6gPzGb" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik.png" alt="" width="1639" height="381" class="alignnone size-full wp-image-3894" srcset="https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik.png 1639w, https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik-300x70.png 300w, https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik-1024x238.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik-768x179.png 768w, https://blog.remontti.com.br/wp-content/uploads/2019/12/exabgp_fastnetmon_mikrotik-1536x357.png 1536w" sizes="auto, (max-width: 1639px) 100vw, 1639px" /></a></p>
<p>Para iniciar/reiniciar os exabgp pode usar os seguintes comandos:</p>
<pre class="remontti-code"># systemctl stop exabgp
# systemctl start exabgp
# systemctl restart exabgp</pre>
<p>Para acompanhar a coleta de flows use o comando:</p>
<pre class="remontti-code"># fastnetmon_client</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon.png" data-rel="lightbox-gallery-Gx6gPzGb" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon.png" alt="" width="661" height="610" class="alignnone size-full wp-image-3986" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon.png 661w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon-300x277.png 300w" sizes="auto, (max-width: 661px) 100vw, 661px" /></a></p>
<p>Você vai encontrar tutoriais como integrar com grafana&#8230;. mas para mim isso é perfumaria, o mais legal é ver o processamento sem frescura, e saber que pode ser implementado com uma minimo de hardware, essa mesma analise de flows do gráfico assim que está na casa dos 3GBps de tráfego temos o seguinte uso do hasrdware:<br />
<a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop.png" data-rel="lightbox-gallery-Gx6gPzGb" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop.png" alt="" width="1114" height="277" class="alignnone size-full wp-image-3987" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop.png 1114w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop-300x75.png 300w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop-1024x255.png 1024w, https://blog.remontti.com.br/wp-content/uploads/2020/01/fastnetmon_htop-768x191.png 768w" sizes="auto, (max-width: 1114px) 100vw, 1114px" /></a></p>
<p>Se quiser fazer algum teste, para anunciar uma rotas manualmente user os seguintes comandos:</p>
<pre class="remontti-code"># echo &quot;announce route 100.101.255.200 next-hop 172.31.31.2 community 65001:666&quot; &gt; /var/run/exabgp.cmd</pre>
<p>E para remover:</p>
<pre class="remontti-code"># echo &quot;withdraw route 100.101.255.200 next-hop 172.31.31.2&quot;  &gt; /var/run/exabgp.cmd</pre>
<h3>Acordo de communities com sua operadora</h3>
<p>Não vai adiantar muito você identificar o IP que está tomando o ataque se você não repassar o mesmo para sua operadora e ela o mesmo. Como você identificou o IP que esta recebendo o ataque (ou ate mesmo atacando) o mesmos vai subir na sua tabela de rotas como tipo blackhole, logo seu roteador não vai mais responder para esse IP. <strong>Sim esse IP não terá mais internet </strong>(clientes, servidor&#8230;.) sim não terá! rsrs, por isso é importante receber o alerta, para saber qual medidas realizar. Nas configurações do fastnetmon existe um arquivo de <strong>lista branca /etc/networks_whitelist</strong> se desejar você pode incluir os IPs que não quer que o fastnetmon analise (logo não ira bani-lo) porém você também não vai saber se ele foi atacado, eu prefiro deixar esse networks_whitelist vazio e criar então um filtro no roteador para descartar os IPs que não quero que ele jogue na blackhole, assim eu sou notificado, e se o bicho realmente estiver pegando eu deixo passar o ip do servidor e penso no que vou fazer hehehe.</p>
<p>As grande operadoras normalmente tem uma politica de communities que aceita você repassar prefixos /32 com a communities onde em quase todos os casos é AS:666 ou 65xxx:666, então o que você precisa fazer é primeira mente entrar em contato com a mesma para pegar essas informações, caso ela não saiba do que você está falando manda esse o link  deste tutorial <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<p>Bom, vamos imaginar que sua operadora senha o AS28146 (olha o marketing ai de graça/patrocina eu MH) e seu bloco seja 200.200.200.0/22, como ficaria seu filtro no seu MK? </p>
<pre class="remontti-code">/routing filter
add action=accept  chain=AS28146-IPv4-OUT bgp-communities=65001:666 prefix-length=32 set-bgp-communities=28146:666
add action=accept  chain=AS28146-IPv4-OUT prefix=45.189.228.0/22 prefix-length=22-23
add action=discard chain=AS28146-IPv4-OUT</pre>
<p>Explicando a primiera linha:<br />
<strong>action=accept</strong> &#8211;> aceita<br />
<strong>chain=AS28146-IPv4-OUT</strong> &#8211;> nome do seu filtro<br />
<strong>bgp-communities=65001:666</strong> -> todas as rotas marcadas com a communities=65001:666 (as q o fastnetmon nos enviou)<br />
<strong>prefix-length=32</strong> &#8211;> com prefixo apenas /32<br />
set-bgp-communities=28146:666 &#8211;> seta a communitie que você verificou com sua operadora</p>
<p>Se você quiser descartar algum IP, ex um servidor (como comentei anteriormente) apenas para a operadora você precisa colocar antes das regras (antes da linha 1). Ex servidor 200.200.200.7 quero descartar para não cair na blackhole:</p>
<pre class="remontti-code">/routing filter
add action=discard chain=AS28146-IPv4-OUT prefix=45.189.228.7/32 prefix-length=32 
add action=accept  chain=AS28146-IPv4-OUT bgp-communities=65001:666 prefix-length=32 set-bgp-communities=28146:666
add action=accept  chain=AS28146-IPv4-OUT prefix=45.189.228.0/22 prefix-length=22-23
add action=discard chain=AS28146-IPv4-OUT</pre>
<p>Agora se você simplesmente não quer que seja bloqueado de forma alguma é só add no filtro do peer com o fastnetmon.</p>
<pre class="remontti-code">/routing filter
add action=discard chain=FastNetMon-IN prefix=45.189.228.7/32 prefix-length=32
add action=accept  chain=FastNetMon-IN set-type=blackhole
add action=discard chain=FastNetMon-OUT</pre>
<p>Seria interessante fazer alguns teste de ataques (coisa pequena) de dentro da sua rede e de fora, escolha uma IP que não esteja em uso para tal! Para realizar esse ataque user o a ferramenta criada pelo ekovegeance:<br />
<a href="https://github.com/ekovegeance/DDOS" rel="noopener noreferrer" target="_blank">https://github.com/ekovegeance/DDOS</a></p>
<p>Em um servidor/desktop linux  vai precisar ter instalado os pacotes bash sudo curl netcat hping3 openssl stunnel nmap whois dnsutils.<br />
<a href="https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip">Baixe os arquivos</a>, extraia entre em sua pasta e execute o arquivo ddos.</p>
<pre class="remontti-code">$ wget https://github.com/ekovegeance/DDOS/archive/v1.2.4.zip
$ unzip v1.2.4.zip 
$ cd DDOS-1.2.4/
$ ./ddos</pre>
<p><a href="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" data-rel="lightbox-gallery-Gx6gPzGb" data-rl_title="" data-rl_caption="" title=""><img loading="lazy" decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png" alt="" width="676" height="881" class="alignnone size-full wp-image-3988" srcset="https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos.png 676w, https://blog.remontti.com.br/wp-content/uploads/2020/01/ddos-230x300.png 230w" sizes="auto, (max-width: 676px) 100vw, 676px" /></a></p>
<p>Gostou? Se sentindo mais seguro agora?</p>
<p><strong>Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!</strong><br />
<a href="https://blog.remontti.com.br/doar"><img decoding="async" src="https://blog.remontti.com.br/wp-content/uploads/2019/07/quero-doar-remontti.png" /></a></p>
<p>Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato <a href="https://blog.remontti.com.br/meucontato" rel="noopener noreferrer" target="_blank">clique aqui.</a></p>
<p>Abraço!</p>
<p>O post <a href="https://blog.remontti.com.br/3981">Proteja-se de ataques DoS/DDoS mitigando com FastNetMon e anuncie os prefixos atacados (blackholes) para sua operadora, usando Mikrotik :-)</a> apareceu primeiro em <a href="https://blog.remontti.com.br">Remontti</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.remontti.com.br/3981/feed</wfw:commentRss>
			<slash:comments>47</slash:comments>
		
		
			</item>
	</channel>
</rss>
