Nesta página
Exemplo: Encaminhamento de pacotes para a interface de descarte
Este exemplo mostra como usar o roteamento de descarte para mitigar ataques de negação de serviço (DoS), proteger recursos vitais de rede contra ataques externos, fornecer serviços de proteção aos clientes para que cada cliente possa iniciar sua própria proteção e registrar e rastrear tentativas de DoS.
Requisitos
Nenhuma configuração especial além da inicialização do dispositivo é necessária antes de configurar este exemplo.
Visão geral
No roteamento de descarte, os roteadores são configurados com regras que não permitem que milhões de solicitações em um curto período de tempo sejam enviadas para o mesmo endereço. Se muitas solicitações forem recebidas em um curto período de tempo, o roteador simplesmente descarta as solicitações sem encaminhá-las. As solicitações são enviadas a um roteador que não encaminha os pacotes. As rotas problemáticas são às vezes referidas como rotas de descarte ou rotas black-holed. Os tipos de rotas que devem ser descartadas são identificados como ataques a clientes de pares ou outros clientes, ataques de clientes a pares ou outros clientes, controladores de ataque, que são hosts que fornecem instruções de ataque e espaços de endereço não alocados, conhecidos como bogons ou endereços IP inválidos.
Após a tentativa de ataque ser identificada, os operadores podem implementar uma configuração para mitigar o ataque. Uma maneira de configurar o roteamento de descarte no Junos OS é criar uma rota estática de descarte para cada salto próximo usado para rotas de descarte. Uma rota estática de descarte usa a opção discard
.
Por exemplo:
user@host# show routing-options
static {
route 192.0.2.101/32 discard;
route 192.0.2.103/32 discard;
route 192.0.2.105/32 discard;
}
user@host> show route protocol static terse inet.0: 3 destinations, 3 routes (3 active, 0 holddown, 0 hidden) + = Active Route, - = Last Active, * = Both A V Destination P Prf Metric 1 Metric 2 Next hop AS path * ? 192.0.2.101/32 S 5 Discard * ? 192.0.2.103/32 S 5 Discard * ? 192.0.2.105/32 S 5 Discard
Outra estratégia, que é o foco principal deste exemplo, é usar a política de roteamento e a interface de descarte. Nessa abordagem, a interface de descarte contém o próximo salto que você está atribuindo às rotas nulas. Uma interface de descarte pode ter apenas uma unidade lógica (unidade 0), mas você pode configurar vários endereços IP na unidade 0.
Por exemplo:
user@host# show interfaces dsc
unit 0 {
family inet {
address 192.0.2.102/32 {
destination 192.0.2.101;
}
address 192.0.2.104/32 {
destination 192.0.2.103;
}
address 192.0.2.106/32 {
destination 192.0.2.105;
}
}
}
user@host> show interfaces terse dsc b Interface Admin Link Proto Local Remote dsc up up dsc.0 up up inet 192.0.2.102 --> 192.0.2.101 192.0.2.104 --> 192.0.2.103 192.0.2.106 --> 192.0.2.105
A vantagem de usar uma interface de descarte em vez de usar rotas estáticas de descarte é que a interface de descarte permite que você configure e atribua filtros à interface para contagem, registro e amostragem do tráfego. Isso é demonstrado neste exemplo.
Para realmente descartar pacotes, é necessário uma política de roteamento anexada às sessões bgp. Para localizar rotas elegíveis para descartes, você pode usar um filtro de rota, uma lista de acesso ou um valor de comunidade BGP.
Por exemplo, veja como você usaria um filtro de rota:
Filtro de rota
protocols { bgp { import blackhole-by-route; } } policy-options { policy-statement blackhole-by-route { term specific-routes { from { route-filter 10.10.10.1/32 exact; route-filter 10.20.20.2/32 exact; route-filter 10.30.30.3/32 exact; route-filter 10.40.40.4/32 exact; } then { next-hop 192.0.2.101 } } } }
Figura 1 mostra a rede de amostra.

O exemplo inclui três roteadores com sessões BGP (EBGP) externas estabelecidas.
O dispositivo R1 representa o dispositivo de ataque. O dispositivo R3 representa o roteador mais próximo do dispositivo que está sendo atacado. O dispositivo R2 mitiga o ataque encaminhando pacotes para a interface de descarte.
O exemplo mostra um filtro de saída aplicado à interface de descarte.
Um problema com o uso de um único filtro de rota nulo é a visibilidade. Todos os pacotes de descarte aumentam o mesmo contador. Para ver quais categorias de pacotes estão sendo descartadas, use o uso de classe de destino (DCU) e associe uma classe definida pelo usuário com cada comunidade de rotas nulas. Em seguida, consulte as aulas de DCU em um filtro de firewall. Para exemplos relacionados, veja Exemplo: Prefixos de origem e destino de agrupamento em uma classe de encaminhamento e Exemplo: Configuração de um filtro de limitação de taxa com base na classe de destino.
Em comparação com o uso de filtros de rota e listas de acesso, usar um valor da comunidade é a abordagem menos difícil administrativamente e mais escalável. Portanto, esta é a abordagem mostrada neste exemplo.
Por padrão, o próximo salto deve ser igual ao endereço peer BGP (EBGP) externo. Alterar o próximo salto para serviços de rota nulos requer que o recurso multihop seja configurado nas sessões de EBGP.
Configuração rápida da CLI mostra a configuração de todos os dispositivos em Figura 1.
A seção #configuration756__policy-discard-st descreve as etapas do dispositivo R2.
Configuração
Procedimento
Configuração rápida da CLI
Para configurar este exemplo rapidamente, copie os seguintes comandos, cole-os em um arquivo de texto, remova qualquer quebra de linha, altere os detalhes necessários para combinar com a configuração da sua rede e, em seguida, copie e cole os comandos no CLI no nível de [edit]
hierarquia.
Dispositivo R1
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.1/30 set interfaces lo0 unit 0 family inet address 192.168.0.1/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.0.0.2 set routing-options autonomous-system 100
Dispositivo R2
set interfaces fe-1/2/0 unit 0 family inet address 10.0.0.2/30 set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.1/30 set interfaces dsc unit 0 family inet filter output log-discard set interfaces dsc unit 0 family inet address 192.0.2.102/32 destination 192.0.2.101 set interfaces lo0 unit 0 family inet address 192.168.0.2/32 set protocols bgp import blackhole-policy set protocols bgp group ext type external set protocols bgp group ext multihop set protocols bgp group ext export dsc-export set protocols bgp group ext neighbor 10.0.0.1 peer-as 100 set protocols bgp group ext neighbor 10.1.0.2 peer-as 300 set policy-options policy-statement blackhole-policy term blackhole-communities from community blackhole-all-routers set policy-options policy-statement blackhole-policy term blackhole-communities then next-hop 192.0.2.101 set policy-options policy-statement dsc-export from route-filter 192.0.2.101/32 exact set policy-options policy-statement dsc-export from route-filter 192.0.2.102/32 exact set policy-options policy-statement dsc-export then community set blackhole-all-routers set policy-options policy-statement dsc-export then accept set policy-options community blackhole-all-routers members 100:5555 set routing-options static route 192.0.2.102/32 next-hop 192.0.2.101 set routing-options autonomous-system 200 set firewall filter log-discard term one then count counter set firewall filter log-discard term one then log
Dispositivo R3
set interfaces fe-1/2/1 unit 0 family inet address 10.1.0.2/30 set interfaces lo0 unit 0 family inet address 192.168.0.3/32 set interfaces lo0 unit 0 family inet address 192.0.2.102/32 set protocols bgp group ext type external set protocols bgp group ext peer-as 200 set protocols bgp group ext neighbor 10.1.0.1 set routing-options autonomous-system 300
Procedimento passo a passo
O exemplo a seguir exige que você navegue por vários níveis na hierarquia de configuração. Para obter instruções sobre como fazer isso, veja Use o editor de CLI no modo de configuração no Guia de usuário do Junos OS CLI.
Para configurar o dispositivo R2:
Crie as interfaces do roteador.
[edit interfaces] user@R2# set fe-1/2/0 unit 0 family inet address 10.0.0.2/30 user@R2# set fe-1/2/1 unit 0 family inet address 10.1.0.1/30 user@R2# set lo0 unit 0 family inet address 192.168.0.2/32
Configure um filtro de firewall que corresponda a todos os pacotes e contagens e registre os pacotes.
[edit firewall filter log-discard term one] user@R2# set then count counter user@R2# set then log
Crie uma interface de descarte e aplique o filtro de firewall de saída.
Os filtros de firewall de entrada não têm impacto neste contexto.
[edit interfaces dsc unit 0 family inet] user@R2# set filter output log-discard user@R2# set address 192.0.2.102/32 destination 192.0.2.101
Configure uma rota estática que envia o próximo salto para o endereço de destino especificado na interface de descarte.
[edit routing-options static] user@R2# set route 192.0.2.102/32 next-hop 192.0.2.101
Configure o peering BGP.
[edit protocols bgp ] user@R2# set group ext type external user@R2# set group ext multihop user@R2# set group ext neighbor 10.0.0.1 peer-as 100 user@R2# set group ext neighbor 10.1.0.2 peer-as 300
Configure as políticas de roteamento.
[edit policy-options policy-statement blackhole-policy term blackhole-communities] user@R2# set from community blackhole-all-routers user@R2# set then next-hop 192.0.2.101 [edit policy-options policy-statement dsc-export] user@R2# set from route-filter 192.0.2.101/32 exact user@R2# set from route-filter 192.0.2.102/32 exact user@R2# set then community set blackhole-all-routers user@R2# set then accept [edit policy-options community blackhole-all-routers] user@R2# set members 100:5555
Aplicar as políticas de roteamento.
[edit protocols bgp ] user@R2# set import blackhole-policy user@R2# set group ext export dsc-export
Configure o número do sistema autônomo (AS).
[edit routing-options] user@R2# set autonomous-system 200
Resultados
A partir do modo de configuração, confirme sua configuração emitindo comandos show interfaces
show routing-options
show protocols
show policy-options
e show firewall
comandos. Se a saída não exibir a configuração pretendida, repita as instruções neste exemplo para corrigir a configuração.
[edit] user@R2# show interfaces fe-1/2/0 { unit 0 { family inet { address 10.0.0.2/30; } } } fe-1/2/1 { unit 0 { family inet { address 10.1.0.1/30; } } } dsc { unit 0 { family inet { filter { output log-discard; } address 192.0.2.102/32 { destination 192.0.2.101; } } } } lo0 { unit 0 { family inet { address 192.168.0.2/32; } } }
user@R2# show protocols bgp { import blackhole-policy; group ext { type external; multihop; export dsc-export; neighbor 10.0.0.1 { peer-as 100; } neighbor 10.1.0.2 { peer-as 300; } } }
user@R2# show policy-options policy-statement blackhole-policy { term blackhole-communities { from community blackhole-all-routers; then { next-hop 192.0.2.101; } } } policy-statement dsc-export { from { route-filter 192.0.2.101/32 exact; route-filter 192.0.2.102/32 exact; } then { community set blackhole-all-routers; accept; } } community blackhole-all-routers members 100:5555;
user@R2# show routing-options static { route 192.0.2.102/32 next-hop 192.0.2.101; } autonomous-system 200;
user@R2# show firewall filter log-discard { term one { then { count counter; log; } } }
Se você terminar de configurar o dispositivo, entre no commit
modo de configuração.
Verificação
Confirme se a configuração está funcionando corretamente.
- Limpar os contadores de firewall
- Pingando no endereço 192.0.2.101
- Verificando o filtro de saída
- Verificando o atributo da comunidade
Limpar os contadores de firewall
Propósito
Libere os contadores para ter certeza de que está começando de um estado zero (0) conhecido.
Ação
A partir do Dispositivo R2, execute o
clear firewall
comando.user@R2> clear firewall filter log-discard
A partir do Dispositivo R2, execute o
show firewall
comando.user@R2> show firewall filter log-discard Filter: /log-discard Counters: Name Bytes Packets counter 0 0
Pingando no endereço 192.0.2.101
Propósito
Envie pacotes para o endereço de destino.
Ação
A partir do Dispositivo R1, execute o ping
comando.
user@R1> ping 192.0.2.101 PING 192.0.2.101 (192.0.2.101): 56 data bytes ^C --- 192.0.2.101 ping statistics --- 4 packets transmitted, 0 packets received, 100% packet loss
Significado
Como esperado, a solicitação de ping falha e nenhuma resposta é enviada. Os pacotes estão sendo descartados.
Verificando o filtro de saída
Propósito
Verifique se o filtro de firewall do Dispositivo R2 está funcionando corretamente.
Ação
A partir do Dispositivo R2, insira o show firewall filter log-discard
comando.
user@R2> show firewall filter log-discard Filter: log-discard Counters: Name Bytes Packets counter 336 4
Significado
Como esperado, o contador está sendo incrementado.
O pacote de ping transporta mais 20 bytes de sobrecarga IP, bem como 8 bytes de cabeçalho ICMP.
Verificando o atributo da comunidade
Propósito
Verifique se a rota está sendo marcada com o atributo da comunidade.
Ação
A partir do Dispositivo R1, insira o show route extensive
comando, usando o endereço vizinho para Dispositivo R2, 192.0.2.101.
user@R1> show route 192.0.2.101 extensive inet.0: 4 destinations, 4 routes (4 active, 0 holddown, 0 hidden) 192.0.2.101/32 (1 entry, 1 announced) TSI: KRT in-kernel 192.0.2.101/32 -> {10.0.0.2} *BGP Preference: 170/-101 Next hop type: Router, Next hop index: 684 Address: 0x94141d8 Next-hop reference count: 2 Source: 10.0.0.2 Next hop: 10.0.0.2 via fe-1/2/0.0, selected Session Id: 0x8000a State: <Active Ext> Local AS: 100 Peer AS: 200 Age: 53:03 Validation State: unverified Task: BGP_200.10.0.0.2+63097 Announcement bits (1): 2-KRT AS path: 200 I Communities: 100:5555 Accepted Localpref: 100 Router ID: 192.168.0.2
Significado
Como esperado, quando o Dispositivo R2 anuncia a rota 192.0.2.101 para o Dispositivo R1, o Dispositivo R2 adiciona a tag da comunidade 100:5555.