Обучающий канал по сетевому и системному администрированию. Сотрудничество: @dad_admin Биржа: https://telega.in/c/networkadm РКН: https://bit.ly/4ioc61C
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
iptables -t mangle -A POSTROUTING -o eth0 -j TTL --ttl-set 1
ip6tables -t mangle -A POSTROUTING -o eth0 -j HL --hl-set 1
iptables -A INPUT -i eth0 -m ttl ! --ttl-eq 64 -j DROP
ffmpeg -re -i video.mp4 -f mpegts "udp://239.0.0.1:1234?ttl=2"
Маршрутизация по 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 add fwmark 0x66 table vpn
iptables -t mangle -A OUTPUT -p tcp --dport 8080 -j MARK --set-mark 0x66
⚙️ Инструменты для сисадминов и специалистов ИБ
Шпаргалки
— работа восьми популярных протоколов, как работает Linux, протоколы TCP/IP и др.
Рецепты чистого кода
— cборник практических приёмов для улучшения качества программного кода.
rakkess
— плагин для быстрой проверки прав в Kubernetes.
Миграция в облако
— 5 самых частых ошибок.
Всё об ИБ за час
— подборка статей, которые помогут вам еще лучше разобраться в теме персональных данных.
Ещё больше полезного в канале CORTEL
➡️ Подписаться
Реклама ООО "Кортэл"
ИНН: 7816246925
Внутрисетевой MITM через netfilter queue
Иногда нужно изучить или модифицировать сетевой трафик в реальном времени — например, при исследовании IoT, тестировании безопасности или создании proxy-инструмента.
Linux позволяет это сделать через NFQUEUE.
Пример: перехватим HTTP-запросы в 192.168.1.0/24
.
Устанавливаем нужные пакеты:
apt install python3-scapy python3-netfilterqueue
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()
Когда ip route не хватает: policy-based routing на практике
У сервера два интерфейса — один в интернет, другой во внутреннюю сеть. Нужно, чтобы трафик с одного IP всегда шёл через нужный шлюз.
Классическая таблица маршрутов тут не спасает — нужен PBR.
⏺Проверяем интерфейсы и IP
ip addr
203.0.113.10
)192.168.100.10
)192.168.100.10
шло через eth1 и шлюз 192.168.100.1
.100 internal
ip route add default via 192.168.100.1 dev eth1 table internal
ip rule add from 192.168.100.10/32 table internal
ip rule
ip route show table internal
traceroute -s 192.168.100.10 8.8.8.8
#!/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
Саппорт, который всегда на связи и готов вам помочь.
Квалифицированная поддержка VPS-решений 24/7. Ваши данные в надежных руках
Виртуальные серверы на мощных процессорах. С нами ваши личные проекты будут в безопасности.
Надежный и защищенный интернет-канал для Вашего бизнеса.
Подпишитесь на канал, чтобы узнать больше о наших предложениях.
#реклама
О рекламодателе
7 популярных мифов о Service mesh, которые мешают вам его освоить 🚫
Service mesh окружен заблуждениями, из-за которых многие его боятся внедрять или считают бесполезным:
➖ «У него огромный оверхед из-за нагрузки на систему»
➖ «Для разработчика это лишнее, пусть DevOps разбираются»
➖ «Зачем он нужен, если есть API Gateway?
И многое другое.
Собрали противоречивые утверждения в одном файле и разобрались, где – правда, а где – миф.
📌 Забирайте полезный материал у бота-помощника в один клик.
erid: 2W5zFFxhUpY
Unicast flooding в Linux-сетях: почему хост получает весь трафик и как это фиксить
В некоторых сценариях Linux-машина, подключённая к коммутатору, неожиданно начинает получать не только свой трафик, но и чужой — например, трафик других контейнеров или виртуалок.
Это называется Unicast Flooding, и причина часто кроется в работе коммутатора и ARP-таблицы ядра.
Как это происходит
Unicast Flooding — это поведение L2-коммутатора, при котором он не знает, на каком порту находится MAC-адрес назначения.
ip neigh show
bridge fdb show
arping -c 1 -A -I eth0 192.168.1.100
while true; do arping -c 1 -A -I eth0 192.168.1.100; sleep 60; done
macvlan:
driver: macvlan
options:
parent: eth0
sysctl -w net.ipv4.conf.eth0.arp_notify=1
sysctl -w net.ipv4.conf.all.proxy_arp=1
eBPF-мониторинг: зеркалируем трафик с интерфейса без SPAN и veth
Когда tcpdump не хватает, а iptables мешают работе, на помощь приходит eBPF.
Он позволяет перехватывать трафик на лету и передавать его в пространство пользователя — с минимальным оверхедом и без модификации ядра.
sudo apt install clang llvm libbpf-dev iproute2 bpftool
// mirror.c
SEC("classifier")
int mirror_prog(struct __sk_buff *skb) {
bpf_clone_redirect(skb, 5 /* ifindex */, 0);
return TC_ACT_OK;
}
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
Импортозамещение IP-телефонии: миграция с CUCM на отечественную АТС
Эксперты «Инфосистемы Джет» приглашают на митап, где обсудят технические сложности перехода с Cisco UCM на российские системы и поделятся секретами успешной миграции.
Что в программе?
🔹Какие задачи решают заказчик, вендор и интегратор
🔹Массовый перенос настроек пользователей и телефонных аппаратов: обзор возможных вариантов
🔹Почему важно не только разбираться в устройстве системы телефонии, но и уметь писать собственные скрипты
🔹Реальный опыт миграции корпоративной телефонии: шаг за шагом
🔹Как сделать так, чтобы пользователь не заметил замену ядра телефонии
Когда: 28 мая в 11:00 МСК
Формат: онлайн-трансляция
✅ Регистрация
👩💻 Всем программистам посвящается!
Вот 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
🖼️ DevOps — t.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
📌 Гайды, шпаргалки, задачи, ресурсы и фишки для каждого языка программирования!
Неравнодушен к серверным и сетевым технологиям? Приходи на Selectel Infra MeetUp!
Selectel проводит мероприятие для инженеров дата-центров. Приходите, чтобы узнать о развитии технологий и оборудования в ЦОДах и получить советы по карьерному развитию.
📍23 мая, Москва (оффлайн и онлайн)
В программе:
— хардкорные лекции и практические воркшопы,
— карьерные консультации от экспертов,
— афтепати с розыгрышами призов и нетворкингом.
Посмотреть подробную программу и зарегистрироваться: https://slc.tl/fqu2k
Чтобы не пропустить митап и узнавать о других мероприятиях, воркшопах и бесплатных курсах Selectel, подписывайтесь на @selectel_events
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqvBQ7ac
Постоянно сталкиваетесь с инцидентами в поддержке?
Разбор инцидентов — важный этап в работе команды. Однако, как провести Postmortem, чтобы извлечь уроки, а не влезть в конфликт с коллегами? Узнайте на нашем бесплатном вебинаре «Postmortem: как провести разбор инцидента и избежать конфликтов с коллегами».
🎯 Что вас ждет на вебинаре?
Когда и зачем проводить Postmortem
Как правильно и нейтрально анализировать ошибки
Как избежать конфликтов и наладить коммуникацию в команде
Для кого этот вебинар?
Тимлиды, специалисты поддержки и проджекты, которые хотят научиться правильно работать с инцидентами и конфликтами в команде.
🎁 Понравится вебинар - приходите на курс «Руководитель поддержки в IT» со скидкой по промокоду SUPPORT_05.
🔗 Запишитесь на вебинар и узнайте все секреты грамотного анализа инцидентов: https://otus.pw/RBGA/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
"Протухший" ARP-кеш: почему локальный хост недоступен, хотя он жив
Всё работает — и вдруг ping до соседней машины перестаёт отвечать.
IP верный, интерфейс поднят, tcpdump молчит. Что это?
Часто причина — протухший ARP-кеш. Linux (и не только) кэширует MAC-адреса, и если сосед сменил IP или был перезапущен, вы продолжаете пытаться достучаться до старого MAC’а.
Как проверить:
ip neigh show
ip neigh flush dev eth0
ip neigh del 192.168.1.10 dev eth0
arping -c 3 192.168.1.10
ip neigh replace 192.168.1.10 lladdr <MAC> dev eth0
arping -A -I eth0 192.168.1.10
SIGINT внутри контейнера: как контейнеры обрабатывают сигналы, и что пойдёт не так
Когда вы отправляете SIGINT (Ctrl+C) или используете команду kill для контейнера, это может вести себя не так, как ожидается.
Контейнеры по умолчанию не всегда корректно обрабатывают сигналы, такие как SIGINT или SIGTERM, из-за особенностей их изоляции.
ENTRYPOINT ["tini", "--", "your-command"]
import signal
import sys
def signal_handler(sig, frame):
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
🚀⭐️ Разберётесь, как работают стандартные потоки в Linux и научитесь управлять вводом, выводом и ошибками в терминале
👉 Приглашаем на вебинар: Управление потоками ввода и вывода в Linux
На вебинаре вы узнаете:
- Что такое стандартные потоки ввода, вывода и ошибок
- Как перенаправлять потоки с помощью >, >>, <, 2>, | и других операторов
- Как использовать пайпы (конвейеры) для обработки данных в командной строке
- Как комбинировать команды, управлять выводом и создавать эффективные цепочки
В результате вебинара вы:
- Научитесь различать и использовать stdin, stdout и stderr
- Сможете перенаправлять потоки и использовать их в сценариях автоматизации
- Попробуете строить пайплайны и обрабатывать данные без создания временных файлов
- Поймёте, как вывод ошибок и данных влияет на поведение скриптов и программ.
🎁 Урок пройдет в преддверие старта курса «Administrator Linux. Basic». Все участники вебинара получат скидку на обучение.
👉 Для участия зарегистрируйтесь: https://otus.pw/SCNt/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
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
ip route add 198.51.100.0/24 via 192.0.2.1 dev dummy0
Тестируем нестабильный интернет через tc netem: эмулируем дропы и лаги
Ваше приложение должно работать при плохом интернете? Симулируем ситуацию прямо на staging-машине.
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
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
id -u vpnuser
# допустим, UID = 1001
ip rule add uidrange 1001-1001 lookup toinet
ip rule
ip route show table toinet
Чтобы полностью изолировать других, можно ещё в main таблице оставить blackhole default.
Когда brute-force не даёт покоя: быстрая настройка fail2ban для SSH
SSH-сервер завален попытками входа от ботов? Пароли отключены, но логи полны мусора? Настроим fail2ban — он будет банить нарушителей автоматически.
1️⃣Устанавливаем fail2ban
sudo apt install fail2ban # для Debian/Ubuntu
sudo dnf install fail2ban # для RHEL/AlmaLinux/Fedora
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
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
sudo fail2ban-client unban <IP>
BGP в деталях: расширенные сообщества и автоматическая фильтрация маршрутов
⏺Extended Communities в BGP
Расширенные сообщества (extended communities) — это более гибкий тип BGP communities, который состоит из 8 байт вместо стандартных 4.
Они позволяют передавать больше информации и поддерживают разные типы меток: например, route target, route origin, VPN-информацию и др.
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
То есть, вместо того чтобы каждый роутер фильтровал входящие маршруты вручную, можно отправить соседу список фильтров, и он перестанет присылать ненужные маршруты.
XDP (eXpress Data Path) в Linux: ускорение сети и защита от атак
XDP — это механизм, который позволяет перехватывать и обрабатывать сетевые пакеты на самом низком уровне — прямо в драйвере сетевой карты, до того, как они попадут в сетевой стек Linux.
Это открывает большие возможности для ускорения обработки трафика и защиты от атак.
SEC("xdp_drop")
int xdp_drop_func(struct xdp_md *ctx) {
return XDP_DROP;
}
clang -O2 -target bpf -c xdp_drop.c -o xdp_drop.o
ip link set dev eth0 xdp obj xdp_drop.o sec xdp_drop
ip -details link show dev eth0
Хотите освоить C++ с нуля и стать востребованным разработчиком?
Пройдите курс от OTUS и получите знания, которые откроют перед вами новые карьерные горизонты!
⚡️ Этот курс идеально подходит для начинающих и тех, кто хочет углубить свои знания. С нуля до уровня Middle Developer — вы освоите создание собственных типов данных, работу с многопоточностью и современными стандартами C++. Изучите лучшие практики проектирования, работу с памятью и сетью, а также освоите принцип работы с базами данных и CI/CD.
🔥 На обучении вы разработаете 2 реальных проекта для портфолио, а диплом OTUS поможет вам уверенно проходить собеседования в крупнейших компаниях. Станьте частью индустрии с актуальными знаниями!
👉 Оставьте заявку: https://otus.pw/NLjQI/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Silent Drop: как blackhole-маршруты помогают обезвредить вредный трафик
В сетях часто приходится блокировать нежелательный трафик — ботов, сканеров, подозрительные IP.
Самый распространённый способ — firewall (iptables, nftables).
sudo ip route add blackhole 203.0.113.0/24
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
TCP Fast Open: как ускорить установку соединения и что для этого нужно настроить
TCP Fast Open (TFO) — расширение TCP, которое позволяет при повторных соединениях отправлять данные уже в начальном пакете SYN, минуя обычный «трёхсторонний» рукопожатие без передачи данных.
Это снижает задержки и ускоряет обмен.
Как проверить поддержку и включить TFO на Linux
1️⃣Проверка поддержки ядра:
sysctl net.ipv4.tcp_fastopen
net.ipv4.tcp_fastopen = 3
sysctl -w net.ipv4.tcp_fastopen=3
listen 443 ssl fastopen=256;
curl --tcp-fastopen https://example.com
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&type=A' # DoH-запрос
sudo apt install cloudflared
cloudflared proxy-dns \
--port 53 \
--upstream https://1.1.1.1/dns-query
dig @127.0.0.1 wikipedia.org
# По имени хоста внутри TLS (SNI)
iptables -A OUTPUT -p tcp --dport 443 \
-m string --string "cloudflare-dns.com" --algo bm -j REJECT
docker run -it --dns 127.0.0.1 alpine
Reverse Path Filtering — защита, которая ломает
В Linux включена защита rp_filter, проверяющая, может ли система отправить ответ тому, кто прислал пакет, через тот же интерфейс.
Это предотвращает подделку IP, но в сложной маршрутизации часто мешает.
cat /proc/sys/net/ipv4/conf/all/rp_filter
cat /proc/sys/net/ipv4/conf/eth0/rp_filter
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
tcpdump -i eth0 icmp
Формат 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
Merion Academy – раздает пользу. У них на образовательной платформе есть целый раздел с бесплатными уроками по DevOps, Сетям, Программированию C#, Python, Java, Кибербезопу, Сетевому безопу, Этичному Хакингу, куча вебинаров и других полезностей – все они доступны бесплатно.
Лайфхак в том, что даже если вы не их ученик – т.е. не платили за курсы, доступ можно получить абсолютно бесплатно, схема рабочая:
1. По ссылке регаем новый аккаунт
2. Получаем доступ к платформе
3. Залезаем в раздел "Плюшки от Merion"
4. Выбираем понравившееся и получаем пользу
Понимание и использование протокола 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