Фрагментация корень всех зол, наверное, хотели как лучше. В любом случае, в мире где мы живём и есть
IPID
существуют разные способы его задавать, в ответ на атаки, использующие способы, которые были использованы до этого. И всё это так и движется по кругу возвращаясь к самому началу, когда простой последовательный глобальный счётчик не так уж и плох, если у вас много трафика.APNIC Blog
Is IP fragmentation still considered vulnerable? | APNIC Blog
Guest Post: IPID has a 25+ year history of abuse as a network side channel. This post categorizes IPID exploits, and makes a surprising recommendation about mitigating them.
👍1
Если вам совсем-совсем не нужен IPv6 в Linux. GRUB - сила, а с остальным всё понятно, находим галочку, кнопочку, строчечку в своих настройках сети и переключаем туда куда надо. Это имеет всё смысл там где
IPv6
нет и не предвидится, таких мест ещё много. Главное не забыть где это было сделано, чтобы потом когда IPv6
понадобится, включить всё обратно.Anagogistis
How to properly disable IPv6
While IPv6 is the modern standard and the “future of the internet”, there are specific situations where you might need to disable it. The most common reason is to prevent a VPN IPv6 leak which can happen when your VPN client doesn’t fully support IPv6 and…
👍5👎5
Как правильно готовить RPKI на текущий момент из накопленного опыта. Используйте RPKI инфраструктуру RIR, подписывайте ровно то что и анонсируйте, проверяйте себя, чтобы не отфильтровать лишнего.
👍4
Интересный инструмент который ищет взаимосвязи между номером автономной системы и организацией -asint.netsecurelab.org, с отправной точкой номером автономной системы, и результатом всеми автономными системами хоть как-то связанными с этой организацией. Попадаются, конечно, совпадения чисто по написанию, но тоже полезно узнать, что существует компания с подобным тебе именем владеющая
AS
. Краткий обзор в блоге APNIC.APNIC Blog
Mapping ASNs to organizations with ASINT | APNIC Blog
Guest Post: A new research tool helps map ASNs to their real operating organizations, reducing false positives in BGP hijack detection and improving operational visibility.
👍3
Продолжение про то как строить сети - ещё несколько вариантов и примеров с конфигурациями. Стоит напомнить, что у Cisco есть варианты проектирования сетей по разным направлениям, у Juniper тоже есть, и Eltex не отстаёт. Даже если нет для вашего любимого вендора, возьмите нелюбимого и переделайте под себя, главное - стройте сети правильно.
Network Defense Blog
Network Design: Network Edge Design Part 2
Network Edge Design post, includes Active/Active, circuit, BGP, and other design considerations
👍14
Видно ли в BGP проблемы с обрывами подводных кабелей? Видно. Но масштаб должен быть соответвующий, да и понять в каком месте, скорее не получится, чем получится.
Personal blog of Anurag Bhatia
Can we detect submarine cable cuts from BGP routing table?
This post covers if we can detect impact of submarine cable cuts from BGP routing table.
👍4
История которая привела к созданию библиотеки
go-tcpinfo
. На что только не пойдёшь, чтобы доказать что это не сеть виновата. Забираем на Github.fdi.sk
My year-long quest to debug a single TCP connection
How a persistent bug led me to write go-tcpinfo for kernel-level metrics.
👍5
Нюансы работы компилятора, стандартных библиотек, ядра ОС, процессора в простом примере реализации функции ожидания, которая не должна беспокоить систему слишком часто.
Volatile
- рулит. Но самый красивый и даже логичный, последний пример, хотя автор и называет его сложным, симбиоз низкоуровневого и высокоровнего подходов, когда без goto
никак.Mostly nerdless
How to waste CPU like a Professional - Mostly nerdless
In this week's blog post, you'll learn seven different ways to waste a specific amount of CPU-time. Number seven will surprise you.
👍6
Forwarded from Будни сетевика
Задача: на виртульной машине с Ubuntu 24 изолировать два сетевых интерфейса между собой.
Мы боролись с ассиметрией в виртуальной среде NSX-T, где distributed firewall к ней совсем нетерпим, необходимо было разнести маршруты 0/0 и 10/8 по разным интерфейсам, при это было важно, чтобы они не были в одной таблице маршрутизации.
И когда сетевик слышит, что нужно что-то «изолировать» - он идет натягивать VRF. По официальной документации netplan поддерживает VRF - то, что надо, берем.
Адаптируем под себя:
Интерфейсы разнесены по VRF, всё выглядит корректно:
Проверяем доступ извне до IP-адреса внутри VRF - ping работает! А для сетевика полученный ICMP-ответ - это как документ с печатью, подтверждающий наличие доступа. Проверяем SSH, получаем «connection refused», перезагружаем VM(на всякий), доступа нет, интересно. Отключаем iptables(в любой непонятной ситуации), но и это не помогает. Любые дальнейшие эксперименты показывают, что и другие сервисы, привязанные к IP-адресу eth0 (который внутри VRF) также недоступны 🤷
Я не знал, что все сервисы работают в контексте VRF по умолчанию, т.е. процессы используют таблицу маршрутизации по умолчанию и имеют доступ к прослушиваемым IP-адресам только в этом дефолтном VRF, если не указано иное.
Если для ping внутри VRF мы можем использовать опцию -I, которая указывает src-интерфейс внутри VRF и ping начинает работать, то сервису SSH необходимо явно указать - используй контекст vrf-mgmt! Это будет касаться и других сервисов, которые должны работать с IP-адресами внутри VRF.
Решение для SSH: в systemd для юнита sshd изменить ExecStart с указанием использования VRF. Пока идет отладка изменим сразу /lib/systemd/system/ssh.service. (Напрямую лучше не изменять системные файлы, потому что любое обновление перезатрет изменения, нужно использовать override)
Команда ip vrf exec запускает процесс sshd в контексте vrf-mgmt.
После изменения файла службы нужно перезагрузить конфигурацию systemd и службу SSH, чтобы изменения вступили в силу:
Проверяем SSH извне на IP внутри VRF - доступ есть!
Если цель вынести только управление VM в отдельный VRF, то в принципе, на этом можно остановиться. Но в нашем случае были и другие сервисы, которым нужен доступ к VRF.
Идем дальше.
Есть решение, в котором все сервисы будут работать со всеми VRF в системе - L3 Master Device, известный как l3mdev:
Проверим наличие модуля CONFIG_NET_L3_MASTER_DEV в конфигурационном файле ядра:
Если видим CONFIG_NET_L3_MASTER_DEV=y, значит модуль встроен в ядро.
Включаем для tcp/udp:
Проверяем, убеждаемся что все сервисы начинают работать внутри VRF. Успех😮💨
По документации, l3mdev ухудшает производительность на 2-3%. Попробую разобраться как он работает.
#Задача
Мы боролись с ассиметрией в виртуальной среде NSX-T, где distributed firewall к ней совсем нетерпим, необходимо было разнести маршруты 0/0 и 10/8 по разным интерфейсам, при это было важно, чтобы они не были в одной таблице маршрутизации.
И когда сетевик слышит, что нужно что-то «изолировать» - он идет натягивать VRF. По официальной документации netplan поддерживает VRF - то, что надо, берем.
Адаптируем под себя:
network:
version: 2
renderer: networkd
ethernets:
eth0: # -> vrf-mgmt
addresses:
- 10.10.8.101/23
routes:
- to: 10.0.0.0/8
via: 10.10.8.1
routing-policy:
- from: 10.10.8.101/23
eth1: # -> main
addresses:
- 10.11.8.3/29
gateway4: 10.11.8.1
vrfs:
vrf-mgmt:
table: 101
interfaces: [eth0]
Интерфейсы разнесены по VRF, всё выглядит корректно:
# ip route
default via 10.11.8.1 dev eth1 proto static
10.11.8.0/29 dev eth1 proto kernel scope link src 10.11.8.3
# ip route show vrf vrf-mgmt
10.0.0.0/8 via 10.10.8.1 dev eth0 proto static
10.10.8.0/23 dev eth0 proto kernel scope link src 10.10.8.101
Проверяем доступ извне до IP-адреса внутри VRF - ping работает! А для сетевика полученный ICMP-ответ - это как документ с печатью, подтверждающий наличие доступа. Проверяем SSH, получаем «connection refused», перезагружаем VM(на всякий), доступа нет, интересно. Отключаем iptables(в любой непонятной ситуации), но и это не помогает. Любые дальнейшие эксперименты показывают, что и другие сервисы, привязанные к IP-адресу eth0 (который внутри VRF) также недоступны 🤷
Я не знал, что все сервисы работают в контексте VRF по умолчанию, т.е. процессы используют таблицу маршрутизации по умолчанию и имеют доступ к прослушиваемым IP-адресам только в этом дефолтном VRF, если не указано иное.
Если для ping внутри VRF мы можем использовать опцию -I, которая указывает src-интерфейс внутри VRF и ping начинает работать, то сервису SSH необходимо явно указать - используй контекст vrf-mgmt! Это будет касаться и других сервисов, которые должны работать с IP-адресами внутри VRF.
Решение для SSH: в systemd для юнита sshd изменить ExecStart с указанием использования VRF. Пока идет отладка изменим сразу /lib/systemd/system/ssh.service. (Напрямую лучше не изменять системные файлы, потому что любое обновление перезатрет изменения, нужно использовать override)
Было
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
Стало
ExecStart=/bin/ip vrf exec vrf-mgmt /usr/sbin/sshd -D $SSHD_OPTS
Команда ip vrf exec запускает процесс sshd в контексте vrf-mgmt.
После изменения файла службы нужно перезагрузить конфигурацию systemd и службу SSH, чтобы изменения вступили в силу:
systemctl daemon-reload
systemctl restart ssh
Проверяем SSH извне на IP внутри VRF - доступ есть!
Если цель вынести только управление VM в отдельный VRF, то в принципе, на этом можно остановиться. Но в нашем случае были и другие сервисы, которым нужен доступ к VRF.
Идем дальше.
Есть решение, в котором все сервисы будут работать со всеми VRF в системе - L3 Master Device, известный как l3mdev:
Official reference
Enables child sockets to inherit the L3 master device index. Enabling this option allows a “global” listen socket to work across L3 master domains (e.g.,VRFs) with connected sockets derived from the listen socket to be bound to the L3 domain in which the packets originated. Only valid when the kernel was compiled with CONFIG_NET_L3_MASTER_DEV
Проверим наличие модуля CONFIG_NET_L3_MASTER_DEV в конфигурационном файле ядра:
grep CONFIG_NET_L3_MASTER_DEV /boot/config-$(uname -r)
Если видим CONFIG_NET_L3_MASTER_DEV=y, значит модуль встроен в ядро.
Включаем для tcp/udp:
sysctl -w net.ipv4.tcp_l3mdev_accept=1
sysctl -w net.ipv4.udp_l3mdev_accept=1
Проверяем, убеждаемся что все сервисы начинают работать внутри VRF. Успех
По документации, l3mdev ухудшает производительность на 2-3%. Попробую разобраться как он работает.
#Задача
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19
Будни сетевика
Задача: на виртульной машине с Ubuntu 24 изолировать два сетевых интерфейса между собой. Мы боролись с ассиметрией в виртуальной среде NSX-T, где distributed firewall к ней совсем нетерпим, необходимо было разнести маршруты 0/0 и 10/8 по разным интерфейсам…
Стоит напомнить, спасибо за подсказку нашему подписчику, что когда сетевик слышит про сетевую изоляцию он думает про
VRF
, а когда линуксоид про неё слышит, то он думает про NETNS
. Имейте ввиду эту опцию то же, там изоляция поизолированней.👍12
Forwarded from Связано!
Какая боль, какая боль Аргентина-Ямайка 5:0
Сегодня футбол если не обрушил, то сильно потрепал интернет по всей стране. Уже звучат привычные обвинения в адрес операторов, ищут виновных. Про ироничные сравнения с Токио молчу.
Смотрим, что было по факту.
1. Как работает интернет в обычные дни.
Мы привыкли к маркетинговым тарифам в сотни Мбит/с. Но в реальности среднее потребление одной квартиры вечером всего 3-4 Мбит/с. Половина трафика идёт через Google и FNA (читай Instagram), часть через ТОИТ и пиринги, оставшееся через внешние каналы. Поэтому оператор резервирует на аплинке на абонента около 2 Мбит/с, и этого обычно хватает.
Сегодня всё было иначе. Ютубы и Инстаграмы отошли на второй план, а всем нужен был один футбол. Каналы, рассчитанные на «обычный вечер», массово не выдержали.
2. CDN как спасение… и их пределы.
CDN нужны, чтобы не тянуть один и тот же поток из-за границы. Локальный сервер получает одну копию, а дальше раздаёт её тысячам абонентов. Сегодня эти сервера работали на 100% мощности, но запросов оказалось столько, что пошёл трафик из-за рубежа (так работают CDN: если один сервер не выдерживает, ему помогают другие). По оценкам, зарубежного cdn-трафика было в 3–4 раза больше казахстанского. В итоге, похоже, «захлебнулись» и внешние каналы.
3. Наши внутренние вещатели и онлайн-сервисы.
Тоже не справились: ресурсов, которых хватало в штатном режиме, сегодня не хватило. Плюс ошибки в архитектуре, и использование тех же перегруженных CDN.
4. Закрытая пиринговая политика.
Некоторые операторы держат свои CDN только для своих абонентов. Для других операторов они не предоставляют ни пиринга, ни доступа. Локально это понятное бизнес-решение, но глобально это минус для всего рынка. Сегодня, похоже, такие сети тоже захлебнулись.
5. Что реально помогало.
Нас очень спас наш замечательный ТОИТ, который выстрелил до 400 Гбит/с, обеспечив операторам дополнительную «широкую» связанность. Очень сильно помогли операторы, которые отдавали свой CDN-трафик безвозмездно другим операторам (через ТОИТ и пиринги). Тут хочется отметить трёх героев дня:
• TNS Plus
• NLS Kazakhstan
• Optinet
Причём две последние это региональные компании. Им отдельное уважение. Я буду ходатайствовать, чтобы их наградили хотя бы благодарственными письмами от министерства.
Итог. Сегодня у нас случился «DDOS наоборот»: нестандартное и не запланированное поведение пользователей. Виновных искать бессмысленно, потому что операторы не могут держать резервы «на всякий случай», иначе интернет стоил бы совсем других денег. А под одно событие инфраструктуру не перестроишь.
Это урок для всей отрасли. Ирония в том, что на CAPIF мы буквально недавно обсуждали пиринг, интерконнект и CDN. Кто считал это скучной говорильнёй, вот вам реальный пример и быстрая карма 🙂
Когда эмоции улягутся, напишу, как быть готовыми к таким кейсам в будущем. Как минимум, подстраховаться.
Сегодня футбол если не обрушил, то сильно потрепал интернет по всей стране. Уже звучат привычные обвинения в адрес операторов, ищут виновных. Про ироничные сравнения с Токио молчу.
Смотрим, что было по факту.
1. Как работает интернет в обычные дни.
Мы привыкли к маркетинговым тарифам в сотни Мбит/с. Но в реальности среднее потребление одной квартиры вечером всего 3-4 Мбит/с. Половина трафика идёт через Google и FNA (читай Instagram), часть через ТОИТ и пиринги, оставшееся через внешние каналы. Поэтому оператор резервирует на аплинке на абонента около 2 Мбит/с, и этого обычно хватает.
Сегодня всё было иначе. Ютубы и Инстаграмы отошли на второй план, а всем нужен был один футбол. Каналы, рассчитанные на «обычный вечер», массово не выдержали.
2. CDN как спасение… и их пределы.
CDN нужны, чтобы не тянуть один и тот же поток из-за границы. Локальный сервер получает одну копию, а дальше раздаёт её тысячам абонентов. Сегодня эти сервера работали на 100% мощности, но запросов оказалось столько, что пошёл трафик из-за рубежа (так работают CDN: если один сервер не выдерживает, ему помогают другие). По оценкам, зарубежного cdn-трафика было в 3–4 раза больше казахстанского. В итоге, похоже, «захлебнулись» и внешние каналы.
3. Наши внутренние вещатели и онлайн-сервисы.
Тоже не справились: ресурсов, которых хватало в штатном режиме, сегодня не хватило. Плюс ошибки в архитектуре, и использование тех же перегруженных CDN.
4. Закрытая пиринговая политика.
Некоторые операторы держат свои CDN только для своих абонентов. Для других операторов они не предоставляют ни пиринга, ни доступа. Локально это понятное бизнес-решение, но глобально это минус для всего рынка. Сегодня, похоже, такие сети тоже захлебнулись.
5. Что реально помогало.
Нас очень спас наш замечательный ТОИТ, который выстрелил до 400 Гбит/с, обеспечив операторам дополнительную «широкую» связанность. Очень сильно помогли операторы, которые отдавали свой CDN-трафик безвозмездно другим операторам (через ТОИТ и пиринги). Тут хочется отметить трёх героев дня:
• TNS Plus
• NLS Kazakhstan
• Optinet
Причём две последние это региональные компании. Им отдельное уважение. Я буду ходатайствовать, чтобы их наградили хотя бы благодарственными письмами от министерства.
Итог. Сегодня у нас случился «DDOS наоборот»: нестандартное и не запланированное поведение пользователей. Виновных искать бессмысленно, потому что операторы не могут держать резервы «на всякий случай», иначе интернет стоил бы совсем других денег. А под одно событие инфраструктуру не перестроишь.
Это урок для всей отрасли. Ирония в том, что на CAPIF мы буквально недавно обсуждали пиринг, интерконнект и CDN. Кто считал это скучной говорильнёй, вот вам реальный пример и быстрая карма 🙂
Когда эмоции улягутся, напишу, как быть готовыми к таким кейсам в будущем. Как минимум, подстраховаться.
👍11👎1
Forwarded from Связано!
Вчера я писал про интернет и «DDOS наоборот». Но не упомянул про сервисы вещания операторов, такие как BeeTV, TV+, AlmaTV и другие.
Принцип их работы несколько отличается от обычных ТВ-сайтов в интернете. Если включить любой канал, кроме футбольного, всё работало стабильно (локальные проблемы не в счёт). То есть сама вещательная инфраструктура операторов связи отрабатывала штатно. Значит, дело было не в перегрузе их платформ, а именно во входящем потоке, где шёл матч «Кайрат - Реал Мадрид».
Я знаю, что операторы активно локализуют кэши и CDN популярных ресурсов. И вчера это было видно: например, Кинопоиск от Яндекса через локальные сервера отдавал контент без сбоев, несмотря на нагрузку. Коллеги из крупных операторов подтвердили это статистикой. Вывод: работа по локализации сделана правильно.
В то же время, раз у всех операторов картинка ломалась одинаково, значит, на стороне BeeTV или TV+ что-то «сломаться локально» не могло. Это выглядело как некорректный входящий поток.
Параллельно очевидно, что серверные мощности вещателя не выдержали: платформа ТРК «Казахстан» не была готова к такому наплыву. Когда количество пользователей резко превысило предел, серверы начали отдавать 500-е ошибки, сайты и приложения перестали отвечать. По постам пользователей сбои наблюдались у всех локальных ОТТ-провайдеров, потому что они получали уже деградированный контент от телевизионщиков.
На этом фоне пользователи начали массово перезапускать приставки и приложения, создавая лавину повторных запросов. Это фактически перегрузило платформы ОТТ-провайдеров и усугубило ситуацию.
📌 При этом сама сетевая часть выдержала нагрузку: локальные CDN и кэши работали. Но для вещания «на весь мир» этого оказалось недостаточно. Здесь нельзя всю вину перекладывать на операторов связи. Проблема скорее в телевизионной инфраструктуре, которая, похоже, сильно устарела и до сих пор может работать на гигабитных линках, тогда как вчерашний трафик переваливал за терабиты.
Вероятнее всего, сервисы вещания операторов тоже пострадали, но не по своей вине. Их инфраструктура работала нормально, и «неспортивные» каналы это подтверждали. Главная проблема была в источнике сигнала и серверной архитектуре ТВ-компаний.
P.S. Это мой личный анализ на основе технических наблюдений и данных коллег. Дождёмся официальных новостей.
Принцип их работы несколько отличается от обычных ТВ-сайтов в интернете. Если включить любой канал, кроме футбольного, всё работало стабильно (локальные проблемы не в счёт). То есть сама вещательная инфраструктура операторов связи отрабатывала штатно. Значит, дело было не в перегрузе их платформ, а именно во входящем потоке, где шёл матч «Кайрат - Реал Мадрид».
Я знаю, что операторы активно локализуют кэши и CDN популярных ресурсов. И вчера это было видно: например, Кинопоиск от Яндекса через локальные сервера отдавал контент без сбоев, несмотря на нагрузку. Коллеги из крупных операторов подтвердили это статистикой. Вывод: работа по локализации сделана правильно.
В то же время, раз у всех операторов картинка ломалась одинаково, значит, на стороне BeeTV или TV+ что-то «сломаться локально» не могло. Это выглядело как некорректный входящий поток.
Параллельно очевидно, что серверные мощности вещателя не выдержали: платформа ТРК «Казахстан» не была готова к такому наплыву. Когда количество пользователей резко превысило предел, серверы начали отдавать 500-е ошибки, сайты и приложения перестали отвечать. По постам пользователей сбои наблюдались у всех локальных ОТТ-провайдеров, потому что они получали уже деградированный контент от телевизионщиков.
На этом фоне пользователи начали массово перезапускать приставки и приложения, создавая лавину повторных запросов. Это фактически перегрузило платформы ОТТ-провайдеров и усугубило ситуацию.
📌 При этом сама сетевая часть выдержала нагрузку: локальные CDN и кэши работали. Но для вещания «на весь мир» этого оказалось недостаточно. Здесь нельзя всю вину перекладывать на операторов связи. Проблема скорее в телевизионной инфраструктуре, которая, похоже, сильно устарела и до сих пор может работать на гигабитных линках, тогда как вчерашний трафик переваливал за терабиты.
Вероятнее всего, сервисы вещания операторов тоже пострадали, но не по своей вине. Их инфраструктура работала нормально, и «неспортивные» каналы это подтверждали. Главная проблема была в источнике сигнала и серверной архитектуре ТВ-компаний.
P.S. Это мой личный анализ на основе технических наблюдений и данных коллег. Дождёмся официальных новостей.
👍5