Disable Connection Tracking
Изключването на connection tracking (/ip firewall connection tracking set enabled=no
) на BGP граничния маршрутизатор в MikroTik има няколко ключови предимства, особено когато става въпрос за производителност, мащабируемост и ефективност. Ето защо е силно препоръчително:
Подобряване на производителността (CPU оптимизация)
MikroTik не е stateful firewall, предназначен за огромен трафик, особено когато работи като чист BGP маршрутизатор.
Ако connection tracking е включен, всяко TCP, UDP, ICMP или друг трафик преминава през conntrack таблицата, което може да:
- Забави обработката на пакетите.
- Увеличи натоварването на CPU (особено при 1000+ клиенти).
- Претовари conntrack таблицата, ако има голям брой нови сесии на секунда.
👉 Изключването на connection tracking намалява значително CPU натоварването и позволява на MikroTik да се фокусира върху чисто маршрутизиране на BGP трафика.
Намаляване на latency и packet drops
- Ако conntrack е включен, всеки нов пакет трябва да бъде асоцииран с вече съществуваща сесия или създаден като нова сесия.
- Това води до допълнителна обработка, особено при NAT или firewall rules, които зависят от stateful логика.
- В резултат на това latency (забавянето) на пакетите нараства, което е критично за BGP.
👉 Изключването на conntrack води до директна обработка на пакетите без излишни проверки, което значително намалява latency.
MikroTik BGP рутер не се нуждае от connection tracking
BGP маршрутизаторът обикновено не трябва да прави NAT или stateful firewall проверки, защото:
- Не защитава крайни клиенти.
- Не трябва да поддържа NAT сесии.
- Работи само с статични маршрути и BGP маршрути.
👉 BGP рутерите са чисти Layer 3 маршрутизатори, които само предават трафик, без да следят състоянието на връзките.
RAW firewall правилата работят без connection tracking
- Ако се използва само RAW firewall (
/ip firewall raw
), няма нужда от conntrack. - RAW правилата работят още преди пакетът да влезе в conntrack таблицата, което означава, че могат да блокират трафик по-бързо и с по-малко CPU натоварване.
👉 Изключването на conntrack елиминира ненужна обработка, а RAW правилата продължават да функционират без проблеми.
Предотвратяване на conntrack overflow при DDoS атаки
При голям брой входящи връзки (например DDoS атака с много малки пакети), conntrack таблицата може да бъде:
- Препълнена, което ще доведе до спиране на новите връзки.
- Затруднена в обработката, което ще увеличи latency и packet drops.
- Ще създаде bottleneck, дори ако самият трафик не е насочен към рутера, а минава през него.
👉 С изключен conntrack, MikroTik обработва пакетите много по-бързо, без да се претоварва.
Как да изключиш connection tracking правилно?
Изключването на connection tracking се прави с:
/ip firewall connection tracking
set enabled=no
Конфигуриране на rp filter
Конфигурирането на rp-filter=loose
(Reverse Path Filtering) в BGP граничния маршрутизатор е важна практика за подобряване на анти-спуфинг защитата и предотвратяване на неправилно маршрутизиране. Ето защо това е необходимо:
Какво прави rp-filter
?
rp-filter
(Reverse Path Filtering) проверява дали за входящия пакет съществува обратен маршрут (return path) за същия източников IP адрес. Ако такъв маршрут не съществува, пакетът може да бъде отхвърлен.
MikroTik предлага три режима:
no
– Изключено (няма проверка за обратен маршрут).strict
– Отхвърля всички пакети, ако обратният маршрут не съвпада със същия интерфейс.loose
– Отхвърля пакети само ако няма никакъв обратен маршрут (по-гъвкава проверка).
Защо трябва да използваш rp-filter=loose
в BGP рутера?
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
IP spoofing е техника, при която атакуващият изпраща пакети със spoof-нат IP адрес (например, от чужда мрежа).rp-filter=loose
проверява дали такъв адрес съществува в рутинг таблицата и ако няма маршрут до него – отхвърля пакета.
🔹 Ако използваш rp-filter=no
(изключено), атакуващ може да ти изпрати spoof-нат трафик от фалшиви IP адреси, и рутерът ще го обработи.
🔹 Ако използваш rp-filter=loose
, атакуващ няма да може да изпрати трафик от IP адреси, които не са в рутинг таблицата ти.
Оптимална конфигурация
На BGP рутер използвай:
/ip settings set rp-filter=loose
✅ Това ще позволи асиметричен трафик (важно за BGP).
✅ Блокира spoofed пакети от IP-та, които не съществуват в рутинг таблицата.
✅ Ще предотврати проблеми с BGP мултихоминг.
Заключение
🔹 Ако използваш rp-filter=strict
на BGP рутер, ще блокираш напълно легитимен трафик при асиметрични маршрути.
🔹 Ако използваш rp-filter=no
, няма никаква проверка, което отваря вратата за IP spoofing атаки.
✅ Оптималният вариант е rp-filter=loose
, защото осигурява баланс между защита и функционалност. 🚀
Конфигуриране на tcp syncookies
Активирането на tcp-syncookies=yes
е ефективна защита срещу SYN flood атаки, които са често срещана форма на DDoS атаки. Това е особено важно за граничните маршрутизатори (BGP рутери), които могат да бъдат мишена на такива атаки.
Какво представлява SYN flood атаката?
SYN flood е Denial-of-Service (DoS) атака, при която:
- Атакуващият изпраща голям брой TCP SYN пакети към твоя рутер или сървъри зад него.
- Рутерът отговаря с SYN-ACK и чака клиентът да завърши трипосочния handshake (с
ACK
). - Ако клиентът не отговори (атака), рутерът задържа ресурс (memory/CPU) за всяка висяща връзка.
- Голям брой такива SYN заявки може да изчерпи капацитета на рутера, водейки до отказ на услуги.
👉 Атаката разчита на изтощаване на ресурси, защото рутерът трябва да поддържа запис в connection tracking таблицата за всяка полуотворена връзка.
Как tcp-syncookies
защитава от SYN flood?
Когато tcp-syncookies=yes
е включено:
- Рутерът не създава запис в connection tracking таблицата за всяка входяща SYN заявка.
- Вместо това, изпраща специално SYN cookie към подателя.
- Ако клиентът е легитимен, той ще върне правилния
ACK
, който рутерът ще разпознае и само тогава ще създаде TCP сесия. - Ако клиентът е атакуващ (бот), той няма да отговори правилно, и рутерът просто няма да пази ресурс за тази заявка.
🚀 Резултат: Рутерът не се претоварва от фалшиви SYN заявки, а легитимните клиенти продължават да се свързват нормално.
Защо е важно за граничния (BGP) маршрутизатор?
Твоят граничен BGP маршрутизатор вероятно няма да отваря много TCP сесии, защото: ✅ BGP връзките са малко и стабилни (няма нужда от масово отваряне на нови връзки).
✅ Рутерът обработва основно транзитен трафик, а не крайни потребители.
✅ Ако рутерът бъде атакуван с SYN flood, CPU-то и RAM памета може да се запълни, забавяйки BGP сесиите.
👉 С включен tcp-syncookies
, MikroTik ще отхвърля SYN flood атаките автоматично, без да се натоварва.
Как да активираш tcp-syncookies
?
/ip settings set tcp-syncookies=yes
Тази настройка се прилага веднага, без рестартиране.
Заключение
✅ Предотвратява SYN flood атаки, които могат да сринат рутера.
✅ Намалява CPU/RAM натоварването, като премахва ненужните записи в conntrack.
✅ Позволява само легитимни TCP връзки, като блокира фалшивите заявки.
✅ Оптимално за BGP рутери, които не отварят много TCP сесии, но могат да бъдат мишена на атаки.
🔥 Заключение: tcp-syncookies=yes
е задължителна настройка за всеки MikroTik BGP рутер, защото осигурява силна защита срещу SYN flood атаки, без да засяга легитимния трафик. 🚀
Bogon мрежи които не трябва да излизат от AS
/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 атаки.
Предотвратяване на зацикляне от рекламираните мрежи
/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 атаки и коректно поведение при отпадане на връзките. Ето някои от основните причини:
Предотвратяване на “Route Leakage” и “Routing Loops”
Ако вашият граничен маршрутизатор загуби всички BGP peer-ове (например при повреда на BGP сесиите към upstream доставчиците), вашите маршрути може да се премахнат от BGP, но трафикът към тези мрежи все още може да пристига вътрешно от вашата AS или от локални мрежи.
👉 Решение:
Създаването на blackhole
маршрут гарантира, че ако маршрутът не е наличен по BGP (например, защото няма активен upstream), трафикът ще бъде отхвърлен, вместо да обикаля безконтролно в мрежата ви.
Пример за сценарий без blackhole маршрут
- Вие рекламирате
87.246.47.0/24
в BGP. - Изведнъж губите BGP сесиите към upstream-ите си.
- Вътрешните ви маршрутизатори или клиенти продължават да изпращат трафик към тази мрежа.
- Но трафикът няма валиден next-hop и може да доведе до route looping или претоварване на други части от мрежата ви.
👉 Blackhole маршрутът предотвратява този проблем, като веднага отхвърля трафика.
Автоматично DDoS смекчаване с BGP Blackholing (RFC 7999)
Ако някоя от вашите IP мрежи стане мишена на DDoS атака, стандартна практика е да се рекламира маршрута с BGP blackhole
community (65535:666
или друго, използвано от вашия upstream).
👉 Как работи?
- Ако вашият маршрутизатор има статичен
blackhole
маршрут за87.246.47.0/24
, той автоматично ще започне да отхвърля трафика, когато мрежата бъде обявена като blackhole през BGP. - Вашите upstream доставчици също могат да отхвърлят трафика преди да достигне вашата мрежа, намалявайки натоварването ви.
Защита от “Route Hijacking” и “Bogus Announcements”
Възможно е друг AS да започне да анонсира вашите префикси без ваше разрешение (BGP Hijacking).
Ако имате статичен blackhole маршрут за собствените си мрежи, гарантирате, че вашият рутер няма да приеме подобни грешни маршрути, дори ако грешно бъдат анонсирани от друга AS.
Оптимизация на маршрутизацията
Ако използвате multiple upstream providers и обявявате BGP маршрути динамично, може да се случи следното:
- Един от upstream-ите спира да приема маршрутите ви.
- Трафикът продължава да пристига към вас, но вашият маршрутизатор вече няма активен изход.
- Това може да доведе до асиметрична маршрутизация и загуба на пакети.
Blackhole маршрутите осигуряват бързо отхвърляне на трафика, вместо да чакате динамичното променяне на маршрутите.
Заключение
Добавянето на blackhole
маршрути за собствените BGP мрежи: ✅ Предотвратява route looping и проблеми при загуба на upstream връзки.
✅ Позволява автоматично DDoS смекчаване с BGP Blackholing.
✅ Защитава от неправилно рекламирани или отвлечени маршрути (BGP Hijacking).
✅ Осигурява по-стабилна мрежа и по-бързо отхвърляне на нежелан трафик.
Това е стандартна практика в мрежите на доставчиците и големите AS оператори, защото повишава устойчивостта и сигурността на BGP инфраструктурата. 🚀