networkadm | Unsorted

Telegram-канал networkadm - Network Admin

12610

Обучающий канал по сетевому и системному администрированию. Сотрудничество: @dad_admin Биржа: https://telega.in/c/networkadm РКН: https://bit.ly/4ioc61C

Subscribe to a channel

Network Admin

TTL как инструмент контроля: зачем ограничивать зону действия пакета

TTL (Time To Live) и его аналог в IPv6 — Hop Limit — это не просто счётчик “до рутера и обратно”. В правильных руках это способ управлять маршрутом, делать L3-фильтрацию и ограничивать область видимости трафика.

TTL уменьшается на каждом маршрутизаторе. Когда TTL достигает 0, пакет отбрасывается. Это можно использовать:
чтобы не дать пакету уйти за пределы локальной сети
чтобы ограничить жизненный цикл служебного трафика (например, в overlay-сетях или тестах)
чтобы ловить loop’ы маршрутизации

Пример 1: TTL = 1, чтобы оставить пакет внутри одного хоста или сети

ping -t 1 192.168.1.10     # Windows
ping -m 1 192.168.1.10 # Linux/macOS


Пакет не пройдёт через маршрутизатор. Подходит, например, если вы хотите проверить, что сервис слушает именно в этой подсети.

Пример 2: ограничиваем исходящий TTL iptables-ом

Чтобы все пакеты в сеть уходили с TTL=1:

iptables -t mangle -A POSTROUTING -o eth0 -j TTL --ttl-set 1


IPv6:

ip6tables -t mangle -A POSTROUTING -o eth0 -j HL --hl-set 1


Теперь маршрутизаторы будут отбрасывать такие пакеты. Это можно использовать, например, чтобы не позволить сервису “вылезать” наружу.

Пример 3: фильтрация по TTL — только локальный трафик

iptables -A INPUT -i eth0 -m ttl ! --ttl-eq 64 -j DROP


Многие системы отправляют пакеты с TTL=64. Если TTL отличается — скорее всего, пакет прошёл через минимум один маршрутизатор. Такой подход можно использовать в DMZ или на honeypot’ах.

Multicast и TTL

В multicast-сетях TTL — ключ к определению области рассылки:
• TTL = 1 — только локальная сеть
• TTL = 2..15 — ограниченные зоны (например, кампус, филиал)
• TTL > 15 — глобальное распространение

Пример настройки TTL в ffmpeg при стриме:

ffmpeg -re -i video.mp4 -f mpegts "udp://239.0.0.1:1234?ttl=2"


Mesh-сети и TTL

В mesh’ах (например, BATMAN, OLSR) TTL помогает управлять маршрутом и областью, куда доходит маршрутизируемый broadcast. Пакет “умирает”, не дойдя до всей сети. Это снижает шум.

N.A. ℹ️ Help

Читать полностью…

Network Admin

Маршрутизация по fwmark: когда IP уже не хватает

Если ip rule from ... не справляется (например, для приложений с динамическими IP), можно использовать fwmark — метку, проставляемую через iptables или cgroup.

Перенаправим часть трафика в другую таблицу

Допустим, мы хотим весь трафик, идущий на порт 8080, отправлять через VPN-интерфейс.

Добавим таблицу:

echo "200 vpn" >> /etc/iproute2/rt_tables


Пропишем маршрут туда:

ip route add default via 10.10.10.1 dev tun0 table vpn


Создаём ip rule с fwmark:

ip rule add fwmark 0x66 table vpn


Добавляем iptables-маркировку:

iptables -t mangle -A OUTPUT -p tcp --dport 8080 -j MARK --set-mark 0x66


Теперь весь исходящий трафик на 8080 будет идти через таблицу vpn — даже если у него другой source IP.

Это удобно при split routing, обходе фильтрации, перехвате трафика из приложений.

N.A. ℹ️ Help

Читать полностью…

Network Admin

⚙️ Инструменты для сисадминов и специалистов ИБ

Шпаргалки
— работа восьми популярных протоколов, как работает Linux, протоколы TCP/IP и др.

Рецепты чистого кода
— cборник практических приёмов для улучшения качества программного кода.

rakkess
— плагин для быстрой проверки прав в Kubernetes.

Миграция в облако
— 5 самых частых ошибок.

Всё об ИБ за час
— подборка статей, которые помогут вам еще лучше разобраться в теме персональных данных.

Ещё больше полезного в канале CORTEL

➡️ Подписаться

Реклама ООО "Кортэл"
ИНН: 7816246925

Читать полностью…

Network Admin

Внутрисетевой MITM через netfilter queue

Иногда нужно изучить или модифицировать сетевой трафик в реальном времени — например, при исследовании IoT, тестировании безопасности или создании proxy-инструмента.

Linux позволяет это сделать через NFQUEUE.

Пример: перехватим HTTP-запросы в 192.168.1.0/24.

Устанавливаем нужные пакеты:

apt install python3-scapy python3-netfilterqueue


Настраиваем iptables:

iptables -I FORWARD -p tcp --dport 80 -j NFQUEUE --queue-num 0


Простой перехватчик:

from netfilterqueue import NetfilterQueue
from scapy.all import *

def callback(pkt):
payload = pkt.get_payload()
scapy_pkt = IP(payload)
if scapy_pkt.haslayer(Raw):
print(">>>", scapy_pkt[Raw].load)
pkt.accept()

nfqueue = NetfilterQueue()
nfqueue.bind(0, callback)
nfqueue.run()


Перехватываем, логируем, можно модифицировать (но не забудьте про корректные TCP-поля, если редактируете).

Такой MITM отлично подходит для локального тестирования, особенно если совмещать с ARP-spoofing или bridge-интерфейсом.

N.A. ℹ️ Help

Читать полностью…

Network Admin

Когда ip route не хватает: policy-based routing на практике

У сервера два интерфейса — один в интернет, другой во внутреннюю сеть. Нужно, чтобы трафик с одного IP всегда шёл через нужный шлюз.

Классическая таблица маршрутов тут не спасает — нужен PBR.

Проверяем интерфейсы и IP

ip addr


Допустим:
• eth0 — внешний (IP: 203.0.113.10)
• eth1 — внутренний (IP: 192.168.100.10)

Хотим, чтобы всё от 192.168.100.10 шло через eth1 и шлюз 192.168.100.1.

Создаём новую таблицу маршрутов

Редактируем /etc/iproute2/rt_tables, добавляем:

100 internal


Прописываем маршрут в эту таблицу

ip route add default via 192.168.100.1 dev eth1 table internal


Можно добавить конкретные маршруты, если нужен не default.

Добавляем правило по источнику

ip rule add from 192.168.100.10/32 table internal


Это правило говорит: если источник — 192.168.100.10, использовать таблицу internal.

Проверяем

ip rule
ip route show table internal


И можно трассировку проверить:

traceroute -s 192.168.100.10 8.8.8.8


Сохраняем правила

В systemd-системах создаём networkd-unit или используем скрипты /etc/network/if-up.d/.

Пример:

#!/bin/sh
ip route add default via 192.168.100.1 dev eth1 table internal
ip rule add from 192.168.100.10/32 table internal


N.A. ℹ️ Help

Читать полностью…

Network Admin

Саппорт, который всегда на связи и готов вам помочь.
Квалифицированная поддержка VPS-решений 24/7. Ваши данные в надежных руках
Виртуальные серверы на мощных процессорах. С нами ваши личные проекты будут в безопасности.
Надежный и защищенный интернет-канал для Вашего бизнеса.
Подпишитесь на канал, чтобы узнать больше о наших предложениях.

#реклама
О рекламодателе

Читать полностью…

Network Admin

7 популярных мифов о Service mesh, которые мешают вам его освоить 🚫

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

➖ «У него огромный оверхед из-за нагрузки на систему»
➖ «Для разработчика это лишнее, пусть DevOps разбираются»
➖ «Зачем он нужен, если есть API Gateway?
И многое другое.

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

📌 Забирайте полезный материал у бота-помощника в один клик.

erid: 2W5zFFxhUpY

Читать полностью…

Network Admin

Unicast flooding в Linux-сетях: почему хост получает весь трафик и как это фиксить

В некоторых сценариях Linux-машина, подключённая к коммутатору, неожиданно начинает получать не только свой трафик, но и чужой — например, трафик других контейнеров или виртуалок.

Это называется Unicast Flooding, и причина часто кроется в работе коммутатора и ARP-таблицы ядра.

Как это происходит

Unicast Flooding — это поведение L2-коммутатора, при котором он не знает, на каком порту находится MAC-адрес назначения. 


В этом случае он флудит unicast-пакет на все порты. Причина: либо MAC-таблица «протухла», либо MAC-адреса не обновляются вовремя.

На Linux это может случиться, если:
контейнеры неактивны и их MAC не «светится» в сети;
используется виртуальный мост (bridge), и ядро не отправляет gratuitous ARP;
используются namespaces без проброса трафика наружу.

Как проверить

ip neigh show
bridge fdb show


Если ARP или FDB-память неактуальна, начнётся флуда.

Как решить

1️⃣Настроить Gratuitous ARP вручную или через cron:

arping -c 1 -A -I eth0 192.168.1.100


Отправляет “я здесь!” и обновляет ARP-таблицы у соседей.

2️⃣Использовать системный таймер/скрипт:

while true; do arping -c 1 -A -I eth0 192.168.1.100; sleep 60; done


3️⃣Включить стабильный MAC в виртуалках или контейнерах:
Для LXC/Docker:

macvlan:
driver: macvlan
options:
parent: eth0


4️⃣ Включить proxy_arp и arp_notify:

sysctl -w net.ipv4.conf.eth0.arp_notify=1
sysctl -w net.ipv4.conf.all.proxy_arp=1


N.A. ℹ️ Help

Читать полностью…

Network Admin

eBPF-мониторинг: зеркалируем трафик с интерфейса без SPAN и veth

Когда tcpdump не хватает, а iptables мешают работе, на помощь приходит eBPF.

Он позволяет перехватывать трафик на лету и передавать его в пространство пользователя — с минимальным оверхедом и без модификации ядра.


eBPF (extended Berkeley Packet Filter) — технология в ядре Linux, позволяющая писать мини-программы, которые встраиваются в сетевой стек, точки трассировки и syscalls.

Это делает eBPF идеальным для мониторинга и анализа сетевых событий, зеркалирования пакетов и фильтрации с аудитом.

Для зеркалирования чаще всего используют:
XDP (eXpress Data Path) — супербыстрый перехват трафика до IP-стека
TC (Traffic Control) BPF — перехват на ingress/egress интерфейса

Перехват трафика через TC BPF

Установка нужных тулов:

sudo apt install clang llvm libbpf-dev iproute2 bpftool


Скомпилируем простую eBPF-программу (пример на C):

// mirror.c
SEC("classifier")
int mirror_prog(struct __sk_buff *skb) {
bpf_clone_redirect(skb, 5 /* ifindex */, 0);
return TC_ACT_OK;
}


Здесь 5 — индекс интерфейса, куда будем зеркалить. Получаем через:

ip link show


Компиляция:

clang -O2 -target bpf -c mirror.c -o mirror.o


Загрузка:

tc qdisc add dev eth0 clsact
tc filter add dev eth0 ingress bpf da obj mirror.o sec classifier


Теперь каждый входящий пакет на eth0 будет дублироваться на нужный интерфейс.

N.A. ℹ️ Help

Читать полностью…

Network Admin

Импортозамещение IP-телефонии: миграция с CUCM на отечественную АТС

Эксперты «Инфосистемы Джет» приглашают на митап, где обсудят технические сложности перехода с Cisco UCM на российские системы и поделятся секретами успешной миграции.

Что в программе?
🔹Какие задачи решают заказчик, вендор и интегратор
🔹Массовый перенос настроек пользователей и телефонных аппаратов: обзор возможных вариантов
🔹Почему важно не только разбираться в устройстве системы телефонии, но и уметь писать собственные скрипты
🔹Реальный опыт миграции корпоративной телефонии: шаг за шагом
🔹Как сделать так, чтобы пользователь не заметил замену ядра телефонии

Когда: 28 мая в 11:00 МСК

Формат: онлайн-трансляция

Регистрация

Читать полностью…

Network Admin

👩‍💻 Всем программистам посвящается!

Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:

Выбирай своё направление:

👩‍💻 Python — t.me/python_ready
🤔 Хакинг & ИБ — t.me/hacking_ready
👩‍💻 Linux — t.me/linux_ready
🖥 Базы Данных & SQL — t.me/sql_ready
👩‍💻 C/C++ — /channel/cpp_ready
👩‍💻 C# & Unity — t.me/csharp_ready
👩‍💻 Всё IT — t.me/it_ready
👩‍💻 Frontend — t.me/frontend_ready
📱 JavaScript — t.me/javascript_ready
👩‍💻 Backend — t.me/backend_ready
📱 GitHub — t.me/github_ready
🖼️ DevOpst.me/devops_ready
👩‍💻 Bash & Shell — t.me/bash_ready
👩‍💻 Нейросетиt.me/neuro_ready
👩‍💻 Java — t.me/java_ready
📖 IT Книги — t.me/books_ready
🖥 Design — t.me/design_ready

📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!

Читать полностью…

Network Admin

Неравнодушен к серверным и сетевым технологиям? Приходи на Selectel Infra MeetUp!

Selectel проводит мероприятие для инженеров дата-центров. Приходите, чтобы узнать о развитии технологий и оборудования в ЦОДах и получить советы по карьерному развитию.

📍23 мая, Москва (оффлайн и онлайн)

В программе:
— хардкорные лекции и практические воркшопы,
— карьерные консультации от экспертов,
— афтепати с розыгрышами призов и нетворкингом.

Посмотреть подробную программу и зарегистрироваться: https://slc.tl/fqu2k

Чтобы не пропустить митап и узнавать о других мероприятиях, воркшопах и бесплатных курсах Selectel, подписывайтесь на @selectel_events

Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqvBQ7ac

Читать полностью…

Network Admin

Постоянно сталкиваетесь с инцидентами в поддержке?
Разбор инцидентов — важный этап в работе команды. Однако, как провести Postmortem, чтобы извлечь уроки, а не влезть в конфликт с коллегами? Узнайте на нашем бесплатном вебинаре «Postmortem: как провести разбор инцидента и избежать конфликтов с коллегами».

🎯 Что вас ждет на вебинаре?
Когда и зачем проводить Postmortem
Как правильно и нейтрально анализировать ошибки
Как избежать конфликтов и наладить коммуникацию в команде

Для кого этот вебинар?
Тимлиды, специалисты поддержки и проджекты, которые хотят научиться правильно работать с инцидентами и конфликтами в команде.

🎁 Понравится вебинар - приходите на курс «Руководитель поддержки в IT» со скидкой по промокоду SUPPORT_05.

🔗 Запишитесь на вебинар и узнайте все секреты грамотного анализа инцидентов: https://otus.pw/RBGA/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Network Admin

"Протухший" ARP-кеш: почему локальный хост недоступен, хотя он жив

Всё работает — и вдруг ping до соседней машины перестаёт отвечать.
IP верный, интерфейс поднят, tcpdump молчит. Что это?


Часто причина — протухший ARP-кеш. Linux (и не только) кэширует MAC-адреса, и если сосед сменил IP или был перезапущен, вы продолжаете пытаться достучаться до старого MAC’а.

Как проверить:

ip neigh show


Если рядом с нужным IP статус FAILED, STALE или INCOMPLETE, значит ARP-запрос либо не обновлён, либо не получает ответа.

Как решить:
1️⃣Принудительно очистить ARP-запись:

ip neigh flush dev eth0


Или для конкретного IP:

ip neigh del 192.168.1.10 dev eth0


2️⃣Переинициализировать ARP с помощью arping:

arping -c 3 192.168.1.10


3️⃣Отправить gratuitous ARP с нужного хоста:

На целевом хосте (если есть доступ):

ip neigh replace 192.168.1.10 lladdr <MAC> dev eth0


Или:

arping -A -I eth0 192.168.1.10


N.A. ℹ️ Help

Читать полностью…

Network Admin

SIGINT внутри контейнера: как контейнеры обрабатывают сигналы, и что пойдёт не так

Когда вы отправляете SIGINT (Ctrl+C) или используете команду kill для контейнера, это может вести себя не так, как ожидается.

Контейнеры по умолчанию не всегда корректно обрабатывают сигналы, такие как SIGINT или SIGTERM, из-за особенностей их изоляции.


Что происходит при отправке сигнала контейнеру?

SIGINT (Ctrl+C): Обычно этот сигнал прерывает работу процесса. Однако в контейнере, если процесс не настроен на обработку сигнала, контейнер может не завершиться корректно.
SIGTERM (kill): Эта команда обычно отправляется для корректного завершения работы процесса. Но если приложение в контейнере не поддерживает обработку этого сигнала, оно может завершиться некорректно.

Как правильно обрабатывать сигналы в контейнерах?

1️⃣Использование tini: Это утилита для корректной обработки сигналов в контейнерах. Вместо того чтобы запускать приложение напрямую, используйте tini для перехвата сигналов:

ENTRYPOINT ["tini", "--", "your-command"]


2️⃣Обработка сигналов внутри приложения: Убедитесь, что ваше приложение правильно обрабатывает сигналы. Например, в Python можно использовать библиотеку signal для ловли и корректной обработки сигналов:

import signal
import sys

def signal_handler(sig, frame):
sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)


3️⃣Использование Docker команд: Команды типа docker stop корректно отправляют SIGTERM и дают контейнеру время на завершение работы.

Проблемы
1. Необработанные сигналы: Если приложение не настроено на обработку сигнала, оно может завершиться некорректно.
2. Сигналы не передаются: Без правильной конфигурации сигналы могут не дойти до приложения.

N.A. ℹ️ Help

Читать полностью…

Network Admin

🚀⭐️ Разберётесь, как работают стандартные потоки в Linux и научитесь управлять вводом, выводом и ошибками в терминале

👉 Приглашаем на вебинар: Управление потоками ввода и вывода в Linux

На вебинаре вы узнаете:
- Что такое стандартные потоки ввода, вывода и ошибок
- Как перенаправлять потоки с помощью >, >>, <, 2>, | и других операторов
- Как использовать пайпы (конвейеры) для обработки данных в командной строке
- Как комбинировать команды, управлять выводом и создавать эффективные цепочки

В результате вебинара вы:
- Научитесь различать и использовать stdin, stdout и stderr
- Сможете перенаправлять потоки и использовать их в сценариях автоматизации
- Попробуете строить пайплайны и обрабатывать данные без создания временных файлов
- Поймёте, как вывод ошибок и данных влияет на поведение скриптов и программ.

🎁 Урок пройдет в преддверие старта курса «Administrator Linux. Basic». Все участники вебинара получат скидку на обучение.

👉 Для участия зарегистрируйтесь: https://otus.pw/SCNt/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Network Admin

Dummy-интерфейсы: зачем они нужны и как использовать

Интерфейс dummy — это виртуальный интерфейс, не связанный с железом.

Он не передаёт пакеты, но может иметь IP, участвовать в маршрутизации и BGP-анонсе.

Создание dummy-интерфейса:

ip link add dummy0 type dummy
ip link set dummy0 up
ip addr add 192.0.2.1/32 dev dummy0


Теперь на dummy0 «висит» IP, который можно использовать как исходный адрес, next-hop в маршрутах или для рекламы в BGP.

Зачем это:

— Привязка сервисов к стабильному IP, не зависящему от физических интерфейсов
— Роутинг через VRF или namespaces, даже если нет «реального» интерфейса
— BGP-анонсы через loopback-like интерфейс
— Прокси или HA-инфраструктура, где IP «мигрирует» между хостами (например, через VRRP)

Пример использования с маршрутом:

ip route add 198.51.100.0/24 via 192.0.2.1 dev dummy0


Это работает, даже если 192.0.2.1 — не пингуется, потому что dummy всегда up. Но благодаря этому можно сделать локальную маршрутизацию или симулировать upstream.

N.A. ℹ️ Help

Читать полностью…

Network Admin

Тестируем нестабильный интернет через tc netem: эмулируем дропы и лаги

Ваше приложение должно работать при плохом интернете? Симулируем ситуацию прямо на staging-машине.


Пример: эмуляция 10% потерь пакетов и задержки 300ms ± 100ms.

Настраиваем на интерфейсе:

tc qdisc add dev eth0 root netem delay 300ms 100ms distribution normal loss 10%


Проверяем:

tc qdisc show dev eth0


Убираем:

tc qdisc del dev eth0 root


Можно задать параметры отдельно:
• loss — потери пакетов
• delay — задержка
• corrupt — искажение пакетов
• duplicate — дублирование

N.A. ℹ️ Help

Читать полностью…

Network Admin

ip rule + UID: ограничиваем выход в интернет только для одного пользователя

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

Это можно сделать через policy-based routing и UID-based правила.

К примеру: пользователь vpnuser должен иметь доступ наружу, все остальные — нет.

Добавляем новую таблицу маршрутов:

echo "200 toinet" >> /etc/iproute2/rt_tables
ip route add default via 192.168.1.1 dev eth0 table toinet


Получаем UID:

id -u vpnuser
# допустим, UID = 1001


Добавляем правило маршрутизации:

ip rule add uidrange 1001-1001 lookup toinet


Проверяем:

ip rule
ip route show table toinet


Теперь любой процесс от имени vpnuser сможет выйти в интернет, а остальным вернёт unreachable.

Чтобы полностью изолировать других, можно ещё в main таблице оставить blackhole default.


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

N.A. ℹ️ Help

Читать полностью…

Network Admin

Когда brute-force не даёт покоя: быстрая настройка fail2ban для SSH

SSH-сервер завален попытками входа от ботов? Пароли отключены, но логи полны мусора? Настроим fail2ban — он будет банить нарушителей автоматически.

1️⃣Устанавливаем fail2ban

sudo apt install fail2ban  # для Debian/Ubuntu  
sudo dnf install fail2ban # для RHEL/AlmaLinux/Fedora


2️⃣Создаём конфиг

Не редактируйте /etc/fail2ban/jail.conf, скопируйте его:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


Или создайте /etc/fail2ban/jail.d/sshd.local — этого достаточно.

Пример конфига:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log # для Debian/Ubuntu
# logpath = /var/log/secure # для RHEL/AlmaLinux
maxretry = 3
findtime = 600
bantime = 3600


3️⃣Запускаем и включаем автозагрузку

sudo systemctl enable --now fail2ban


4️⃣Проверяем статус

sudo fail2ban-client status sshd


Видно, сколько IP заблокировано.

5️⃣Проверяем, что бан работает

Сымитируйте неверный вход — через 3 ошибки IP попадёт в бан.

6️⃣Разблокировка IP вручную

sudo fail2ban-client unban <IP>


N.A. ℹ️ Help

Читать полностью…

Network Admin

BGP в деталях: расширенные сообщества и автоматическая фильтрация маршрутов

Extended Communities в BGP

Расширенные сообщества (extended communities) — это более гибкий тип BGP communities, который состоит из 8 байт вместо стандартных 4.

Они позволяют передавать больше информации и поддерживают разные типы меток: например, route target, route origin, VPN-информацию и др.


Почему это важно?
Стандартные communities ограничены, а extended communities используют, например, в MPLS VPN для маркировки маршрутов по tenant (арендатору), разделения трафика и управления более сложными политиками.

Пример использования:

В MPLS VPN маршруты маркируются extended community типа route target:
RT:65000:100
Это помогает маршрутизаторам понять, к какому VPN принадлежит маршрут.

Настройка на Cisco:

ip community-list expanded VPN_RT permit 65000:100
route-map SET_RT permit 10
set extcommunity rt 65000:100
router bgp 65000
neighbor 10.0.0.1 route-map SET_RT out


ORF — Outgoing Route Filter

ORF — это механизм, который позволяет автоматически фильтровать маршруты на стороне соседа, уменьшая объем передаваемых маршрутов.

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


Например: Роутер А хочет получать только определённые префиксы от роутера Б. Вместо фильтрации на стороне А, он отправляет ORF-правила Б, и тот не рассылает лишние маршруты.

N.A. ℹ️ Help

Читать полностью…

Network Admin

XDP (eXpress Data Path) в Linux: ускорение сети и защита от атак

XDP — это механизм, который позволяет перехватывать и обрабатывать сетевые пакеты на самом низком уровне — прямо в драйвере сетевой карты, до того, как они попадут в сетевой стек Linux.

Это открывает большие возможности для ускорения обработки трафика и защиты от атак.


Как работает XDP?
XDP загружается в сетевой драйвер и обрабатывает пакеты сразу после их получения от сетевой карты.
Программы XDP пишутся на C или eBPF и загружаются в ядро.
Можно быстро принимать решения: пропустить, отбросить, изменить или перенаправить пакет.
Это снижает нагрузку на остальной сетевой стек и ускоряет обработку.

Как начать использовать XDP?
1️⃣Установите инструменты для разработки
• clang, llvm, iproute2 с поддержкой XDP
• bpfcc-tools или libbpf для удобной работы с eBPF

2️⃣Напишите простую программу на C с eBPF-API: Например, программа, которая отбрасывает все пакеты (xdp_drop.c):

SEC("xdp_drop")
int xdp_drop_func(struct xdp_md *ctx) {
return XDP_DROP;
}


3️⃣Соберите программу в объектный файл:

clang -O2 -target bpf -c xdp_drop.c -o xdp_drop.o


4️⃣Загрузите программу на интерфейс:

ip link set dev eth0 xdp obj xdp_drop.o sec xdp_drop


5️⃣Проверьте состояние:

ip -details link show dev eth0


N.A. ℹ️ Help

Читать полностью…

Network Admin

Хотите освоить C++ с нуля и стать востребованным разработчиком?

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

⚡️ Этот курс идеально подходит для начинающих и тех, кто хочет углубить свои знания. С нуля до уровня Middle Developer — вы освоите создание собственных типов данных, работу с многопоточностью и современными стандартами C++. Изучите лучшие практики проектирования, работу с памятью и сетью, а также освоите принцип работы с базами данных и CI/CD.

🔥 На обучении вы разработаете 2 реальных проекта для портфолио, а диплом OTUS поможет вам уверенно проходить собеседования в крупнейших компаниях. Станьте частью индустрии с актуальными знаниями!

👉 Оставьте заявку: https://otus.pw/NLjQI/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Network Admin

Silent Drop: как blackhole-маршруты помогают обезвредить вредный трафик

В сетях часто приходится блокировать нежелательный трафик — ботов, сканеров, подозрительные IP.

Самый распространённый способ — firewall (iptables, nftables). 


Но иногда этот метод слишком «шумный»: при блокировке отправляется ответ ICMP или TCP RST, что позволяет злоумышленнику понять, что его трафик заблокирован.

Чтобы избежать этого, используют blackhole-маршруты — специальные маршруты в ядре Linux, которые просто «поглощают» пакеты.

Пакеты с указанного IP или подсети просто исчезают — ни ответа, ни ошибок. Это как будто таких адресов и нет.

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

В Linux можно добавить маршрут с типом blackhole, prohibit или unreachable. Они отличаются по типу возвращаемых ICMP-сообщений или их отсутствию:
blackhole — пакеты просто отбрасываются без ответа
prohibit — отправляет ICMP “Communication administratively prohibited”
unreachable — отправляет ICMP “Network unreachable” или “Host unreachable”

Выбирая между ними, можно регулировать степень «тихого» блокирования.

Настройка blackhole-маршрута

Чтобы «поглотить» трафик к подсети 203.0.113.0/24, выполним:

sudo ip route add blackhole 203.0.113.0/24


Теперь любой пакет с хоста, который пытается достучаться до этой подсети, просто исчезнет — ни ответа, ни ошибок.

Если нужно, чтобы был ответ с ICMP запрещено, используйте:

sudo ip route add prohibit 203.0.113.0/24


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

ip route show table main | grep 203.0.113


Для удаления маршрута:

sudo ip route del blackhole 203.0.113.0/24


N.A. ℹ️ Help

Читать полностью…

Network Admin

TCP Fast Open: как ускорить установку соединения и что для этого нужно настроить

TCP Fast Open (TFO) — расширение TCP, которое позволяет при повторных соединениях отправлять данные уже в начальном пакете SYN, минуя обычный «трёхсторонний» рукопожатие без передачи данных.

Это снижает задержки и ускоряет обмен.

Как проверить поддержку и включить TFO на Linux

1️⃣Проверка поддержки ядра:

sysctl net.ipv4.tcp_fastopen


Вывод должен содержать не ноль, например:

net.ipv4.tcp_fastopen = 3


2️⃣Включение TFO:

sysctl -w net.ipv4.tcp_fastopen=3


(Значение 3 включает клиентскую и серверную поддержку)

3️⃣Настройка приложения (например, nginx) для использования TFO — в конфиге:

listen 443 ssl fastopen=256;


4️⃣Проверка на клиенте с помощью curl:

curl --tcp-fastopen https://example.com


N.A. ℹ️ Help

Читать полностью…

Network Admin

DNS over HTTPS: как он обходит фильтрацию и как с этим работать

Обычный DNS — открытый и легко перехватывается. Поэтому корпоративные сети часто блокируют нежелательные ресурсы через анализ DNS-запросов.

Но DNS over HTTPS (DoH) шифрует их внутри HTTPS, и такие правила больше не работают.

Как понять, что используется DoH

В Linux

dig @1.1.1.1 openai.com +short         # обычный DNS
curl -H 'accept: application/dns-json' \
'https://cloudflare-dns.com/dns-query?name=openai.com&amp;type=A' # DoH-запрос


В браузерах
Firefox: about:config → network.trr.mode
Chrome: chrome://settings/security → “Use secure DNS”

Используем DoH-клиент локально

sudo apt install cloudflared

cloudflared proxy-dns \
--port 53 \
--upstream https://1.1.1.1/dns-query


Теперь все запросы на 127.0.0.1:53 идут по HTTPS к Cloudflare.

dig @127.0.0.1 wikipedia.org


Как админы пытаются блокировать DoH

# По имени хоста внутри TLS (SNI)
iptables -A OUTPUT -p tcp --dport 443 \
-m string --string "cloudflare-dns.com" --algo bm -j REJECT


Но это легко обойти: смена провайдера, self-hosted DoH, IP over HTTPS и другие уловки.

Использование в Docker

docker run -it --dns 127.0.0.1 alpine


Контейнеры тоже начнут использовать DoH — удобно для обхода фильтрации или изолированной отладки.

N.A. ℹ️ Help

Читать полностью…

Network Admin

Reverse Path Filtering — защита, которая ломает

В Linux включена защита rp_filter, проверяющая, может ли система отправить ответ тому, кто прислал пакет, через тот же интерфейс.

Это предотвращает подделку IP, но в сложной маршрутизации часто мешает.


Где может сломаться:

— Несколько интерфейсов и сложные маршруты
— ip rule + кастомные таблицы
— VPN и туннели (WireGuard, IPsec, GRE)
— VRF
— Контейнеры с bridge-сетью или host networking

В этих случаях трафик может быть дропнут, даже если на tcpdump он приходит.

Как диагностировать:

Посмотреть текущее значение:

cat /proc/sys/net/ipv4/conf/all/rp_filter


Проверить отдельно для интерфейса:

cat /proc/sys/net/ipv4/conf/eth0/rp_filter


Значения:
• 0 — выключено
• 1 — loose (только проверка по маршрутам)
• 2 — strict (интерфейс + маршрут)

Временно изменить:

sysctl -w net.ipv4.conf.all.rp_filter=0
sysctl -w net.ipv4.conf.eth0.rp_filter=0


Постоянно:

echo "net.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.d/99-custom.conf
echo "net.ipv4.conf.eth0.rp_filter = 0" >> /etc/sysctl.d/99-custom.conf
sysctl --system


Проверить работу:

Если подозрение на rp_filter, запустите ping или curl и параллельно смотрите tcpdump:

tcpdump -i eth0 icmp


Если ICMP-запросы приходят, но нет ответа — это может быть rp_filter.

Что помогает:

Отключение rp_filter для интерфейсов с кастомной маршрутизацией
Использование loose-режима (1) вместо strict (2)
Проверка ip route get <IP> — должна совпадать с тем, откуда пришёл пакет

N.A. ℹ️ Help

Читать полностью…

Network Admin

Формат Type Length Value (TLV) в компьютерных сетях

Формат Type Length Value (TLV) широко используется для передачи данных в сетевых протоколах. Одним из примеров является протокол маршрутизации IS-IS, где TLV используется для упаковки информации о маршрутах и других параметрах сети.

TLV состоит из трёх основных компонентов:

• Тип (Type): Определяет, какой тип информации передается.
• Длина (Length): Указывает длину данных.
• Значение (Value): Сами данные, которые могут быть как фиксированной, так и переменной длины.

Пример использования TLV в IS-IS

В IS-IS каждый TLV может содержать информацию о различных версиях IP. Например:

• Тип 135: Передает информацию по IPv4, содержащую такие поля, как метрика и префикс.
• Тип 236: Похож на тип 135, но передает информацию по IPv6.

TLV позволяет передавать как данные фиксированной длины (например, метрику), так и данные переменной длины (например, префикс). Пример с IPv4 показывает, как префикс может иметь переменную длину в зависимости от данных, передаваемых в других полях TLV.

Гибкость TLV

Формат TLV предоставляет гибкость в передаче данных:

• Гибкость в форматировании: Протокол может адаптироваться, добавляя новые типы данных без необходимости изменения всей сети.
• Автономность данных: Каждый TLV является самостоятельным блоком информации, который можно легко использовать в других контекстах.

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

N.A. ℹ️ Help

Читать полностью…

Network Admin

Merion Academy – раздает пользу. У них на образовательной платформе есть целый раздел с бесплатными уроками по DevOps, Сетям, Программированию C#, Python, Java, Кибербезопу, Сетевому безопу, Этичному Хакингу, куча вебинаров и других полезностей – все они доступны бесплатно.

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

1. По ссылке регаем новый аккаунт
2. Получаем доступ к платформе
3. Залезаем в раздел "Плюшки от Merion"
4. Выбираем понравившееся и получаем пользу

Читать полностью…

Network Admin

Понимание и использование протокола DNSSEC

DNS — основа Интернета, но он подвержен атакам, таким как Man-in-the-Middle и Cache Poisoning, где злоумышленники могут подменить DNS-ответы.

DNSSEC (Domain Name System Security Extensions) решает эту проблему, обеспечивая защиту целостности и подлинности DNS-запросов с помощью криптографических методов.

Как работает DNSSEC?
Цифровая подпись: Ответы DNS подписываются приватным ключом, а получатель может проверить их подлинность с помощью публичного ключа.
Цепочка доверия: Публичные ключи проверяются через цепочку доверия, начиная с корневого DNS-сервера.

Почему это важно:

DNSSEC предотвращает:
Man-in-the-Middle атаки — защита от подделки DNS-ответов.
Cache Poisoning — защита от подмены данных в кэше DNS-сервера.
Подделку ответов — гарантия, что данные не были изменены.

Как настроить DNSSEC?
1️⃣Генерация ключей: Создайте пару ключей (приватный и публичный) для домена.
2️⃣Подпись записей: Подпишите DNS-записи приватным ключом.
3️⃣Добавление записей на сервер: Обновите DNS-записи, добавив RRSIG и DNSKEY.
4️⃣Проверка: Убедитесь, что все записи правильно подписаны и работают.

N.A. ℹ️ Help

Читать полностью…
Subscribe to a channel