Фильтрация пакетов, NAT, большой обьём трафик
-
и почему если атака идёт на проброшенные порты у меня начинает терять пакеты и второй канал (хотя на него атаки нет)
я не специалист по сетевым технологиям, поэтому все - сугубое IMHO.
Предположу, что потери происходят из-за перегрузки сетевого стека, который является общим для всех интерфейсов. И дело, скорее всего, не в собственно трафике, а в ненормально возросшем PPS - числе пакетов в секунду.
Возможно некий тюнинг\замена адаптеров смягчили бы описываемые вами последствия этой перегрузки.
При больших нагрузках начинают влиять такие свойства адаптера и его драйвера , как поддержка:Message Signaled Interrupts
https://en.wikipedia.org/wiki/Message_Signaled_InterruptsReceive Side Scaling (RSS)
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/jj574168(v=ws.11)
https://www.intel.com/content/www/us/en/support/articles/000006703/network-and-i-o/ethernet-products.htmlReceive flow steering
https://lwn.net/Articles/382428/и т.д.
Такая идея приходила и мне в голову, хотя это не обьясняет почему при атаке на непроброшенный порт такого не происходит (точнее обьясняет если NAT, точнее проброс портов отрабатывает раньше чем блокируются правила в Firewall-Rules-Float)!
У меня стоит интеловская I350-T4.
я даже прописал в System - Advanced System - Tunables строкиnet.isr.direct_force 1
net.isr.direct 1
net.isr.maxthreads 3 # вот эту кстати вроде и в 4 можно установить, раз ядра 4
net.isr.dispatch direct
уж не могу точно сказать срабатывают они сейчас или нет -
Хм…, меня тут посетила идея, а не может быть связано такое поведение каналов с тем что они в MultiWan, там же если не ошибаюсь они в группе и стоит правило что переключаться на второй Gatеways если один из них упал, может с этим и связано ?! (попробую, пошаманить)
-
Ещё бы увидеть более точную схему вашей сети.
-
Ещё бы увидеть более точную схему вашей сети.
А на данный момент нет ничего проще, роутер и один компьютер за ним, со всеми серверами, всё остальное я отключил, чтобы разобраться в чём проблема.
-
Какие сетевые карты используете?
-
Какие сетевые карты используете?
Сетевая i350-t4.
Вы задавайте наводящие вопросы если что, я по "простоте" своей могу и не понять что вы спрашиваете :) -
Добрый.
Помучайтесь еще 2-3 дня. И прийдете кПеренесите свой тимспик в тот же digital ocean или cloudflare. У них есть защита от ддос. Вам это в копейки обойдется. А профита - на тыщи.
Или к Дискорд-у.
Зы. Пф хорош. Но (пока) это ему не по силам.
-
Я так понимаю, что все висит на одной карте? Если нет, поправьте меня более точно, что и как, где висит, на что разбито. Именно по железу.
-
Зы. Пф хорош.
никакой pf не спасет от ддоса. Меня так как то бомбанули. Ничего не помогало, пока не выдернул кабель из маршрутера.
Симптомы очень простые - заводишь сурикату и суриката кушает 100% от проца. Открываешь порт во внешку или делаешь проброс - аналогично умирает проц. Закрываешь всё-всё – всё равно умирает проц, умирает уже на уровне драйвера сетевой, системные прерывания кладут систему. Я в аналитических целях изучал входящий траффик, там очень много интересного. Например самый частый вид траффика - это UDP перепакованный в TCP и с некорректной CRC. Или куча (over >> 10k) входящих TCP запросов на сервис пакетами по 50 байт.
Выжил благодаря CARP и второму секретному WAN-у.И отвечу за провайдеров.
ДДОС это интелектуальная атака, чаще всего подбирается как ключ к замку (ориентирована на конкретный сервис или софт). Разработка и внедрение весьма ресурсоемкое и не всегда оправданное занятие. Поэтому есть контент провайдеры услуг. Ими и пользуйтесь. Могу рекомендовать Касперского(был на их презентации лично, понравилось) https://www.kaspersky.ru/small-to-medium-business-security/ddos-protection?campaign=kl-ru_google_acq_ona_sem_gen_onl_b2c__lnk_______&redef=1&referer1=kl-ru_google&referer2=kl-ru_google_acq_ona_sem_gen_onl_b2c__lnk_______&gclid=Cj0KCQiAq6_UBRCEARIsAHyrgUyHYhTjdfZS1zmMVNRcbisALimlfPXCJzsRUJHCB7JKMbbixRLISFwaAkQGEALw_wcB -
Я так понимаю, что все висит на одной карте? Если нет, поправьте меня более точно, что и как, где висит, на что разбито. Именно по железу.
Да всё висит но одной карте и локалка и два входящих канала, могу сказать сразу, сетевуха (я думаю) справляется, могу сказать это по одной причине, при DDOS атаке потери пакетов на локалке нет, если бы не справлялась сетевая то терялось бы везде.
-
Добрый.
Помучайтесь еще 2-3 дня. И прийдете кПеренесите свой тимспик в тот же digital ocean или cloudflare. У них есть защита от ддос. Вам это в копейки обойдется. А профита - на тыщи.
Или к Дискорд-у.
Зы. Пф хорош. Но (пока) это ему не по силам.
Уважаемый, я так "мучаюсь" уже более года (а сервер у меня уже более 3 лет), у меня как и вас есть резервные каналы, и стараюсь я даже не совсем для себя, а больше для пользователей моего сервера, и как я вам уже и сказал, внешний хостинг меня никак, от слова СОВСЕМ не устраивает, так что давайте вы меня с ним больше не будете напрягать.
-
Зы. Пф хорош.
никакой pf не спасет от ддоса. Меня так как то бомбанули. Ничего не помогало, пока не выдернул кабель из маршрутера.
Симптомы очень простые - заводишь сурикату и суриката кушает 100% от проца. Открываешь порт во внешку или делаешь проброс - аналогично умирает проц. Закрываешь всё-всё – всё равно умирает проц, умирает уже на уровне драйвера сетевой, системные прерывания кладут систему. Я в аналитических целях изучал входящий траффик, там очень много интересного. Например самый частый вид траффика - это UDP перепакованный в TCP и с некорректной CRC. Или куча (over >> 10k) входящих TCP запросов на сервис пакетами по 50 байт.
Выжил благодаря CARP и второму секретному WAN-у.И отвечу за провайдеров.
ДДОС это интелектуальная атака, чаще всего подбирается как ключ к замку (ориентирована на конкретный сервис или софт). Разработка и внедрение весьма ресурсоемкое и не всегда оправданное занятие. Поэтому есть контент провайдеры услуг. Ими и пользуйтесь. Могу рекомендовать Касперского(был на их презентации лично, понравилось) https://www.kaspersky.ru/small-to-medium-business-security/ddos-protection?campaign=kl-ru_google_acq_ona_sem_gen_onl_b2c__lnk_______&redef=1&referer1=kl-ru_google&referer2=kl-ru_google_acq_ona_sem_gen_onl_b2c__lnk_______&gclid=Cj0KCQiAq6_UBRCEARIsAHyrgUyHYhTjdfZS1zmMVNRcbisALimlfPXCJzsRUJHCB7JKMbbixRLISFwaAkQGEALw_wcBДля меня будет проблема только если сам PF не справится с фильтровкой трафика на уровне ядра или сетевого драйвера, да и то это не самая большая проблема, так как я и писал раньше, я в теории могу поставить ещё один PF и делать первичную фильтровку на нём, а на второй уже передавать более-менее чистый трафик.
На счёт Сурикаты…, даже и не знаю сколько же ей ядер проца понадобиться чтобы справиться с DDOS-ом в один гиг, как я и писал, жалко что на PF никто не портирует CUDA от Nvidia, Суриката в теории может работать через неё с ядрами видюхи, тогда можно было бы намного усилить фильтрование и довольно дешёвым способом.Вы можете перечитать мой первый пост и понять что для меня главное не остановить DDOS атаку, а понять почему теряет пакеты второй канал, если у меня будет работать нормально второй канал то мне глубоко пофигу на все эти DDOS-ы, неприятно, да, но не более.
Сам я, да и те пользователи которые хотят, сидят на втором канале, есть и третий канал, так что DDOS тут не проблема совсем, хотят DDOS-ить, пусть долбятся, проблема выяснить из-за чего потери на втором канале, сначала оптимизировать всё что можно, если уж не потянет придётся ставить второй PF.Выдёргиванием шнура из роутера я спасался когда сидел на Микротике, у того считай вообще фильтрование UDP отсутствует и весь DDOS трафик валился мне напрямую (через проброшенный порт) на сервер и вешал и его и локальный комп, на PF мне такого в принципе не надо делать, как я и писал, до локалки благодаря фильтрации трафика практически ничего не доходит.
И как я и писал, на данный момент процессор не перегружен, загрузка доходит максимум 70-80%.Короче резюмируя всю эту писанину, на данным момент я тюнингую PF для того чтобы точно выяснить что потери пакетов на втором канале идут именно от того что PF не справляется с поступающими данными, (хотя на мой взгляд, почему бы PF просто не отбрасывать все данные которые он уже не может обработать, даже просто банально отключать канал пока не очистит очередь), а уж если выяснится что с одним PF я никак не справлюсь то буду ставить второй или ещё что придумаю.
-
Я так понимаю, что все висит на одной карте? Если нет, поправьте меня более точно, что и как, где висит, на что разбито. Именно по железу.
Да всё висит но одной карте и локалка и два входящих канала, могу сказать сразу, сетевуха (я думаю) справляется, могу сказать это по одной причине, при DDOS атаке потери пакетов на локалке нет, если бы не справлялась сетевая то терялось бы везде.
И все-таки я бы советовал, ради эксперимента, воткнуть для другого WAN другую сетевую карту и посмотреть, что будет.
-
Добрый.
@Uranus:Уважаемый, я так "мучаюсь" уже более года (а сервер у меня уже более 3 лет), у меня как и вас есть резервные каналы, и стараюсь я даже не совсем для себя, а больше для пользователей моего сервера, и как я вам уже и сказал, внешний хостинг меня никак, от слова СОВСЕМ не устраивает, так что давайте вы меня с ним больше не будете напрягать.
Мил человек. Настырны? Я тоже.
Вы любите себе моСк три года рукалицо? Тратите (в том числе и) свое (драгоценное ?) время.
Внешний хостинг - спасение для вас в данном случае. Боитесь чего-то? Разверните VPS с шифрованием. Шифруйте передаваемый трафик. Упертость и настырность в достижение рез-та - это хорошо, но не в случае трехлетнего мозголюбства.https://hosting.cafe/
https://vds.menu/
http://poiskhostinga.ru/
http://lowendstock.com/Зы. Разверните впн-сервер. Раздайте каждому по ключу. Во вне будет открыт только один порт. Но это неудобно для конечных пол-лей.
Зы2. https://forum.pfsense.org/index.php?topic=86681.0
Зы3. Почему просто не попробовать тот же Дискорт?
-
Я так понимаю, что все висит на одной карте? Если нет, поправьте меня более точно, что и как, где висит, на что разбито. Именно по железу.
Да всё висит но одной карте и локалка и два входящих канала, могу сказать сразу, сетевуха (я думаю) справляется, могу сказать это по одной причине, при DDOS атаке потери пакетов на локалке нет, если бы не справлялась сетевая то терялось бы везде.
И все-таки я бы советовал, ради эксперимента, воткнуть для другого WAN другую сетевую карту и посмотреть, что будет.
Какую карту лучше использовать, как думаете, встроенную на материнке или внешнюю PCi-E ?
Добрый.
Мил человек. Настырны? Я тоже.
Вы любите себе моСк три года рукалицо? Тратите (в том числе и) свое (драгоценное ?) время.
Внешний хостинг - спасение для вас в данном случае. Боитесь чего-то? Разверните VPS с шифрованием. Шифруйте передаваемый трафик. Упертость и настырность в достижение рез-та - это хорошо, но не в случае трехлетнего мозголюбства.https://hosting.cafe/
https://vds.menu/
http://poiskhostinga.ru/
http://lowendstock.com/Зы. Разверните впн-сервер. Раздайте каждому по ключу. Во вне будет открыт только один порт. Но это неудобно для конечных пол-лей.
Зы2. https://forum.pfsense.org/index.php?topic=86681.0
Зы3. Почему просто не попробовать тот же Дискорт?
Для меня это не работа, а хобби, так что отстаньте, не вам решать что мне лучше, а что нет, вы высказали свою точку зрения, я её отверг…, не вежливо конечно, но на ваши посты в таком же роде я отвечать больше не буду, надоело повторяться...
-
Можно обычную 100 мбит на pci слот. Отпишитесь по итогам теста. Встроенную, думаю, пока не стоит трогать.
-
Можно обычную 100 мбит на pci слот. Отпишитесь по итогам теста. Встроенную, думаю, пока не стоит трогать.
Угу, у меня как раз гигабайтная TP-Link валяется, есть ещё интеловская, но она на работе, так что завтра с утра воткну TP, будем ждать DDOS атаки :)
-
Такая ситуация бывает обычно (на 100% пока сказать не могу) когда DDOS-ят на какой то из прокинутых портов первого канала, хотелось бы понять это узкое место NAT или что то ещё ?
Если да, то как лучше всего отфильтровать траффик до его попадания в NAT, он вообще фильтруется до NAT допустим через Float правила в Firewall-Rules ?!NAT делается перед фильтрацией, и изменить этого нельзя, такая архитектура. Блокировка пакета фильтром сама по себе не бесплатна, так как фильтр должен поддерживать свои внутренние структуры данных в интактном состоянии. NAT (Port forward) добавляет к этому еще работы. Проброшенный пакет будет блокироваться определенно дольше, но насколько, и в этом ли причина вашей проблемы, не скажу.
https://github.com/pfsense/FreeBSD-src/blob/RELENG_2_2/sys/netpfil/pf/pf.c (3570-3587)
if ((r->action == PF_DROP) && ((r->rule_flag & PFRULE_RETURNRST) || (r->rule_flag & PFRULE_RETURNICMP) || (r->rule_flag & PFRULE_RETURN))) { /* undo NAT changes, if they have taken place */ if (nr != NULL) { PF_ACPY(saddr, &sk->addr[pd->sidx], af); PF_ACPY(daddr, &sk->addr[pd->didx], af); if (pd->sport) *pd->sport = sk->port[pd->sidx]; if (pd->dport) *pd->dport = sk->port[pd->didx]; if (pd->proto_sum) *pd->proto_sum = bproto_sum; if (pd->ip_sum) *pd->ip_sum = bip_sum; m_copyback(m, off, hdrlen, pd->hdr.any); }
вот этот m_copyback может что-то дать на большом потоке
-
Такая ситуация бывает обычно (на 100% пока сказать не могу) когда DDOS-ят на какой то из прокинутых портов первого канала, хотелось бы понять это узкое место NAT или что то ещё ?
Если да, то как лучше всего отфильтровать траффик до его попадания в NAT, он вообще фильтруется до NAT допустим через Float правила в Firewall-Rules ?!NAT делается перед фильтрацией, и изменить этого нельзя, такая архитектура. Блокировка пакета фильтром сама по себе не бесплатна, так как фильтр должен поддерживать свои внутренние структуры данных в интактном состоянии. NAT (Port forward) добавляет к этому еще работы. Проброшенный пакет будет блокироваться определенно дольше, но насколько, и в этом ли причина вашей проблемы, не скажу.
https://github.com/pfsense/FreeBSD-src/blob/RELENG_2_2/sys/netpfil/pf/pf.c (3570-3587)
if ((r->action == PF_DROP) && ((r->rule_flag & PFRULE_RETURNRST) || (r->rule_flag & PFRULE_RETURNICMP) || (r->rule_flag & PFRULE_RETURN))) { /* undo NAT changes, if they have taken place */ if (nr != NULL) { PF_ACPY(saddr, &sk->addr[pd->sidx], af); PF_ACPY(daddr, &sk->addr[pd->didx], af); if (pd->sport) *pd->sport = sk->port[pd->sidx]; if (pd->dport) *pd->dport = sk->port[pd->didx]; if (pd->proto_sum) *pd->proto_sum = bproto_sum; if (pd->ip_sum) *pd->ip_sum = bip_sum; m_copyback(m, off, hdrlen, pd->hdr.any); }
вот этот m_copyback может что-то дать на большом потоке
Да про NAT я тоже где-то читал, потому сразу и уточнил что порты проброшены, а как интересно тогда это работает, там же ещё при создании правил NAT можно указать определённую фильтрацию, ну типа список IP-адресов, чтобы некоторые страны исключить, получается что в любом случае порт сначала пробрасывается, и только потом проверятся, а нужно ли для этого IP что либо делать, как то нелогично…
p.s.
Сетевуху установил, но пока что больших DDOS-атак не было, будем поглядеть, как говориться ... :) -
Как полет, кстати?