FastFlowIPs

FastFlowIPs

FastFlowIPs

Бәрі қалай басталды

Ашық бастапқы код па, ашық емес пе - мәселе осында.

Сөреден дайынын алу мен өзіңіз жазу арасындағы мәңгі дилемма шексіз AI құралдары дәуірінде тек өткірлене түсті. Бірақ шынымен бірдеңені өзіңіз жазуға тұра ма. Әмбебап жауап жоқ. Дегенмен, қорқыныштарыңызды /dev/null-ға тастаса, идея енді сонша жынды көрінбейді.

Біздің әңгіме продакшен маршрутизаторларындағы VyOS-ты 1.5.x (circinus) нұсқасына жаңартудан басталды.
Онсыз да жүйкені шаршатқан осы процестен кейін біз желіаралық қалқан ережелерінің бір бөлігі үнсіз өзін-өзі жойып жібергенін байқадық. Ең қызығы - әр маршрутизаторда дәл сол бір нақты бөлік болды.
Сонда біз құлықсыз түрде VyOS Project Updates-ті ашып, мынаған тап болдық: FastNetMon-based service ids ddos-protection is removed from rolling and deprecated in LTS releases (T7241):

Біраз уақыт бізде FastNetMon - DDoS анықтау демонын баптауға арналған CLI болды. Дегенмен бұл интеграция ешқашан ерекше терең болмады, ал оны елеулі жақсартуға жол көрмейміз.
Ұзақ мерзімді жоспар - қосымшаларға жүйелік CLI-ды кеңейтуге мүмкіндік беретін тетікті пысықтаған бойда FastNetMon-ды қосымшаға көшіру. Кіріктірілген құрамдастарға келсек, тәсіл "саннан гөрі сапа" болады: пайдаланушысы көп және бір-бірімен жақсы үйлесетін интеграциялар азырақ болғаны артық, бірақ әркімге өз қажетіне интеграция орнату немесе әзірлеу мүмкіндігін беру керек.

Мәселе аса шұғыл да, аса маңызды да емес еді, бірақ IPv4 брокері және хостинг провайдері ретінде бізге мұндай бақылау керек болды. Сондықтан біз бірден іске кірісуді шештік.

Әдеттегі циклден - жоққа шығару, ашу, келісу - өтіп, біз ақыры service ids ddos-protection-ның жоғалғанын қабылдадық және FastNetMon Community-ді қолмен тірілтіп көрдік. Осы кезде депрессия келді. Community нұсқасы, шынын айтқанда бәрі әлдеқашан күдіктенген себептермен, орнатылудан бас тартты. Ал коммерциялық нұсқаны сатып алуға ешкім асыққан жоқ.

Мәселе апаттық емес еді, бірақ IPv4 брокері және хостинг провайдері болған бізге мұндай бақылау қажет болды. Сондықтан шешім айқын болды: бірден іске кірісу.

FastNetMon: біз сені жақсы көреміз, бірақ...

FastNetMon-мен қарым-қатынасымыз көп бұрын басталған жоқ, бірақ құрал жүрегімізді тез жаулап алды және процессордың шамамен 30%-ін тұрақты жеп отырғанына қарамастан шынайы пайда берді.

Трафиктің көрінуі мінсіз болды, Grafana метрикамен жарқырап тұрды, ал өмір сәл тыныштау көрінді.
Ал енді? Енді біз бос трафик панельдеріне қарап отырып, әлдебір себеппен "өміріңді қиындат" жолын өз еркімізбен таңдап отырмыз. Иә... өз еркімізбен емес. Мәжбүрлеп деген дұрысырақ. Ал әдеттегідей, барлық кемшілікті бірдеңе жоғалтқанда ғана есіңе түсіре бастайсың.

Тұтастай алғанда FastNetMon біздің күткенімізді ақтады, тіпті асып түсті.
Бірақ барлық артықшылығына қарамастан ол мүлдем қажет емес деректердің үлкен тауын жинап, панельдерді сандар мен графиктердің шулы карнавалына айналдырды. Оған қоса процессорға түсетін сол жүктеме: апаттық емес, бірақ жеткілікті ызалы. Сондықтан бізде нақты "иә" де, "жоқ" та қалыптаспады. Жан қарапайымдылық пен жеңілдікті тіледі, құрал түшкірген сайын кезекті жазылым мен нәзік баптау емес.

Өзіміздің құралымызды жазу идеясы бірден келмеді. FastNetMon үшін шайқас жалғасты - біз оны басқа серверден ескі екілік файлды суырып алып тірілтуге де тырыстық. Иә, тәсіл күмәнді болды, бірақ ол жұмыс істеді: FastNetMon өмірге қайтты. Тек... онда қуаныш болмады.

Әсер әлдеқашан кеткен үй жануарының кептірілген тұлыбын тігіп алғандай болды: техникалық түрде тұр, солғын таныс, бірақ онымен жүру... жайсыз.

Сонда біз бір ауыздан шештік: бұлай жалғаса алмайды. Сол кезде біз блэкджекпен және процессорға ең аз жүктемемен өзіміздің бақылауымызға негізделген DDoS қорғаушысын құруға кірістік.

Одан кейін бәрі шиырлап кетті

Сөйтіп өз құралымызды әзірлеу басталды. Команданың ең жарқын ойлары және, әрине, бір-екі AI модельі брейнштормингке қосылды, сөйтіп FastFlowIPs пайда болды. FastFlowIPs - әр IP бойынша трафик статистикасын нақты уақытта қадағалайтын, eBPF-ке негізделген жоғары өнімді желі бақылау құралы. Ол үстеме шығыны ең аз продакшен орталарына жобаланған.

Негізгі идея қарапайым: ол желі трафигін eBPF арқылы түсіреді, әр IP бойынша статистика есептейді (PPS, Мбит/с) және бапталатын шектерден асатын адрестерді автоматты бұғаттай алады. Метрикалар Graphite протоколымен шығарылады және Grafana күтетін нәрсеге тамаша сай келеді. Панельдер таза, жеңіл шығады және тез жиналады.

FastFlowIPs бір жолмен іске қосылады, онда ең мағыналы метрикаларды ғана шығару үшін -min-ips-pps және -min-flow-pps қоясыз, оған қоса бақылайтын желі мен интерфейсті көрсетесіз. Жалғыз міндетті талап - метрика жібергіңіз келсе, -graphite-host және -graphite-port параметрлерін анық көрсету.

Оған қоса FastFlowIPs жүктемесі жоғары желілерге оңтайландырылған:
әдеттегі іске асыруларға қарағанда мьютекс операциялары 75% аз, жолдармен жұмыс 60% жылдам.

Конфигурация мысалы төменде:

# Интерфейс және негізгісі
-interface eth0              # Желі интерфейсі (әдепкі: eth0)
-interval 5s                 # Жинау аралығы
-show-stats                  # Кезеңдік кестелерді көрсету
-verbose                     # Егжей-тегжейлі журналдау

# Желі бойынша сүзу
-networks "192.168.1.0/24"   # Тек көрсетілген желілерді бақылау

# Адрестерді бұғаттау шектері
-ban-pps-rx 1000             # Қабылдау > 1000 PPS болса бұғаттау
-ban-pps-tx 500              # Жіберу > 500 PPS болса бұғаттау
-ban-mbps-rx 100             # Қабылдау > 100 Мбит/с болса бұғаттау
-ban-mbps-tx 50              # Жіберу > 50 Мбит/с болса бұғаттау
-ban-time 5m                 # Қанша уақытқа бұғаттау
-ban-script /path/script.sh  # Бұғаттағанда және шешкенде орындалатын скрипт

# Graphite-ке шығару
-graphite-host localhost     # Graphite сервері
-graphite-port 32003         # Graphite порты
-min-flow-pps 10             # Тек > 10 PPS ағындарды шығару
-min-ips-pps 5               # Тек > 5 PPS адрестерді шығару

Бақылау режимдерін айналып өтуге еш мүмкіндік болмады - олар осы қарапайым құралды өз талғамыңызға баптауға мүмкіндік береді:

  • Тыныш режим (әдепкі): тек бұғаттау оқиғаларын және іске қосылу хабарларын көрсетеді. Продакшенге тамаша.
  • Статистика режимі (-show-stats): көлемі бойынша сұрыпталған кезеңдік трафик кестелерін басып шығарады.
  • Егжей-тегжейлі режим (-verbose): Graphite-ке шығару статистикасын қоса, толық журналдау.

Ал торттың үстіндегі шие - белгіленген шектерден асқан кез келген күдікті белсенділікті мейірімсіз бұғаттайтын бұғаттау скрипті:

/path/to/script.sh ban 192.168.1.100    # IP шектен асты
/path/to/script.sh unban 192.168.1.100  # Бұғаттау мерзімі бітті

iptables-тегі қарапайым мысал:

#!/bin/bash
case $1 in
  ban)   iptables -I INPUT -s $2 -j DROP ;;
  unban) iptables -D INPUT -s $2 -j DROP 2>/dev/null ;;
esac

Бірақ кез келген жағдайда скриптті әрқашан түзетіп, инфрақұрылымыңыз талап еткендей көбірек немесе азырақ агрессивті етуге болады.

Graphite және метрикалар туралы бір-екі сөз. Grafana-дағы панель екі негізгі метрика түрінде санаулы минутта жиналады:

Ағын метрикалары: **network.flows.{SRC_IP}*to*{DST_IP}.{pps,mbps}.{rx,tx}**
Адрес метрикалары: **network.ips.{IP_ADDRESS}.{pps,mbps}.{rx,tx}**

FastFlowIPs туралы көбірек мәлімет репозиторийдің өзінде бар: https://github.com/denisix/fastflowips, және сіз әрқашан авторды қолдай аласыз немесе осы шағын, бірақ әлдеқашан күшті құралдың дамуына үлес қоса аласыз.

Архитектура 3 абзацта (азаптанусыз)

Құралды адами тілмен сипаттасақ, іште ол NetFlow пакеттерін тыңдайтын, оларды бөлшектеріне талдайтын және әр адрес бойынша қарапайым статистика құратын ұқыпты, шағын Go сервисі: pps, mbps, кіріс және шығыс - яғни желіде кім шулап отыр және неге. Барлық математика жүріп жатқанда орындалады: Go мұндай жеңіл, бірақ өнімділігі жоғары операцияларға тамаша келеді.

Деректер жадтағы шағын құрылымдарға жиналады, сұрыпталады және кезең-кезеңімен сыртқа жіберіледі: Graphite және Grafana-ға немесе өзіңіз көрсеткен кез келген басқа қабылдағышқа. Адрестерді сыртқы скриптпен бұғаттау PPS және Мбит/с шектері және BanScript шақыруы арқылы іске асырылған - кенет біреу шағын жергілікті DDoS мерекесін өткізуді ұйғарса деп.

Ең жағымдысы: бұл тәуелділік тауы жоқ, әдеттегі "шағын ашық жобаның тозағы" жоқ бір таза екілік файл. Баптаулар флагтармен беріледі, статистика тікелей жиналады, логика ашық. Ақыры бізге керегін нақ жасайтын жеңіл және адал құрал шықты - артық сиқыры жоқ, ауыр демондары қосылмаған.

Бір-екі күннен кейінгі нәтижелер

Жөндеу процесі құралдың өзін жазудан әлдеқайда ұзақ және күрделі болып шықты. Әуелі біз FastFlowIPs-ке шектік мәндер қоюды мүлдем жоспарлаған жоқпыз, сондықтан бірнеше рет (көп рет) Grafana метрика көлемінен жүйкеленіп демін ішіне тартты және оларды бізге көрсетуден мүлдем бас тартты. Панель шартты белгісінде сонша адрес болды, оны сағаттап айналдырып отырсаң да ақырына жетпейтін шамасы. Біз есептен жаңылдық - бірақ қай жерде?

Жөндеу біресе бәрін бұзып, біресе тұрақтандырып, біресе шаршаған FastFlowIPs-імізді қайта бұзып отырды, ақыры ол шеткі жағдайларда үнсіз жылай бастады. Метрика біресе тым көп, біресе тым аз, біресе мүлдем жоқ болды. Шамасы, көңіл-күй асқын жүктемесінен. Оған қоса біз үшін ең үлкен жұмбақ Flows RX/TX метрикалары болып шықты, олар сәл орындарын шатастырып алды, ал бұл VyOS маршрутизаторларында нақты уақытта тамаша көрініп тұрды. Осымен командамыздың ең үздік ойлары арпалысты, ал ақыры мақсатқа жетілді: метрикалар тұрақтанды, ал Grafana астмасынан жазылды.

Бүгінде бізде ұқыпты, таза және мазмұнды метрикалар бар, олар бізге керек нақ желі трафигін көрсетеді:

fastflowips-1

fastflowips-2

fastflowips-3

fastflowips-4

Өз мини-FastNetMon-ыңды құратын уақыт қашан келеді

Өз велосипедіңді ойлап табу - жаман. Велосипедсіз орнынан жылжи алмайтын сәт келгенге дейін.

Өз құралыңды жазудың толық мәні бар, егер дайын шешімдер сіздің нақты міндетіңізге тым ауыр немесе тым ақылды болса. Сізге 100500 мүмкіндік, ғарыш стансасымен интеграция және 19 мониторға жайылған панель керек болмаса - сізге тек сандар керек болса, жылдам және бас ауырмай.

Жағдай икемділік талап еткенде де өз шешіміңізді қарауға тұрады: метриканы жүріп жатқанда қосу керек, DDoS-қа қарсы өз логикаңызды кіріктіру керек, бақылауды өзгеше жабдығыңызбен достастыру керек немесе жақсы көретін микробағдарламадан кенет алып тасталған шектеулерді айналып өту керек (VyOS 1.5-ке жылы сәлем).

Қысқасы, өзіңізше жазу - бақылау, жылдамдық, минимализм және репозиторийлерден кенет жоғалып кететін құрамдастардан тәуелсіздік туралы. Бастысы - алтын ережені есте ұстау: қарапайымдау жасауға болатын болса, қарапайымдау жасаңыз.

Және бір ереже: жұмыс істеп тұрса - қол тигізбеңіз.

Үлкен финал

Ақыр соңында бұл әңгіменің бәрі трафик туралы да, DDoS туралы да, тіпті FastNetMon туралы да емес.
Ол кейде команда жай ғана жұмыс істейтін, жаңартудан кейін сынбайтын және өмірді "Шоушенктен қашудың" қайталауына айналдырмайтын құрал қалайтыны туралы.

Біз велосипедті қайта ойлап тапқанымыз жоқ - өз жолымызға мінсіз келетін кішкентай өз скутерімізді жинадық. Мұнда жаман ештеңе жоқ. Орасан ашық жобалар өздерінің болжаусыз өмірін сүріп жатқан дүниеде өз нәрсеңнің болғаны жағымды - таныс, тұрақты және таңғаларлық жалықтырма.

Сондықтан егер сіз бір кезде кезекті "мінсіз, бірақ сәл тым мінсіз" құралға қарап: "шынымды айтсам, өзім жазсам жеңілірек" деп ойлаған болсаңыз - мүмкін сіз шынымен дұрыс жолдасыз.
Тек бұны ақылмен, сынақтармен жасаңыз... және аз-кем азаптануға дайын болыңыз.

IPv4 нарығы бойынша есеп - 2026 жылғы шілде
ipv4pricingnetworking

IPv4 нарығы бойынша есеп - 2026 жылғы шілде

2026 жылғы шілдедегі IPv4 нарығы бойынша есеп: блок өлшемдері бойынша орташа баға және айлық өзгеріс, RIPE NCC трансфер көлемі (айына 350-480), мамырдағы бас жиналыстың төлем схемасы бойынша қорытындысы және тамызға болжам.

IPv4 бағасы түбін тапты - 2026 жылдың бірінші жартысындағы нарық қалпына келуі санмен
ipv4pricingnetworking

IPv4 бағасы түбін тапты - 2026 жылдың бірінші жартысындағы нарық қалпына келуі санмен

2025 жылғы IPv4 түзетуі бітті. 2026 жылдың бірінші жартысы түбін тапты: қаңтардағы рекордтық көлем, наурыздағы өсім, жыл ортасындағы растау. Үлкен блоктар қалпына келіп жатыр, /24 ұстап тұр.

RIPE NCC 2027 төлем схемасы - A нұсқасы жеңді, бұл IPv4 иелері үшін не білдіреді
ipv4ripe-nccpricingnetworking

RIPE NCC 2027 төлем схемасы - A нұсқасы жеңді, бұл IPv4 иелері үшін не білдіреді

RIPE NCC-нің 2026 жылғы мамырдағы Бас жиналысы тұрақты төлем моделін (A нұсқасы) сақтады: 2027 жылдан бастап LIR үшін EUR 1,800 орнына EUR 1,894. Трансфер үшін алым енгізілмеді. Бұл IPv4 иелері мен сатушылары үшін не білдіреді.

2026 жылы RIPE NCC өңіріндегі IPv4 бағасы
ipv4networkingpricing

2026 жылы RIPE NCC өңіріндегі IPv4 бағасы

2026 жылы RIPE NCC өңіріндегі IPv4 адрестерінің ағымдағы бағасы. Нарықтық аралықтар, трансфер саясаты және бекітілген брокер арқылы IPv4 сатып алу немесе сату жолы.

2026 жылы Еуропадағы IPv4 адресінің құны
ipv4networkingpricing

2026 жылы Еуропадағы IPv4 адресінің құны

2026 жылы Еуропада IPv4 адрестерінің бір адрес есебіндегі құны. Блок өлшемдері бойынша RIPE NCC бағасы, ел әсері және Прагадағы брокер арқылы еуропалық IPv4 сатып алу жолы.