segunda-feira, 9 de abril de 2018

BGP - BGP no Mikrotik (IX): Filtros (muito boa explicação)


Introdução


Naturalmente, filtros, neste texto são equivalentes a filtros no BGP, exclusivamente. Outra informação importante é de que todos os Mikrotiks foram atualizados na Versão 5.1.
Por outro lado, uma recomendação importante e pouco usada: ao se estabelecer empareamentos BGP, implemente primeiro os filtros, para depois estabelecer o empareamento propriamente dito. Porque? Porque se evitará de poluir a tabela de roteamento do roteador eliminando a necessidade de reinicializá-lo.
Para o que segue, iremos nos referenciar à Figura 1, abaixo, última topologia vista no artigo [Braga, 2011]1.


Figura 1: Empareamento independente do MK6 (AS65536) ao MK2 (AS65532).

Como filtrar no Mikrotik


Os exemplos preliminares de filtros concentrarão no componente MK8.6, da topologia mostrada na Figura 1, acima. Filtros do BGP no Mikrotik, são feitos no caminho mostrado na Figura 2, via Winbox.


Figura 2: Onde os filtros são feitos, no Mikrotik.

A janela “Route Filters” é onde estarão os filtros. Quando clicamos no “+”, aparece a janela de inclusão dos filtros, que possui 4 abas, vistas nas Figuras 3 e 4, que seguem.


Figura 3: Abas “Matches” e “BGP”


Figura 4: Abas “Actions” e “BGP Actions”

Como pode-se verificar são muitas as alternativas que giram em torno de Filtros, o que permite uma quantidade enorme de combinações. Na primeira aba, o parâmetro “Chain” deve indicar o que estamos filtrando. Os principais filtros estão associados ao emparemento que fazemos. A Figura 5 abaixo, exibe a maneira como indicamos, no empareamento, quais os filtros associados a ele, isto é, filtros de entrada e filtros de saída. A primeira parte da Figura 5 mostra o empareamento com o MK2, sem nenhuma indicação de filtros, enquanto que a segunda aba exibe o nome dados aos filtros de entrada e de saída, respectivamente, “MK2_entra” e “MK2_sai”. Uma vez salva, a aba “Matches” (Figura 3) irá mostrar estas duas identificações, no “Chain”.


Figura 5: Dando nomes aos filtros de entrada e saída, associados ao empareamento.

O estado atual do MK8.6

A listagem abaixo mostra o estado do MK8.6 em relação à tabela de rotas e aos anúncios que ele está fazendo.
[admin@MK8-6] > ip route print                  
 #      DST-ADDRESS        PREF-SRC        GATEWAY            DISTANCE
 0 ADb  10.201.0.0/23                      10.202.0.13        20 
 1 ADb  10.202.0.0/23                      10.202.0.13        20 
 2 ADC  10.202.0.12/30     10.202.0.14     MK2                0 
 3 ADb  10.203.0.0/23                      10.202.0.13        20
 4 ADb  10.204.0.0/23                      10.202.0.13        20
 5 ADb  10.205.0.0/23                      10.202.0.13        20
 6 ADb  10.206.0.0/23                      10.202.0.13        20
 7 ADb  10.207.0.0/23                      10.202.0.13        20
 8 ADb  10.226.0.0/24                      10.202.0.13        20
 9 ADb  10.226.1.0/24                      10.202.0.13        20 
10 ADC  10.236.0.1/32      10.236.0.1      LoopBack           0        
[admin@MK8-6] > routing bgp advertisements print
PEER     PREFIX               NEXTHOP          AS-PATH 
MK2      10.236.0.0/23        10.202.0.14 

Filtrando o recebimento de anúncios dos próprios blocos


Filtrar a entrada dos próprios blocos não faz muito sentido já que o mecanismo de prevenção de laços infinitos do BGP já faz isso e, que pode ser visto nas rotas do próprio MK8.6 e nos anúncios de MK2 para MK.6, mostrado na relação a seguir:

[admin@MK2] > routing bgp advertisements print peer=MK8.6 
PEER     PREFIX               NEXTHOP          AS-PATH
MK8.6    10.201.0.0/23        10.202.0.13      65531
MK8.6    10.206.0.0/23        10.202.0.13      65537,65536
MK8.6    10.204.0.0/23        10.202.0.13      65531,65534 
MK8.6    10.226.1.0/24        10.202.0.13      65537,65536
MK8.6    10.205.0.0/23        10.202.0.13      65531,65534,65535
MK8.6    10.207.0.0/23        10.202.0.13      65537
MK8.6    10.203.0.0/23        10.202.0.13      65533
MK8.6    10.226.0.0/24        10.202.0.13      65537,65536 
MK8.6    10.202.0.0/23        10.202.0.13

Entretando, volta e meia ouvimos: “Filtre seus blocos, na entrada!”. Para efeitos ditáticos, vamos fazer isso. A Figura 6 mostra como e os respectivos resultados mostrando, como foi inócuo tal filtro.


Figura 6: Filtro inócuo de entrada e os resultados.
Em 1 a indicação da existência do filtro, mostrando a “Chain” (MK2_entra), o bloco filtrado e a ação do filtro (“discard”). Em 2 e 3, as abas do filtro, como foram preenchidas. Em 4, a tela do terminal, listando os resultados para efeitos de comparação.
Outro filtro importante de entrada é não deixar entrar a rota padrão, embora possa ver que MK2, único vizinho de MK8.6, não anuncia a rota padrão. Esta decisão é do administrador do MK8.6. Um bom administrador vê que isso não precisa ser feito. Mas, o administrador do MK2 pode, involuntariamente, anunciar a rota padrão. Copiando o primeiro filtro e alterando somente o bloco para 0.0.0.0/0, temos o resultado da Figura 7.


Figura 7: Filtrando a rota padrão, na entrada.

Filtrando a saída


A recomendação é de imediato: somente deixe passar os blocos que serão anunciados. Isso inclui o bloqueio da rota padrão, para que não haja efeitos involuntários. Mesmo que a rota padrão não esteja sendo usada, como é o caso do MK8.6 (ela pode vir a ser usada a qualquer momento). Antes de fazer este bloqueio, vamos confirmar o funcionamento de filtros, pois não vimos isso ainda. Se fizermos o bloqueio do bloco do MK8.6, ilustramos o fato. Vejamos na Figura 8, onde uma nova cópia do primeiro filtro é suficiente, desde que mudemos a “Chain”.


Figura 8: Filtrando a saída do próprio bloco.

O bloco não aparece mais na listagem de anúncios, mostrado no terminal, abaixo da janela de filtros. Então, funciona! Mas este filtro não interessa, exceto pelo efeito didático. Na realidade, tal filtro é indevido, pois impede a divulgação mais importante e desejada pelo administrador do MK8.6! Vamos então ao que interessa, bloqueando a rota padrão e tudo mais, exceto o bloco que MK8.6 quer anunciar. A técnica no Mikrotik é bloquear tudo, menos o bloco a ser anunciado. Na Figura 9, mostra o resultado, usando o próprio bloqueio de efeito didático. Um parâmetro na primeira aba do filtro, chamado de ‘Invert Matcher”, faz este trabalho. Como o bloco está com a ação “discard”, o Mikrotik irá bloquear tudo, menos o bloco definido em “Prefix”. Assim, até a rota padrão foi bloqueada!


Figura 9: Filtrando tudo, menos o bloco que se deseja anunciar.

Uma outra maneira de fazer isso é usando três filtros: o primeiro bloqueia a rota padrão, o segundo libera o bloco e o terceiro, bloqueia todo o resto (sem especificar qualquer coisa no campo Prefix.

Controlando os anúncios com o Networks


Uma questão a lembrar é o uso do Prefix Length nos filtros que juntamente com o “Networks”, flexibiliza as regras de filtragem.
Suponha que o AS tenha um bloco IPv4, /20 (Por exemplo, x.y.n.0/20). E que no Networks inclua-se somente um /24 (ex. x.y.zj.0/20, n <= j <= n+15), pois é o que se deseja anunciar em uma determinada conexão BGP. Então, o filtro abaixo, garante que somente o /24 será anunciado:
Prefix => x.y.n.0/20
Prefix Length => 20-24
Se, entretanto, o Prefix Length não for utilizado, todo o bloco /20 será anunciado e ele deverá estar representado no Networks. A variedade de alternativas implica na necessidade de se planejar os filtros com esmerado cuidado.
Vale lembrar que o BGP de trânsito (ou de transporte) deverá ter a opção Redistribute Other BGP, marcada em Instances (também, distribui prefixos entre instâncias). Em todos os seus empareamentos, o Nexthop Choice deve ser force self evitando um grave erro. Em anúncios de terceiros, para um PTT, o Next-Hop estará errado ao indicar o IP do roteador do consumidor de trânsito (ou de transporte) e, não o do roteador que oferece o trânsito (ou o transporte), como seria o correto. Neste caso, a punição pode ser a desconexão com o ATM (o pessoal do PTT.br avisa antes…). Finalmente, deve-se lembrar que o Client to Client Reflection, ainda em Instances, distribui prefixos entre os membros (empareados), de uma mesma instância.
Há algumas variações sobre a questão do force self. Basicamente ele se aplica somente ao último empareado do trânsito (ou do transporte). Muito embora, se existe roteadores intermediários, o correto é que cada um deles passe o Next-Hop de forma correta. Isto implica em uma aparente regra: sempre use o force self. E teste, quando no PTT, via o LG. Quando em um trânsito somente, faça um traceroute de fora, via um outro LG qualquer e veja o estado do caminho.

Assuntos relacionados, neste blogue


  1. BGP no Mikrotik: Dois operadores de trânsito. Versão anterior a este artigo.
  2. BGP em Mikrotik – Parte I
  3. BGP em Mikrotik – Parte II
  4. BGP em Mikrotik – Parte III
  5. BGP no Mikrotik (IV): Anúncios e rotas no FFE
  6. BGP no Mikrotik (V): Analisando anúncios de implementações de BGP
  7. BGP no Mikrotik (VI): Estabelecendo enlaces (rotas) backup
  8. BGP no Mikrotik (VII): Mesmo AS em empareamentos remotos e independentes
  9. BGP no Mikrotik (VIII): Alterando a política de roteamento
  10. Atributos do BGP
  11. BGP: Tabelas de roteamento
  12. Convergência, no BGP
  13. A Seta IPv6: Preparando para trabalhar com IPv6 no Mikrotik
  14. Conectando-se a um PTT, em Mikrotik (IPv4 e IPv6)
  15. BGP: topologias, abstrações, eBGP e iBGP (Parte 1)

Referências


  1. Braga, J., BGP no Mikrotik (VII): Mesmo AS em empareamentos remotos e independentes. Infraestrutura da Internet. 2011. Disponível em: https://juliaobraga.wordpress.com/2011/04/04/bgp-no-mikrotik-vii-mesmo-as-em-empareamentos-remotos-e-independentes/. Acessado em 15/04/2011 11:13.


fonte: https://ii.blog.br/2011/04/18/bgp-no-mikrotik-ix-filtros/ 

0 comentários: