Jump to content

Recommended Posts

Posted

Имеется AS 1234 и сеть 1.2.3.0/24.

Допустим, на один из IP-адресов (1.2.3.100) снаружи идёт мощный DDoS.

Хочется, чтобы этот трафик резался на бордере магистрального оператора (AS 5678)

и не забивал наш входящий канал.

 

Для этих целей у магистрала есть community 666:

We have all the common communities configured in our network (Local preference, prepends, blackhole) and you can use them.

5678:666 Don't announce to customers and peers, let upstreams blackhole it (only /32 accepted)

 

На циске клиентская часть настраивалась бы так:

route-map BGP-BLACKHOLE permit 5
match tag 666
set community 5678:666 additive
!
router bgp YYY
  redistribute static route-map BGP-BLACKHOLE
  neighbor <UPLINK> send-community
!
ip route 192.168.66.6 255.255.255.255 Null0 tag 666

Взято отсюда: http://habrahabr.ru/blogs/infosecurity/91574/

 

Проблема в том, что Quagga не поддерживает теги.

Пытаюсь сделать так:

router bgp 1234
  bgp router-id 1.2.3.4
  bgp log-neighbor-changes
  network 1.2.3.0/24
  neighbor 5.6.7.8 remote-as 5678
  neighbor 5.6.7.8 description Uplink1-BGP1
  neighbor 5.6.7.8 interface eth0
  neighbor 5.6.7.8 next-hop-self
  neighbor 5.6.7.8 distribute-list deny-any in
  neighbor 5.6.7.8 route-map uplink1-out out
!
access-list deny-any deny any
!
ip prefix-list blackhole1-list seq 1 permit 1.2.3.100/32
ip prefix-list blackhole1-list seq 9999 deny any
!
route-map uplink1-out permit 10
  match ip address prefix-list blackhole1-list
  set community 5678:666
!
route-map uplink1-out permit 100

Образец для подражания: http://forum.mikrotik.com/viewtopic.php?f=2&t=23390

 

Однако 1.2.3.100 продолжает пинговаться извне.

Вопрос: что нужно исправить в настройках?

Или всё верно и надо выяснять у магистрала, почему не blackhole не срабатывает?

Posted

На самом роутере с кваггой есть этот самый маршрут /32, который анонсируется в апстрим ?

 

sh ip bgp nei 5.6.7.8 adv | i 1.2.3.100 -- есть там анонс 1.2.3.100/32 ?

 

Т.е. надо чтобы анонс этого префикса точно уходил в апстрим с указанными атрибутами (community).

 

принимает ли ваш аптрим /32 ? На сколько я знаю, везде стоят фильтры и заанонсить префикс более специфичный чем /24 нельзя - не пропустят фильтры.

Posted

принимает ли ваш аптрим /32 ? На сколько я знаю, везде стоят фильтры и заанонсить префикс более специфичный чем /24 нельзя - не пропустят фильтры.

как бы

only /32 accepted
Posted

Имеется AS 1234 и сеть 1.2.3.0/24.

Допустим, на один из IP-адресов (1.2.3.100) снаружи идёт мощный DDoS.

Хочется, чтобы этот трафик резался на бордере магистрального оператора (AS 5678)

и не забивал наш входящий канал.

 

Для этих целей у магистрала есть community 666:

We have all the common communities configured in our network (Local preference, prepends, blackhole) and you can use them.

5678:666 Don't announce to customers and peers, let upstreams blackhole it (only /32 accepted)

 

На циске клиентская часть настраивалась бы так:

route-map BGP-BLACKHOLE permit 5
match tag 666
set community 5678:666 additive
!
router bgp YYY
  redistribute static route-map BGP-BLACKHOLE
  neighbor <UPLINK> send-community
!
ip route 192.168.66.6 255.255.255.255 Null0 tag 666

Взято отсюда: http://habrahabr.ru/blogs/infosecurity/91574/

 

Проблема в том, что Quagga не поддерживает теги.

Пытаюсь сделать так:

router bgp 1234
  bgp router-id 1.2.3.4
  bgp log-neighbor-changes
  network 1.2.3.0/24
  neighbor 5.6.7.8 remote-as 5678
  neighbor 5.6.7.8 description Uplink1-BGP1
  neighbor 5.6.7.8 interface eth0
  neighbor 5.6.7.8 next-hop-self
  neighbor 5.6.7.8 distribute-list deny-any in
  neighbor 5.6.7.8 route-map uplink1-out out
!
access-list deny-any deny any
!
ip prefix-list blackhole1-list seq 1 permit 1.2.3.100/32
ip prefix-list blackhole1-list seq 9999 deny any
!
route-map uplink1-out permit 10
  match ip address prefix-list blackhole1-list
  set community 5678:666
!
route-map uplink1-out permit 100

Образец для подражания: http://forum.mikrotik.com/viewtopic.php?f=2&t=23390

 

Однако 1.2.3.100 продолжает пинговаться извне.

Вопрос: что нужно исправить в настройках?

Или всё верно и надо выяснять у магистрала, почему не blackhole не срабатывает?

 

в zebra сделайте маршрут

ip ro 1.2.3.100 null0

Posted

принимает ли ваш аптрим /32 ? На сколько я знаю, везде стоят фильтры и заанонсить префикс более специфичный чем /24 нельзя - не пропустят фильтры.

как бы

only /32 accepted

 

Вы не показали, если в ваших анонсах в сторону апстрима этот /32 префикс.

Posted

Вы не показали, если в ваших анонсах в сторону апстрима этот /32 префикс.

Т.е.

router bgp 1234

network 1.2.3.0/24

недостаточно?

Надо явно прописать сюда же "network 1.2.3.100/32"?

 

UPD. Сделал так:

conf t
router bgp 1234
 network 1.2.3.100/32 route-map blackhole
 exit
route-map blackhole permit 10
 set community 5678:666
<Ctrl+Z>

..но не помогло.

Posted

в zebra сделайте маршрут

ip ro 1.2.3.100 null0

Насколько я понимаю, кроме него в bgp надо добавить "redistribute static",

но тогда аплинку достанется список всех моих внутренних маршрутов.

В примере для Циски на нужные маршруты вешается тег 666, но Quagga теги не поддерживает.

 

Вы не показали, если в ваших анонсах в сторону апстрима этот /32 префикс.

border-BGP# cl ip bgp * soft
border-BGP# show ip bgp neighbors 5.6.7.8 advertised-routes
BGP table version is 0, local router ID is 1.2.3.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
             r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network       Next Hop   Metric  LocPrf  Weight Path
*> 1.2.3.0/24    5.6.7.8         0           32768 i
*> 1.2.3.100/32  5.6.7.8         0           32768 i

Total number of prefixes 2
border-BGP#

Posted (edited)

Проблема в том, что Quagga не поддерживает теги.

 

А если попробовать через простой acl:

match ip address access_list

 

Если верить мануалу то:

match ip address prefix-list word

относится к RIP route-map

http://quagga.net/docs/docs-info.php#IDX145

Edited by ktoto
Posted

А если попробовать через простой acl:

match ip address access_list

Где? Условием в "route-map blackhole"?

Зачем, если этот route-map уже прикрепляется к "network 1.2.3.100/32"?

Posted

А если попробовать через простой acl:

match ip address access_list

Где? Условием в "route-map blackhole"?

Зачем, если этот route-map уже прикрепляется к "network 1.2.3.100/32"?

 

1. редистрибьютить статик в бгп, помечая маршруты комьюнити, по комьюнити фильтровать анонсы в пиров ?

 

2. редистрибьютить статик в бгп через acl ? (В случае если у вас совсем простая схема)

Posted

Делюсь

 

router bgp XXXXX
bgp router-id Y.Y.Y>Z
network MY.MY.MY.MY/19
redistribute static route-map BLACKHOLE
neighbor Y.Y.Y.Y remote-as EEEEE
neighbor Y.Y.Y.Y description PROBE
neighbor Y.Y.Y.Y ebgp-multihop 8
neighbor Y.Y.Y.Y update-source Y.Y.Y.Z
neighbor Y.Y.Y.Y soft-reconfiguration inbound
neighbor Y.Y.Y.Y filter-list 1 in
!
ip as-path access-list 1 deny .*
!
route-map BLACKHOLE permit 10
description Level3 blackhole
match ip address prefix-list BLACKHOLE
set ip next-hop 127.0.0.1
set local-preference 10
set community XXXX:9999 additive
!
line vty
!

 

Скрипт для блокировки IP

#!/bin/sh
SEQ=`cat /tmp/blockseq`
let SEQ+=1
echo -ne $SEQ >/tmp/blockseq
echo $SEQ
echo -ne "conf t\nip prefix-list BLACKHOLE seq $SEQ permit $1/32\nip route $1/32 Null0\nend\nclear ip bgp * soft\n"|vtysh
echo -ne "wr m\n"|vtysh

Posted

redistribute static route-map BLACKHOLE

После "redistribute static" (даже без route-map) BGPd в "show ip bgp neighbor 5.6.7.8 adv"

показывает только сети из "router bgp 1.2.3.4 / network ...".

 

Того, что введено в Зебре и в Линуксе через "ip route ...", в этом списке нет.

Зебра линуксовые маршруты видит.

 

echo -ne "conf t\nip prefix-list BLACKHOLE seq $SEQ permit $1/32\nip route $1/32 Null0\nend\nclear ip bgp * soft\n"|vtysh

Подразумевается, что zebra и bgpd сами разберутся, какая команда кому предназначена?

Posted

redistribute static route-map BLACKHOLE

После "redistribute static" (даже без route-map) BGPd в "show ip bgp neighbor 5.6.7.8 adv"

показывает только сети из "router bgp 1.2.3.4 / network ...".

 

Того, что введено в Зебре и в Линуксе через "ip route ...", в этом списке нет.

Зебра линуксовые маршруты видит.

 

echo -ne "conf t\nip prefix-list BLACKHOLE seq $SEQ permit $1/32\nip route $1/32 Null0\nend\nclear ip bgp * soft\n"|vtysh

Подразумевается, что zebra и bgpd сами разберутся, какая команда кому предназначена?

 

Версия quagga у вас последняя ?

 

Подразумевается, что vtysh - это такая консолька, где все составляющие софтинкииз квагги рулятся одновременно из одного места. Там всё само куда надо пропишется. при сборке квагги vtysh надо включать, раньше так было, сейчас не знаю, руками не собираю давно. Процес сборки автоматизирован, давно не сморел чё внутри.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.