Обучающий канал по сетевому и системному администрированию. Сотрудничество: @dad_admin Биржа: https://telega.in/c/networkadm РКН: https://bit.ly/4ioc61C
Тестируем нестабильный интернет через 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
VRF и network namespaces в Linux: два способа изолировать сетевой трафик
Современные Linux-хосты — это не просто сервера, а целые мини-датацентры. Контейнеры, агенты, сервисы, туннели — всё крутится внутри одного ядра.
И всё это нужно грамотно изолировать по сети: с разными маршрутами, правилами и DNS.
ip link add vrf-blue type vrf table 101
ip link set vrf-blue up
ip link set eth1 master vrf-blue
ip route add table 101 default via 192.0.2.1 dev eth1
ip netns add red
ip link add veth0 type veth peer name veth1
ip link set veth1 netns red
ip addr add 10.10.10.1/24 dev veth0
ip link set veth0 up
ip netns exec red ip addr add 10.10.10.2/24 dev veth1
ip netns exec red ip link set veth1 up
ip netns exec red ip route add default via 10.10.10.1
L2 over L3: когда нужен Ethernet там, где остался только IP
Иногда нужно передать L2-сегмент через L3-сеть — например, при миграции офиса, подключении старых систем без маршрутизации или восстановлении legacy-инфры.
Ниже — практичный обзор VXLAN, GRETAP и L2TPv3, с примерами и кейсами.
ip link add vxlan0 type vxlan id 42 dev eth0 remote 192.0.2.1 dstport 4789
bridge fdb add 00:11:22:33:44:55 dev vxlan0 dst 192.0.2.1
ip link add gretap0 type gretap local 10.0.0.1 remote 10.0.0.2
ip link set gretap0 up
brctl addif br0 gretap0
Внутрисетевой 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: от основ к профессиональному использованию»
14 мая в 19:00 (МСК) | Онлайн | Бесплатно
✔️Регистрация
Linux уже давно перестал быть инструментом исключительно для системных администраторов. Сегодня это необходимый навык для DevOps-инженеров, специалистов по кибербезопасности и всех, кто работает с IT-инфраструктурой.
На нашем вебинаре мы:
▪️ Развеем мифы о сложности Linux и покажем, как начать работать с ним уверенно
▪️ Продемонстрируем практическое применение в реальных рабочих задачах
▪️ Расскажем о карьерных перспективах для специалистов, владеющих Linux
▪️ Дадим пошаговый алгоритм освоения системы
Особое внимание уделим:
✔ Работе с терминалом (основные команды и их применение)
✔ Решению типовых задач системного администрирования
✔ Возможностям для профессионального роста
Ведущий: Дмитрий Семьянов — действующий специалист по пентесту, куратор курса «Основы Linux».
Не пропустите! Регистрация здесь.
🚀 Трудности с регистрацией? Пишите @Codeby_Academy
VRF и network namespaces: как изолировать сети внутри одного Linux
Всё больше инфраструктуры собирается внутри одного хоста: контейнеры, сервисы, изолированные агенты.
Но как сделать так, чтобы они не пересекались по сети? Чтобы у них были свои маршруты, DNS и iptables, без влияния на хост?
ip link add vrf-red type vrf table 1001
ip link set vrf-red up
ip link set eth1 master vrf-red
ip route add table 1001 default via 10.0.0.1 dev eth1
ip netns add red
ip link add veth0 type veth peer name veth1
ip link set veth1 netns red
ip netns exec red ip addr add 192.168.1.1/24 dev veth1
ip netns exec red ip link set veth1 up
ip netns exec red ip route add default via 192.168.1.254
Network namespaces дают полную изоляцию — особенно полезны для контейнеров, VPN, демонов и перехвата трафика.
Когда iptables -F — плохая идея
Многие админы по привычке делают iptables -F, чтобы быстро сбросить правила.
Но в некоторых ситуациях это может сломать прод, отключить удалённый доступ или уничтожить артефакты после атаки.
1️⃣Потеря контроля
Если сервер находится в облаке и вы подключены по SSH, iptables -F может сбросить правило, разрешающее ваш IP, и вы потеряете доступ. Особенно если default policy = DROP.
Как избежать:
Перед flush — сначала добавьте разрешающие правила.
iptables -I INPUT -s <ваш_IP> -j ACCEPT
iptables -A INPUT -j LOG --log-prefix "DROP "
iptables -N MYRULES
iptables -A INPUT -j MYRULES
# и чистите только их: iptables -F MYRULES