Network Admin
12.4K subscribers
1.15K photos
14 videos
8 files
1.18K links
Обучающий канал по сетевому и системному администрированию.

Сотрудничество: @dad_admin
Биржа: https://telega.in/c/networkadm

РКН: https://bit.ly/4ioc61C
Download Telegram
RSS vs RPS vs RFS: кто распределяет сетевой трафик между CPU

На сервере 32 ядра, но при высокой сетевой нагрузке несколько ядер забиты под 100%, а остальные почти простаивают.

Проблема может быть в том, как входящие пакеты распределяются между CPU. В Linux для этого есть три механизма: RSS, RPS и RFS.

⏺RSS - распределение на уровне сетевой карты

NIC вычисляет хеш по заголовкам пакета и выбирает RX-очередь. Каждая очередь обычно обслуживается своим CPU через IRQ/NAPI.

Проверяем количество очередей:

ethtool -l eth0


Если у карты одна RX-очередь, аппаратное распределение трафика ограничено.

⏺RPS - распределение средствами ядра

Receive Packet Steering позволяет перенаправлять обработку пакетов на другие CPU уже после приёма через RX-очередь.
Смотрим маску разрешённых CPU:

cat /sys/class/net/eth0/queues/rx-0/rps_cpus


RPS полезен, когда аппаратных RX-очередей мало, но добавляет межъядерную обработку.

⏺RFS - распределение с учётом приложения

Receive Flow Steering идёт дальше. Он старается обрабатывать пакеты потока на том CPU, где выполняется приложение, которое их читает.

Это помогает уменьшить потери производительности из-за миграции данных между CPU-кешами.

Проверяем настройку:

cat /sys/class/net/eth0/queues/rx-0/rps_flow_cnt


⚡️RSS выбирает аппаратную RX-очередь, RPS распределяет обработку по CPU, а RFS учитывает расположение приложения.

Но больше распределения не всегда означает выше производительность. На многоканальных NIC дополнительный RPS может только увеличить overhead.

N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
😒

N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17👻2
PBR vs VRF: два способа управлять маршрутизацией

Обе технологии позволяют отправлять трафик не по обычной таблице маршрутизации. Но решают разные задачи.

⏺PBR (Policy-Based Routing) выбирает маршрут по заданным условиям. Например, весь трафик из подсети 192.168.10.0/24 должен идти через второго провайдера, даже если default route указывает на первого.

На Linux это можно сделать через ip rule:

ip rule add from 192.168.10.0/24 table 100
ip route add default via 10.0.0.1 dev eth1 table 100


Теперь пакеты из этой подсети используют таблицу 100. Остальной трафик продолжает маршрутизироваться по обычным правилам.

⏺VRF (Virtual Routing and Forwarding) создаёт отдельный routing domain со своей таблицей маршрутизации.

Например, на одном сервере работают две изолированные сети. У каждой свой default gateway, а адресные пространства могут даже пересекаться.

Создаём VRF:

ip link add vrf-blue type vrf table 100
ip link set vrf-blue up
ip link set eth1 master vrf-blue


Теперь eth1 принадлежит VRF, а маршруты подключённых к нему сетей находятся в таблице 100. Для отдельного default route его нужно настроить дополнительно.

Посмотреть маршруты:

ip route show vrf vrf-blue


Главная разница в том, что PBR выбирает таблицу или маршрут по условиям, а VRF привязывает интерфейсы и трафик к отдельному домену маршрутизации.

N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Один IP, два MAC: как ARP-конфликт ломает сеть

Два устройства случайно получили одинаковый IP-адрес. Оба доступны на L2, оба отвечают на ARP-запросы, но MAC-адреса у них разные.

Для соседних хостов начинается путаница. Один ARP-ответ связывает 192.168.1.50 с первым MAC, следующий может заменить запись на MAC второго устройства.

В результате соединения периодически обрываются, SSH зависает, а ping то проходит, то нет.

⏺Смотрим neighbor table

ip neigh show 192.168.1.50


Запись может меняться между двумя MAC-адресами. Но это не обязательно происходит после каждого ARP-ответа: Linux учитывает состояние записи и правила её обновления.

⏺Ловим конфликт

tcpdump -eni eth0 arp


Если два устройства отвечают за один IP, в захвате можно увидеть ARP Reply с одинаковым sender IP, но разными sender MAC.

Дополнительно проверяем адрес через arping:

arping -I eth0 -c 5 192.168.1.50


Несколько ответов с разными MAC - сильный признак конфликта.

⏺Что происходит с соединениями

Когда сосед начинает отправлять кадры на другой MAC, пакеты попадают не на тот сервер. Старое TCP-соединение при этом не переносится на новое устройство.

N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Миф: Port Security защищает от всех атак на L2

Port Security ограничивает количество MAC-адресов на порту коммутатора. Например, разрешаем один MAC, и если появляется второй, порт блокируется или начинает отбрасывать нарушающий трафик в зависимости от режима.

Кажется, что этого достаточно для защиты от посторонних устройств. Но Port Security контролирует MAC-адреса, а не поведение самого устройства.

⏺Rogue DHCP Server

Атакующий подключает устройство с разрешённым MAC и начинает раздавать клиентам неправильный шлюз или DNS. Port Security не анализирует DHCP-ответы.

Для этого нужен DHCP Snooping, который запрещает ответы DHCP-сервера с недоверенных портов.

⏺ARP Spoofing

Устройство с разрешённым MAC отправляет поддельные ARP-ответы, связывая IP шлюза со своим MAC.
Port Security не проверяет соответствие IP и MAC внутри ARP. Этим занимается Dynamic ARP Inspection, используя доверенные привязки, например из DHCP Snooping.

⏺Подмена разрешённого MAC

Если атакующий узнает допустимый MAC и использует его вместо своего, Port Security не сможет определить личность устройства только по этому адресу.
Для аутентификации применяют 802.1X, хотя и он требует правильной настройки.

На Cisco проверяем состояние защиты:

show port-security interface Gi0/1
show ip dhcp snooping
show ip arp inspection


⚡️Port Security ограничивает MAC-адреса на порту. DHCP Snooping контролирует DHCP-серверы, DAI проверяет ARP, а 802.1X аутентифицирует подключение.
Один механизм не заменяет остальные.

N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Как проверить, куда исчезают пакеты в nftables

Порт открыт, маршрут есть, но соединение не устанавливается.

Проверять десятки правил firewall вручную неудобно, особенно когда пакеты проходят через несколько цепочек.

В nftables есть трассировка, которая показывает путь пакета через правила.

⏺Сначала включаем трассировку для нужного трафика. Например, для TCP-подключений к порту 443:

nft add table inet debug
nft 'add chain inet debug trace_in { type filter hook prerouting priority -301; policy accept; }'
nft add rule inet debug trace_in tcp dport 443 meta nftrace set 1


Теперь запускаем мониторинг:

nft monitor trace

Пробуем подключиться к серверу с другого устройства.

⏺В выводе появятся цепочки и правила, через которые проходит пакет. Например:

trace ... rule tcp dport 443 drop
trace ... verdict drop


Так можно увидеть не просто факт блокировки, а конкретное правило, которое приняло решение.
Если пакет вообще не появляется в трассировке, стоит проверить, доходит ли он до выбранного hook и соответствует ли условию трассировки.

⏺После диагностики удаляем временную таблицу:

nft delete table inet debug


⚡️tcpdump показывает, что пакет пришёл на интерфейс. nft monitor trace помогает выяснить, что с ним произошло внутри nftables.

N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥1
3 ошибки при настройке BGP prefix-list

Prefix-list кажется простой вещью: указал сеть, разрешил или запретил маршрут. Но одна неточная маска может изменить фильтрацию сразу для сотен префиксов.

⏺Забыли про le и ge

Например, на Cisco:

ip prefix-list FILTER permit 10.0.0.0/8


Это правило разрешает только точный префикс /8. Маршрут 10.10.0.0/16 под него не попадёт.

Чтобы разрешить более специфичные сети:

ip prefix-list FILTER permit 10.0.0.0/8 le 24


Теперь подходят префиксы от /8 до /24 внутри указанной сети.

⏺Случайно разрешили слишком много

ip prefix-list FILTER permit 0.0.0.0/0 le 32


Это не разрешение только default route. Такое правило подходит под любой IPv4-префикс.

Если нужен исключительно маршрут по умолчанию:

ip prefix-list FILTER permit 0.0.0.0/0


⏺Забыли про implicit deny

В конце prefix-list действует неявный запрет. Если маршрут не совпал ни с одним разрешающим правилом, он будет отклонён при применении списка как фильтра.
Проверяем:

show ip prefix-list FILTER
show ip bgp neighbors 192.0.2.1 advertised-routes


Последняя команда помогает увидеть, что реально анонсируется соседу. Синтаксис зависит от платформы.

⚡️В prefix-list важно не только указать сеть, но и правильно задать допустимую длину префикса. Разница между /8 и /8 le 24 может решить, какие маршруты вообще попадут к соседу.

N.A
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
📘 На Mentorix вышел курс — «Terraform: инфраструктура как код»

Хотите не просто писать .tf-файлы, а собирать инфраструктуру кодом, с которой работает вся команда? Этот курс — полный путь от первого apply до пайплайна, который применяет только проверенный план.

• Основы: HCL, init → plan → apply, провайдеры и lock-файл
• Переменные: типы, коллекции, валидация, sensitive
• Ресурсы: граф зависимостей, count и for_each, lifecycle
• State: дрейф, state mv и moved, импорт существующего
• Модули: контракты, композиция, версии
• Окружения: workspaces, tfvars, бэкенды S3/GCS/Yandex
• Проверки: preconditions, check-блоки, terraform test
• CI/CD: GitLab CI и GitHub Actions, дрейф-детект
• Капстоун: платформа из трёх стеков с dev и prod

🎓 Сертификат — добавьте в резюме или LinkedIn

🏷 Скидка 50%, действует 48 часов
12 990 ₽ → 6 495 ₽

➜ Пройти курс на Mentorix

Ещё 25 курсов бесплатно — доступны после регистрации
👍1
Что такое IX и как трафик идёт внутри него

IX (Internet Exchange) это физическая точка где провайдеры, CDN и крупные сети подключаются друг к другу напрямую. Вместо того чтобы гонять трафик через транзитного провайдера и платить за каждый гигабит, участники обмениваются трафиком напрямую и бесплатно между собой.

Крупнейшие точки обмена: DE-CIX во Франкфурте, AMS-IX в Амстердаме, MSK-IX в Москве. Через DE-CIX проходит больше 10 Тбит/с в пике.


Как устроено внутри

Физически IX это один большой коммутатор (или несколько связанных), к которому все участники подключают свои роутеры. Эта общая среда называется IXP fabric. Каждый участник получает порт и IP-адрес в общей подсети IX.

Дальше всё через BGP. Каждый участник поднимает BGP-сессии с теми с кем хочет обмениваться трафиком, анонсирует свои префиксы и получает чужие. Никакой автоматики, только явные пиринговые договорённости.

Route Server

Чтобы не поднимать сотни BGP-сессий с каждым участником отдельно, большинство IX предоставляют Route Server.

Подключаешься к одному RS, получаешь маршруты от всех участников кто тоже подключён к RS. Можно фильтровать что принимать и что анонсировать.

router bgp 65001
neighbor 193.178.185.1 remote-as 65000
neighbor 193.178.185.1 description MSK-IX Route Server


Как трафик идёт внутри

Пакет от пользователя провайдера А до сервера в сети провайдера Б: роутер А смотрит BGP-таблицу, видит что префикс Б получен через IX, отправляет пакет напрямую на роутер Б через IXP fabric. Транзитный провайдер не участвует, задержка меньше, стоимость ниже.

N.A.
👍4
NAT44 vs NAT64: как IPv6-клиент подключается к IPv4-серверу

Обычный NAT44 меняет IPv4-адреса, но сам протокол остаётся прежним. NAT64 работает иначе: позволяет клиенту из IPv6-only сети обращаться к серверу, у которого есть только IPv4.

⏺NAT44 чаще всего встречается на домашних маршрутизаторах. Несколько устройств с приватными IPv4-адресами выходят в интернет через один публичный адрес.

Например, 192.168.1.10:50000 превращается в 203.0.113.5:40001. Маршрутизатор запоминает соответствие и возвращает ответы нужному клиенту.

⏺NAT64 переводит пакеты между IPv6 и IPv4. Но сначала клиенту нужно получить IPv6-адрес назначения.

Для этого часто используется DNS64. Если у сервера есть только A-запись, DNS64 может синтезировать AAAA-запись с IPv4-адресом внутри специального IPv6-префикса.

Например, для IPv4 192.0.2.10 при использовании префикса 64:ff9b::/96 получится:

64:ff9b::192.0.2.10


Клиент отправляет IPv6-пакет на этот адрес. NAT64-шлюз извлекает IPv4-адрес назначения, преобразует пакет и пересылает его серверу уже по IPv4.

Проверить DNS-ответ можно командой:

dig AAAA ipv4only.arpa


В сети с DNS64 такой запрос помогает обнаружить используемый NAT64-префикс.

⏺Главное ограничение: DNS64 не поможет приложению, которое обращается напрямую к IPv4-литералу и не умеет работать с IPv6. Для таких случаев могут потребоваться дополнительные механизмы, например CLAT в составе 464XLAT.

N.A.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Как проверить PoE-потребление без доступа к устройству

IP-камера периодически перезагружается, хотя сетевой линк работает нормально. Причина может быть не в сети, а в питании через PoE.


Чтобы это проверить, необязательно идти к камере с тестером. Управляемый PoE-коммутатор часто показывает параметры питания прямо через CLI.

⏺Смотрим общий бюджет PoE

На Cisco Catalyst:

show power inline


Команда показывает доступную мощность, сколько уже выделено подключённым устройствам и сколько осталось.

Важно не путать allocated power и фактическое потребление. Коммутатор может зарезервировать для камеры 15,4 Вт, хотя сейчас она использует значительно меньше.

⏺Проверяем конкретный порт

show power inline Gi1/0/10 detail


В зависимости от модели и версии ПО можно увидеть класс PoE, выделенную мощность, состояние питания и измеренное потребление.

Например, камера днём потребляет 6 Вт, а ночью включает ИК-подсветку и нагреватель. Потребление растёт, и если мощности недостаточно, устройство может перезагрузиться.

⏺Ищем события питания

show logging | include ILPOWER


На поддерживаемых Cisco Catalyst так можно найти сообщения об отказе в питании, превышении лимита или отключении PoE на порту.

Если коммутатор не показывает фактические ватты, ориентируемся на выделенную мощность, класс устройства и события контроллера PoE. Не все модели умеют измерять потребление в реальном времени.

N.A.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
4 команды для диагностики оптического линка в Linux

Оптический интерфейс может оставаться UP, даже когда качество сигнала уже ухудшилось. Поэтому при нестабильной связи стоит проверить не только состояние порта, но и сам трансивер.

⏺Проверить параметры SFP-модуля

ethtool -m eth0


Если модуль и драйвер поддерживают диагностику, увидим температуру, напряжение, мощность передатчика (Tx) и принимаемого сигнала (Rx).

Особенно интересен Rx Power. Слишком слабый сигнал может указывать на загрязнённые коннекторы, затухание или проблемы с оптикой. Сравнивать значение нужно с допустимым диапазоном конкретного модуля.

⏺Посмотреть ошибки интерфейса

ethtool -S eth0


Ищем счётчики CRC/FCS, symbol errors и другие ошибки приёма. Названия зависят от драйвера.
Важно смотреть не только абсолютные значения, но и растут ли они со временем.

⏺Проверить FEC

ethtool —show-fec eth0


На поддерживаемых интерфейсах команда покажет настроенный и активный режим Forward Error Correction.

Если доступны счётчики исправленных и неисправимых ошибок FEC, они помогут заметить ухудшение линии ещё до массовых потерь пакетов.

⏺Проверить согласованную скорость

ethtool eth0


Смотрим Speed, Duplex и Link detected. Так можно обнаружить, что интерфейс поднялся не в ожидаемом режиме.

N.A.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
️️️️️️️️️️️️📶 Сеть может работать стабильно годами, пока однажды не возникает проблема — тогда придется разбираться, что происходит между хостами.

Здесь уже недостаточно знать команды: важно понимать, как устроен стек сетевых протоколов и где искать причину сбоя.

На открытом уроке разберём:
➖ как устроен сетевой стек;
➖ на практике поработаем с сетевыми утилитами на хосте.

👍 Это поможет лучше понимать работу сети и увереннее проводить её отладку.

Урок подойдёт начинающим сетевым инженерам и всем, кто хочет системно разобраться в сетевых технологиях.

📆 5 ноября в 20:00 МСК

🎓 Занятие проходит в преддверии старта курса «Сетевой инженер. Базовый уровень». 

👉 Регистрируйтесь на открытый урок и начните разбираться в сетях с фундаментальных принципов: https://otus.pw/QHJR/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618
👍2👎1
Как Ethernet временно останавливает передачу

Представим, что сервер принимает трафик быстрее, чем успевает его обрабатывать. Буферы сетевой карты заполняются, и скоро начнутся потери пакетов.

Но Ethernet умеет не только отбрасывать кадры. В некоторых сетях он может попросить соседнее устройство временно прекратить передачу.

⏺Как это работает?

В стандарте IEEE 802.3x предусмотрены специальные PAUSE-кадры. Если включён Flow Control, перегруженный приёмник может отправить такой кадр соседу.

Внутри указывается время паузы в единицах по 512 битовых интервалов. 


Получив кадр, сосед временно приостанавливает обычную передачу данных по линку.

При этом PAUSE действует на весь линк, а не на отдельное TCP-соединение.

⏺Как проверить в Linux?

Посмотрим настройки сетевой карты:

ethtool -a eth0


В выводе интересуют RX и TX: разрешён ли приём PAUSE-кадров и может ли интерфейс отправлять их сам.

Статистику можно поискать через:

ethtool -S eth0 | grep -i pause


Названия счётчиков и их доступность зависят от драйвера.

⏺В чём подвох?

PAUSE помогает избежать переполнения буферов, но создаёт другую проблему: один перегруженный получатель способен затормозить весь трафик на физическом соединении.

Из-за этого Flow Control не всегда улучшает производительность. Иногда он просто переносит перегрузку на соседнее устройство.

N.A.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2