12610
Обучающий канал по сетевому и системному администрированию. Сотрудничество: @dad_admin Биржа: https://telega.in/c/networkadm РКН: https://bit.ly/4ioc61C
IPv6 Privacy Extensions — временные адреса для безопасности и конфиденциальности
IPv6 даёт каждому устройству уникальный адрес на основе MAC (EUI-64).
Это удобно, но есть проблема: такие адреса постоянные, и их можно использовать для трекинга пользователя в сети.
Чтобы решить эту проблему, в IPv6 есть Privacy Extensions. Они позволяют системе генерировать временные случайные адреса, которые периодически меняются, сохраняя при этом основной (permanent) адрес для подключения к сервисам.
Как это работает
Система может иметь два типа адресов на одном интерфейсе:
⏺Stable (постоянный) — генерируется на основе префикса сети и EUI-64. Используется для серверов и сервисов, которые должны быть всегда доступны.
⏺Temporary (временный) — случайный, меняется каждые несколько часов, используется для исходящего трафика, чтобы скрыть реальный идентификатор устройства.
Включение и проверка на Linux
Чтобы посмотреть текущие настройки IPv6 Privacy Extensions:
cat /proc/sys/net/ipv6/conf/all/use_tempaddr
sudo sysctl -w net.ipv6.conf.eth0.use_tempaddr=2
ip -6 addr show dev eth0
inet6 2001:db8:1:1::abcd/64 scope global temporary dynamic
inet6 2001:db8:1:1::1234/64 scope global dynamic
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
Контейнерные сети без Kubernetes: ручная настройка CNI-плагинов
Контейнеры требуют сетевой связности между собой. Обычно Kubernetes берёт это на себя через CNI-плагины, но что если нам нужен просто Docker или Podman без кластера?
В этом случае можно вручную настроить CNI-плагины вроде Weave Net или Cilium и обеспечить L2/L3 соединение между контейнерами.
Настройка Weave Net
Скачиваем и запускаем Weave Net на хосте:
curl -L git.io/weave -o /usr/local/bin/weave
chmod +x /usr/local/bin/weave
weave launch
weave status
weave run 10.32.0.2/16 -ti alpine sh
weave run 10.32.0.3/16 -ti alpine sh
ping 10.32.0.3 # с контейнера 10.32.0.2
ping 10.32.0.2 # с контейнера 10.32.0.3
curl -L --remote-name https://github.com/cilium/cilium-cli/releases/latest/download/cilium-linux-amd64.tar.gz
tar xzvf cilium-linux-amd64.tar.gz
sudo mv cilium /usr/local/bin/
cilium install
cilium status
docker network create cilium-net
docker run --net cilium-net --name c1 -it alpine sh
docker run --net cilium-net --name c2 -it alpine sh
ping <IP_другого_контейнера>
❓ Когда инфраструктура IT-отдела опирается на Windows, вы чувствуете себя ограниченным в возможностях?
Linux уже давно стал стандартом для серверных решений, контейнеров и облаков.
💪 Курс «Administrator Linux. Basic» погрузит вас в мир администрирования «с нуля»: от работы в терминале и Bash-скриптов до настройки веб- и MySQL-серверов, Docker-контейнеров, мониторинга через Grafana, Prometheus и ELK. На живых вебинарах вы посмотрите реальные сценарии — от установки Ubuntu в VirtualBox до развертывания микросервисов.
🚀 После курса вы сможете:
– уверенно работать в Bash и управлять пользователями, правами и пакетами;
– настраивать и оптимизировать Nginx/Apache, MySQL, создавать Docker-контейнеры и CI/CD-потоки через Git;
– подключать системы мониторинга: Grafana, Prometheus, ELK и настраивать тревоги;
– анализировать сетевой трафик и фильтровать пакеты через iptables.
👉 Пройдите бесплатное вступительное тестирование и получите персональную скидку на обучение: https://otus.pw/dzLd4/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Обзор Cisco Unified Communications Manager (CUCM)
Cisco Unified Communications Manager (CUCM) — это программная АТС для корпоративных IP-сетей, обеспечивающая маршрутизацию вызовов, управление голосовыми и видео-звонками, поддержку голосовой почты, конференц-связи и интеграцию с другими сервисами.
Первая версия CallManager 1.0 вышла в 1997 году.
Основные протоколы CUCM
CUCM поддерживает как собственные, так и открытые протоколы:
• SCCP (Skinny Client Control Protocol) – фирменный протокол Cisco для телефонов
• SIP (Session Initiation Protocol) – стандартный протокол для VoIP
• H.323 – используется для взаимодействия с другими VoIP-сетями
• MGCP (Media Gateway Control Protocol) – для управления шлюзами
Как работает CUCM
CUCM управляет сигнализацией вызовов, но сами аудио- и видеопотоки (RTP) передаются напрямую между устройствами.
Это значит, что если CUCM выйдет из строя, разговор продолжится, но функции управления вызовом (удержание, перевод, конференция) будут недоступны.
Дополнительно доступен CLI (Command Line Interface) для управления через консоль.
P4 и программируемые коммутаторы: кастомная обработка пакетов
P4 (Programming Protocol-independent Packet Processors) — язык для описания поведения сетевых устройств на уровне пакетов.
С его помощью можно создавать кастомные правила маршрутизации, фильтрации, модификации заголовков и многое другое без перепрошивки железа.
В отличие от классических коммутаторов, где поведение фиксировано, P4-коммутаторы позволяют:
• самостоятельно определять, какие заголовки и поля пакетов обрабатывать;
• писать собственные таблицы маршрутизации и фильтров;
• экспериментировать с сетевой логикой в учебных или тестовых сетях.
Эмуляция с bmv2
Чтобы попробовать P4 без физического железа, используют эмулятор BMv2. Он имитирует P4-коммутатор и позволяет загружать ваши программы.
Пример простой программы, которая меняет MAC-адрес назначения для всех входящих пакетов:
header ethernet_t {
bit<48> dstAddr;
bit<48> srcAddr;
bit<16> etherType;
}
parser MyParser(packet_in pkt,
out ethernet_t hdr) {
pkt.extract(hdr);
}
control MyIngress(inout ethernet_t hdr) {
apply {
hdr.dstAddr = 0x00_11_22_33_44_55;
}
}
control MyEgress() { apply { } }
control MyVerifyChecksum() { apply { } }
control MyComputeChecksum() { apply { } }
V1Switch(MyParser(), MyVerifyChecksum(), MyIngress(), MyEgress(), MyComputeChecksum()) main;sudo apt install bmv2
p4c-bm2-ss simple_program.p4 -o simple_program.json
simple_switch --log-console simple_program.json
🚀⚙️ Хотите упростить свою работу в Linux? Научитесь писать скрипты с помощью Bash!
👉 Присоединяйтесь к открытому вебинару 25 августа в 20:00 МСК и разберитесь, как с помощью Bash автоматизировать рутинные задачи в Linux. Мы объясним, как работать с интерпретатором Bash, создавать переменные, использовать условия и циклы.
💪 Этот вебинар поможет быстро освоить базовые навыки Bash и научиться автоматизировать простые операции, что значительно упростит рабочий процесс.
🎁 Запишитесь на вебинар и получите индивидуальное предложение на курс «Administrator Linux. Basic».
👉 Для участия зарегистрируйтесь: https://otus.pw/eYKF/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
По мере того, как сети становятся сложнее и масштабнее, организации сталкиваются с растущими трудностями в поддержании точной, динамичной и безопасной сетевой инвентаризации.
Устаревшие системы, гибридные инфраструктуры и развивающиеся угрозы безопасности усложняют решение таких задач.
Готовые решения существуют, и, как всегда, есть различные “но”, вынуждающие либо идти на компромиссы или вложения дополнительных ресурсов, либо же раздувать штат соответствующих специалистов для увеличения охвата текущих задач по сетевой инфраструктуре.
В первой части статьи мы рассказали о нашей идеологии в инструментарии для поддержки и конфигурирования сети.
В этой части мы хотим детальнее рассказать о реализованных нами решениях по поднятым вопросам и размышлениям и поделиться результатами.
Прочитать можно здесь:⬇️
https://dzen.ru/a/aJx4knpIYn5Ct87m
VRF-lite: простая изоляция трафика без сложного оборудования
VRF-lite — способ изолировать трафик в одной сети без дорогого оборудования.
По сути, это создание нескольких виртуальных маршрутизаторов на одном устройстве, каждый со своей таблицей маршрутизации.
ip link add vrf-blue type vrf table 10
ip link set dev vrf-blue up
ip link set dev eth1 master vrf-blue
ip route add 192.168.10.0/24 dev eth1 table 10
NAT Hairpinning — что это и зачем нужно?
NAT Hairpinning (или loopback NAT) — это способ доступа к своим локальным сервисам по их внешнему (публичному) IP адресу изнутри локальной сети.
Например, у вас есть сервер в локальной сети с внутренним IP 192.168.1.100, и у него проброшен внешний IP (скажем, 203.0.113.10) через NAT на роутере.
# Проброс порта с внешнего IP на локальный сервер
iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
# Разрешаем возвратный трафик
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -d 192.168.1.100 -p tcp --dport 80 -j MASQUERADE
Топ-5 ошибок при настройке EtherChannel (LACP/PAgP)
+ как быстро диагностировать
EtherChannel — мощный инструмент агрегации каналов, но одна мелочь в конфиге может убить весь бандл или снизить производительность.
1️⃣Разные настройки на портах
Разные speed/duplex или MTU ломают агрегацию. Разное VLAN-назначение (trunk/access) приводит к непредсказуемым сбоям.
Пример ошибки:
switchport mode trunk
switchport trunk allowed vlan 10,20
show etherchannel summary ! Статус каналов
show running-config interface ! Проверить одинаковость настроек
show lacp neighbor ! Состояние LACP
MACsec в дата-центрах: используем шифрование на уровне канального слоя
В современных дата-центрах требования к безопасности и производительности пересекаются с необходимостью шифрования трафика внутри самой инфраструктуры.
MACsec (IEEE 802.1AE) становится оптимальным решением для защиты Layer 2 трафика без влияния на верхние протоколы и с минимальной задержкой.
network={
key_mgmt=IEEE8021X
eap=TLS
identity="user@example.com"
ca_cert="ca.pem"
client_cert="client.pem"
private_key="client.key"
macsec_policy=1
}ip link add link eth0 macsec0 type macsec
ip link set macsec0 up
wpa_supplicant -i eth0 -c /etc/wpa_supplicant.conf -D wired
❓ ⚙️ Как ускорить процессы развертывания приложений и упростить управление инфраструктурой?
👉 На открытом уроке 12 августа в 19:00 МСК мы разберём, что такое Docker и как использовать его для эффективной контейнеризации. Вы узнаете, как работать с Docker CLI, управлять контейнерами, а также как применять Docker Hub для хранения и обмена образами.
После урока вы будете уверенно устанавливать Docker, запускать контейнеры и собирать свои первые Dockerfile. Это знание — важный шаг для системных администраторов и DevOps-специалистов, желающих упростить развертывание приложений.
🎁 Посетите вебинар и получите скидку на курс «Administrator Linux. Basic»: https://otus.pw/En9i/
👉 Для участия в вебинаре зарегистрируйтесь
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Канал опытного инженера с многолетним стажем!
За свою карьеру он поработал со многими технологиями и языками программирования:
⚙️ Python
👩💻 Linux
👣 Golang
🖥 Docker
🖥 Kubernetes
🖥 Bash
RECURA: программирование, проще чем кажется
Deckhouse User Community meetup #2
21 августа | Москва
«Флант» приглашает на второй Deckhouse User Community meetup. Три доклада от практиков:
→ управление узлами кластера на всём их жизненном цикле с командой Deckhouse Core;
→ построение платформы обучения K8s на DKP CE с коллегами из КРОКа;
→ автоматизация архитектурного контроля и подход Architecture as Code с экспертами «ДОМ.РФ Технологии».
Регистрируйтесь, если интересны реальные кейсы работы с Kubernetes-платформами.
DevOps Bootcamp: профессиональное сообщество начинающих инженеров
👉 разборы рабочих задач
👉 прокачка hard и soft skills
👉 вебинары и прямые эфиры с топами индустрии
👉 статьи, лекции и ответы на вопросы
Автор канала — Вячеслав Федосеев:
🔹TeamLead DevOps в «Честном знаке»;
🔹автор двух из трех существующих русскоязычных курсов по CI/CD;
🔹ментор курса-профессии «DevOps Upgrade» учебного центра Слёрм;
🔹ведущий проекта «Честные вакансии: DevOps Middle».
Подписывайтесь на канал и станьте частью большого и активного комьюнити 🫂
⭐️ DevOps Bootcamp ⭐️
mDNS/Avahi: автоматическая локальная сеть без DNS
В небольших сетях часто хочется, чтобы устройства находили друг друга без настройки DNS.
Тут на помощь приходит mDNS (Multicast DNS) — протокол, позволяющий хостам объявлять свои имена и находить другие устройства по имени в локальной сети. В Linux это обычно реализуется через Avahi.
mDNS работает через multicast на адрес 224.0.0.251 (IPv4) или ff02::fb (IPv6). Устройства отправляют запросы «кто такой host.local?» и получают ответ от нужного устройства без центрального DNS.
sudo apt install avahi-daemon avahi-utils
sudo systemctl enable --now avahi-daemon
ping myhost.local
avahi-browse -a
<?xml version="1.0" standalone='no'?>
<service-group>
<name>My SSH Server</name>
<service>
<type>_ssh._tcp</type>
<port>22</port>
</service>
</service-group>
sudo systemctl restart avahi-daemon
TTL и Hop Limit: ограничиваем зоны действия пакетов
TTL (Time To Live) в IPv4 и Hop Limit в IPv6 — это механизм ограничения «жизни» пакета в сети.
Каждому пакету при отправке присваивается число, которое уменьшается на каждом маршрутизаторе. Когда значение достигает нуля, пакет уничтожается.
Проверка TTL исходящего пакета:
ping -c 3 -t 5 8.8.8.8 # IPv4, TTL=5
ping6 -c 3 -m 5 google.com # IPv6, Hop Limit=5
traceroute -m 5 8.8.8.8 # IPv4
traceroute6 -m 5 google.com # IPv6
# IPv4
sudo ip route add 192.168.100.0/24 via 192.168.1.1 ttl 2
# IPv6
sudo ip -6 route add 2001:db8::/64 via fe80::1 hoplimit 3
Loopback-адрес 127.0.0.1: что реально происходит при ping
Loopback-адрес — это специальный адрес в диапазоне 127.0.0.0/8, который всегда ссылается на сам хост.
127.0.0.1:ip addr show lo
ip link show lo
ping 127.0.0.1
ping ::1 # для IPv6
sudo tcpdump -i lo icmp
sudo iptables -L -v -n
sudo nft list ruleset
SR-IOV и DPDK: ускоряем сеть виртуальных машин
SR-IOV (Single Root I/O Virtualization) позволяет делить физическую сетевую карту на несколько виртуальных функций (VF), которые напрямую пробрасываются в виртуальные машины.
Это даёт почти нативную производительность и снижает нагрузку на гипервизор.
lspci | grep -i eth
echo 4 > /sys/class/net/ens1f0/device/sriov_numvfs
virt-install \
--name vm1 \
--memory 4096 \
--vcpus 2 \
--disk size=20 \
--import \
--host-device 0000:81:00.1
sudo apt install dpdk dpdk-dev dpdk-doc
sudo testpmd -l 0-3 -n 4 --socket-mem 1024,1024 \
--file-prefix pg0 -- -i
testpmd> start
testpmd> show port stats
lscpu | grep NUMA
numactl --show
LISP для изоляции IoT-подсетей: тестовая сеть с инкапсуляцией
LISP (Locator/ID Separation Protocol) разделяет идентификаторы устройств (EID, Endpoint ID) и их физическое расположение в сети (RLOC, Routing Locator).
Для IoT это удобно: можно изолировать подсети устройств и одновременно обеспечивать маршрутизацию и масштабируемость.
sudo apt install openlisp
eid_table office
add 10.0.1.0/24
rloc add 192.168.100.1
eid_table warehouse
add 10.0.2.0/24
rloc add 192.168.200.1
lispctl map-register office 192.168.100.1
lispctl map-register warehouse 192.168.200.1
ping 10.0.2.5
traceroute 10.0.2.5
BFD для быстрого failover: мгновенная детекция отказов в BGP и OSPF
BFD (Bidirectional Forwarding Detection) — протокол, который позволяет обнаруживать недоступность соседних маршрутизаторов за миллисекунды.
Он работает поверх UDP и совместим с основными протоколами маршрутизации, такими как BGP и OSPF.
router ospf
bfd
network 10.0.0.0/24 area 0
neighbor 10.0.0.2 bfd
bfd
interval 50 min_rx 50 multiplier 3
router bgp 65001
neighbor 192.0.2.2 remote-as 65002
neighbor 192.0.2.2 bfd
Контейнерные сети: обзор CNI Beyond Flannel и Calico
В Kubernetes и других платформах контейнеризации CNI (Container Network Interface) отвечает за организацию сети между контейнерами — назначение IP, маршрутизацию и связь между подами и внешним миром.
Flannel и Calico долгое время были стандартом. Flannel прост в настройке, создаёт оверлей на базе VXLAN, но ограничен в производительности и сетевой политике.
L2 Loop Prevention без STP: PortFast и BPDU Guard на Cisco и Linux
Петли на уровне L2 могут серьёзно повредить сети. STP — классика борьбы с ними, но иногда избыточна и замедляет подключение устройств.
Для простых случаев используют PortFast и BPDU Guard.
interface Gi1/0/10
spanning-tree portfast
spanning-tree bpduguard enable
spanning-tree portfast default
spanning-tree portfast bpduguard default
brctl setfd br0 0
brctl setageing br0 0
ebtables -A INPUT -p 0x42 -j DROP
Научим находить атаки в трафике до того, как они нанесут ущерб 🕵️♂️
Злоумышленники действуют скрытно, используя сложные методы проникновения. Без должных средств защиты они могут оставаться незамеченными до тех пор, пока не становится слишком поздно. Любая атака оставляет след в сети, но не все специалисты знают, как их найти и использовать, — им не хватает практики и знаний.
Уже 25 августа у Positive Education стартует практикум «Анализ сетевого трафика», в который включили максимум практики с фокусом на разборе реальных атак.
⭐️ Его готовили эксперты Positive Technologies. За их плечами — десятки обнаруженных атак, сложные кейсы и работа с трафиком в боевых условиях.
🎓 Вас ждут практические материалы, вобравшие в себя многолетний опыт экспертов, которые можно изучать в удобном темпе, а также обширная практика на облачном стенде: вы будете воспроизводить хакерские атаки и исследовать их при помощи средств защиты, проверяя те на прочность.
👉 Больше подробностей — на странице практикума.
Когда ICMP нужен: как его отсутствие ломает MSS и PMTU discovery
Во многих инфраструктурах ICMP считают «ненужным» и отрубaют его на периметре — мол, безопасность, чтобы никто не пинговал.
В результате получаем баги, которые тяжело отлаживать: от медленного SSH до обрыва TLS.
ip link | grep mtu
ip route get <dst>
ping -M do -s 1472 <dst> # для MTU 1500 с учетом IP+ICMP
tcpdump -i eth0 icmp or tcp port 443
iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
sysctl net.ipv4.ip_no_pmtu_disc
Динамическая маршрутизация в IoT-сетях: RPL протокол
RPL (Routing Protocol for Low-Power and Lossy Networks) — это протокол маршрутизации, созданный специально для IoT-сетей с ограниченными ресурсами и нестабильным соединением.
Он строит DAG (направленный ациклический граф) для эффективной передачи данных с минимальным энергопотреблением.
RPL активно используется в 6LoWPAN, Zigbee, Thread и других LPWAN-технологиях.
Практические команды для работы с RPL
1️⃣Запуск border-router (корня DAG) в Contiki-NG:
cd contiki-ng/examples/rpl-border-router
make TARGET=cooja
rpl-print-parent
rpl-print-routes
icmp6.type == 155
MLAG без дорогого железа: LACP и Linux bonding в связке
Часть 2
Настройка bonding на Linux-хосте
Создаём bonding-интерфейс:
sudo modprobe bonding
sudo ip link add bond0 type bond
sudo ip link set bond0 up
sudo ip link set eth0 down
sudo ip link set eth1 down
sudo ip link set eth0 master bond0
sudo ip link set eth1 master bond0
sudo ip link set eth0 up
sudo ip link set eth1 up
sudo bash -c 'echo 802.3ad > /sys/class/net/bond0/bonding/mode'
sudo bash -c 'echo 100 > /sys/class/net/bond0/bonding/lacp_rate' # быстрый LACP (fast rate)
sudo ip addr add 192.168.1.10/24 dev bond0
sudo ip link set bond0 up
interface Port-channel1
description MLAG to Linux host
switchport mode trunk
!
interface GigabitEthernet1/0/1
channel-group 1 mode active
switchport mode trunk
!
interface GigabitEthernet1/0/2
channel-group 1 mode active
switchport mode trunk
!
MLAG без дорогого железа: LACP и Linux bonding в связке
MLAG (Multi-Chassis Link Aggregation Group) — это технология, которая позволяет объединить несколько физических каналов с разных физических устройств (чаще всего коммутаторов) в один логический канал для повышения пропускной способности и отказоустойчивости.
В дата-центрах её обычно делают на дорогом оборудовании Cisco, Juniper, Arista.
Но что если бюджет ограничен, а отказоустойчивость и балансировка нужны? Можно реализовать MLAG на базе Linux с помощью LACP и bonding.
Основные задачи и ограничения
⏺Linux bonding — объединяет несколько интерфейсов в один логический с разными режимами (round-robin, active-backup, LACP).
⏺LACP (802.3ad) — протокол динамической агрегации каналов.
⏺MLAG — предполагает, что к нескольким коммутаторам (или Linux-серверам) подключён один и тот же хост с несколькими каналами, которые агрегируются логически.
На практике Linux bonding с mode=802.3ad умеет работать с одним коммутатором, который поддерживает LACP.
+--------------------+
| Коммутатор 1 |
+----+------------+--+
| |
+----+ +----+
| |
eth0 (bond0) eth1 (bond0)
| |
+---+---+ +---+---+
| Linux хост (bond0) с двумя NIC |
+------------------------------+
Протокол BFD - быстрая детекция отказов
BFD — лёгкий протокол для быстрого обнаружения недоступности соседних маршрутизаторов или линков.
Работает поверх UDP и значительно сокращает время реакции сетевого оборудования при сбоях.
router bgp 65001
neighbor 192.0.2.2 remote-as 65002
neighbor 192.0.2.2 bfd
!
bfd
interval 50 min_rx 50 multiplier 3
router ospf
bfd all-interfaces
show bfd peers
Overlay‑сети без Kubernetes: VXLAN для микросервисов и VM вручную
Не всегда для микросервисов нужен Kubernetes или OpenStack. Иногда достаточно пары серверов и лёгкой overlay‑сети, чтобы изолировать сервисы и связать их в едином L2 поверх L3‑инфраструктуры.
Для этого отлично подходит VXLAN (Virtual eXtensible LAN).
ip link add vxlan10 type vxlan id 10 \
dev eth0 remote 203.0.113.2 dstport 4789
ip addr add 10.10.10.1/24 dev vxlan10
ip link set vxlan10 up
ip link add vxlan10 type vxlan id 10 \
dev eth0 remote 203.0.113.1 dstport 4789
ip addr add 10.10.10.2/24 dev vxlan10
ip link set vxlan10 up
ping 10.10.10.2 -I vxlan10
brctl addbr br0
ip link set vxlan10 master br0
ip link set vnet0 master br0