You are currently viewing MikroTik v7.18+ BGP – Част 5: tricks && tips

MikroTik v7.18+ BGP – Част 5: tricks && tips

Изключването на connection tracking (/ip firewall connection tracking set enabled=no) на BGP граничния маршрутизатор в MikroTik има няколко ключови предимства, особено когато става въпрос за производителност, мащабируемост и ефективност. Ето защо е силно препоръчително:


MikroTik не е stateful firewall, предназначен за огромен трафик, особено когато работи като чист BGP маршрутизатор.
Ако connection tracking е включен, всяко TCP, UDP, ICMP или друг трафик преминава през conntrack таблицата, което може да:

  • Забави обработката на пакетите.
  • Увеличи натоварването на CPU (особено при 1000+ клиенти).
  • Претовари conntrack таблицата, ако има голям брой нови сесии на секунда.

👉 Изключването на connection tracking намалява значително CPU натоварването и позволява на MikroTik да се фокусира върху чисто маршрутизиране на BGP трафика.


  • Ако conntrack е включен, всеки нов пакет трябва да бъде асоцииран с вече съществуваща сесия или създаден като нова сесия.
  • Това води до допълнителна обработка, особено при NAT или firewall rules, които зависят от stateful логика.
  • В резултат на това latency (забавянето) на пакетите нараства, което е критично за BGP.

👉 Изключването на conntrack води до директна обработка на пакетите без излишни проверки, което значително намалява latency.


BGP маршрутизаторът обикновено не трябва да прави NAT или stateful firewall проверки, защото:

  • Не защитава крайни клиенти.
  • Не трябва да поддържа NAT сесии.
  • Работи само с статични маршрути и BGP маршрути.

👉 BGP рутерите са чисти Layer 3 маршрутизатори, които само предават трафик, без да следят състоянието на връзките.


  • Ако се използва само RAW firewall (/ip firewall raw), няма нужда от conntrack.
  • RAW правилата работят още преди пакетът да влезе в conntrack таблицата, което означава, че могат да блокират трафик по-бързо и с по-малко CPU натоварване.

👉 Изключването на conntrack елиминира ненужна обработка, а RAW правилата продължават да функционират без проблеми.


При голям брой входящи връзки (например DDoS атака с много малки пакети), conntrack таблицата може да бъде:

  • Препълнена, което ще доведе до спиране на новите връзки.
  • Затруднена в обработката, което ще увеличи latency и packet drops.
  • Ще създаде bottleneck, дори ако самият трафик не е насочен към рутера, а минава през него.

👉 С изключен conntrack, MikroTik обработва пакетите много по-бързо, без да се претоварва.


Изключването на connection tracking се прави с:

Plaintext
/ip firewall connection tracking
set enabled=no

Конфигурирането на rp-filter=loose (Reverse Path Filtering) в BGP граничния маршрутизатор е важна практика за подобряване на анти-спуфинг защитата и предотвратяване на неправилно маршрутизиране. Ето защо това е необходимо:


rp-filter (Reverse Path Filtering) проверява дали за входящия пакет съществува обратен маршрут (return path) за същия източников IP адрес. Ако такъв маршрут не съществува, пакетът може да бъде отхвърлен.

MikroTik предлага три режима:

  • no – Изключено (няма проверка за обратен маршрут).
  • strict – Отхвърля всички пакети, ако обратният маршрут не съвпада със същия интерфейс.
  • loose – Отхвърля пакети само ако няма никакъв обратен маршрут (по-гъвкава проверка).

BGP граничният маршрутизатор обработва динамични маршрути и може да има асиметричен трафик, т.е. пакетите могат да влизат през един ISP и да излизат през друг.
Ако използваш strict, маршрутизаторът ще започне да отхвърля легитимен трафик, защото обратният маршрут не винаги е през същия интерфейс.

Пример за проблем със strict на BGP рутер

  • Имаш два ISP-а: AS1 и AS2.
  • Клиент изпраща трафик към твоята AS през ISP-AS1.
  • Отговорът обаче излиза през ISP-AS2 (асиметричен трафик).
  • Ако е включен rp-filter=strict, входящите пакети през ISP-AS1 ще бъдат отхвърлени, защото обратният маршрут сочи към ISP-AS2.

👉 Решение: Използването на rp-filter=loose позволява проверката да бъде по-гъвкава – ако някъде в рутинг таблицата съществува маршрут към източника, пакетът няма да бъде блокиран.


IP spoofing е техника, при която атакуващият изпраща пакети със spoof-нат IP адрес (например, от чужда мрежа).
rp-filter=loose проверява дали такъв адрес съществува в рутинг таблицата и ако няма маршрут до него – отхвърля пакета.

🔹 Ако използваш rp-filter=no (изключено), атакуващ може да ти изпрати spoof-нат трафик от фалшиви IP адреси, и рутерът ще го обработи.
🔹 Ако използваш rp-filter=loose, атакуващ няма да може да изпрати трафик от IP адреси, които не са в рутинг таблицата ти.


На BGP рутер използвай:

Plaintext
/ip settings set rp-filter=loose

✅ Това ще позволи асиметричен трафик (важно за BGP).
✅ Блокира spoofed пакети от IP-та, които не съществуват в рутинг таблицата.
✅ Ще предотврати проблеми с BGP мултихоминг.


🔹 Ако използваш rp-filter=strict на BGP рутер, ще блокираш напълно легитимен трафик при асиметрични маршрути.
🔹 Ако използваш rp-filter=no, няма никаква проверка, което отваря вратата за IP spoofing атаки.
Оптималният вариант е rp-filter=loose, защото осигурява баланс между защита и функционалност. 🚀

Активирането на tcp-syncookies=yes е ефективна защита срещу SYN flood атаки, които са често срещана форма на DDoS атаки. Това е особено важно за граничните маршрутизатори (BGP рутери), които могат да бъдат мишена на такива атаки.


SYN flood е Denial-of-Service (DoS) атака, при която:

  1. Атакуващият изпраща голям брой TCP SYN пакети към твоя рутер или сървъри зад него.
  2. Рутерът отговаря с SYN-ACK и чака клиентът да завърши трипосочния handshakeACK).
  3. Ако клиентът не отговори (атака), рутерът задържа ресурс (memory/CPU) за всяка висяща връзка.
  4. Голям брой такива SYN заявки може да изчерпи капацитета на рутера, водейки до отказ на услуги.

👉 Атаката разчита на изтощаване на ресурси, защото рутерът трябва да поддържа запис в connection tracking таблицата за всяка полуотворена връзка.


Когато tcp-syncookies=yes е включено:

  • Рутерът не създава запис в connection tracking таблицата за всяка входяща SYN заявка.
  • Вместо това, изпраща специално SYN cookie към подателя.
  • Ако клиентът е легитимен, той ще върне правилния ACK, който рутерът ще разпознае и само тогава ще създаде TCP сесия.
  • Ако клиентът е атакуващ (бот), той няма да отговори правилно, и рутерът просто няма да пази ресурс за тази заявка.

🚀 Резултат: Рутерът не се претоварва от фалшиви SYN заявки, а легитимните клиенти продължават да се свързват нормално.


Твоят граничен BGP маршрутизатор вероятно няма да отваря много TCP сесии, защото: ✅ BGP връзките са малко и стабилни (няма нужда от масово отваряне на нови връзки).
Рутерът обработва основно транзитен трафик, а не крайни потребители.
Ако рутерът бъде атакуван с SYN flood, CPU-то и RAM памета може да се запълни, забавяйки BGP сесиите.

👉 С включен tcp-syncookies, MikroTik ще отхвърля SYN flood атаките автоматично, без да се натоварва.


Plaintext
/ip settings set tcp-syncookies=yes

Тази настройка се прилага веднага, без рестартиране.


Предотвратява SYN flood атаки, които могат да сринат рутера.
Намалява CPU/RAM натоварването, като премахва ненужните записи в conntrack.
Позволява само легитимни TCP връзки, като блокира фалшивите заявки.
Оптимално за BGP рутери, които не отварят много TCP сесии, но могат да бъдат мишена на атаки.

🔥 Заключение: tcp-syncookies=yes е задължителна настройка за всеки MikroTik BGP рутер, защото осигурява силна защита срещу SYN flood атаки, без да засяга легитимния трафик. 🚀

Plaintext
/ip route
add blackhole dst-address=0.0.0.0/8
add blackhole dst-address=172.16.0.0/12
add blackhole dst-address=192.168.0.0/16
add blackhole dst-address=10.0.0.0/8
add blackhole dst-address=169.254.0.0/16
add blackhole dst-address=127.0.0.0/8
add blackhole dst-address=224.0.0.0/4
add blackhole dst-address=198.18.0.0/15
add blackhole dst-address=192.0.0.0/24
add blackhole dst-address=192.0.2.0/24
add blackhole dst-address=198.51.100.0/24
add blackhole dst-address=203.0.113.0/24
add blackhole dst-address=100.64.0.0/10
add blackhole dst-address=240.0.0.0/4
add blackhole dst-address=192.88.99.0/24
add blackhole dst-address=255.255.255.255/32

blackhole в граничния (border) маршрутизатор на вашата мрежа ще предотврати неправилното маршрутизиране на тези специални мрежи към Интернет. Това е полезно за защита и спазване на най-добрите практики за BGP, особено ако маршрутизаторът е част от BGP мрежа.

Тези мрежи включват:

  • Private IP Ranges (RFC 1918): 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16
  • Loopback и link-local адреси: 127.0.0.0/8, 169.254.0.0/16
  • Multicast мрежи: 224.0.0.0/4
  • TEST-NET адреси (за документация): 192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24
  • Carrier-grade NAT (CGNAT): 100.64.0.0/10
  • IPv6-to-IPv4 relay мрежа: 192.88.99.0/24
  • Future-use мрежи: 240.0.0.0/4
  • Benchmarking тестови мрежи: 198.18.0.0/15
  • Special-purpose networks (RFC 6890): 192.0.0.0/24
  • Предотвратява случайното изтичане на частни адреси в Интернет.
  • Спира трафика към несъществуващи или резервирани мрежи.
  • Защитава от неправилно конфигурирани мрежи и грешки при маршрутизация.
  • Спазва BCP38 (Best Current Practice), за да ограничи spoofing атаки.
Plaintext
/ip route
add blackhole dst-address=87.246.47.0/24
add blackhole dst-address=87.246.48.0/24
add blackhole dst-address=87.246.49.0/24
add blackhole dst-address=85.118.94.0/24
add blackhole dst-address=85.118.95.0/24

Добавянето на blackhole маршрути за собствените ви мрежи, които рекламирате в BGP, е важна практика по няколко причини, особено когато става въпрос за стабилност на маршрутизацията, защита от DDoS атаки и коректно поведение при отпадане на връзките. Ето някои от основните причини:


Ако вашият граничен маршрутизатор загуби всички BGP peer-ове (например при повреда на BGP сесиите към upstream доставчиците), вашите маршрути може да се премахнат от BGP, но трафикът към тези мрежи все още може да пристига вътрешно от вашата AS или от локални мрежи.

👉 Решение:
Създаването на blackhole маршрут гарантира, че ако маршрутът не е наличен по BGP (например, защото няма активен upstream), трафикът ще бъде отхвърлен, вместо да обикаля безконтролно в мрежата ви.

Пример за сценарий без blackhole маршрут

  1. Вие рекламирате 87.246.47.0/24 в BGP.
  2. Изведнъж губите BGP сесиите към upstream-ите си.
  3. Вътрешните ви маршрутизатори или клиенти продължават да изпращат трафик към тази мрежа.
  4. Но трафикът няма валиден next-hop и може да доведе до route looping или претоварване на други части от мрежата ви.

👉 Blackhole маршрутът предотвратява този проблем, като веднага отхвърля трафика.


Ако някоя от вашите IP мрежи стане мишена на DDoS атака, стандартна практика е да се рекламира маршрута с BGP blackhole community (65535:666 или друго, използвано от вашия upstream).

👉 Как работи?

  1. Ако вашият маршрутизатор има статичен blackhole маршрут за 87.246.47.0/24, той автоматично ще започне да отхвърля трафика, когато мрежата бъде обявена като blackhole през BGP.
  2. Вашите upstream доставчици също могат да отхвърлят трафика преди да достигне вашата мрежа, намалявайки натоварването ви.

Възможно е друг AS да започне да анонсира вашите префикси без ваше разрешение (BGP Hijacking).
Ако имате статичен blackhole маршрут за собствените си мрежи, гарантирате, че вашият рутер няма да приеме подобни грешни маршрути, дори ако грешно бъдат анонсирани от друга AS.


Ако използвате multiple upstream providers и обявявате BGP маршрути динамично, може да се случи следното:

  • Един от upstream-ите спира да приема маршрутите ви.
  • Трафикът продължава да пристига към вас, но вашият маршрутизатор вече няма активен изход.
  • Това може да доведе до асиметрична маршрутизация и загуба на пакети.

Blackhole маршрутите осигуряват бързо отхвърляне на трафика, вместо да чакате динамичното променяне на маршрутите.

Добавянето на blackhole маршрути за собствените BGP мрежи: ✅ Предотвратява route looping и проблеми при загуба на upstream връзки.
Позволява автоматично DDoS смекчаване с BGP Blackholing.
Защитава от неправилно рекламирани или отвлечени маршрути (BGP Hijacking).
Осигурява по-стабилна мрежа и по-бързо отхвърляне на нежелан трафик.

Това е стандартна практика в мрежите на доставчиците и големите AS оператори, защото повишава устойчивостта и сигурността на BGP инфраструктурата. 🚀

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.