Серверная Админа | Компьютерные сети
26.7K subscribers
1.27K photos
8 videos
7 files
1.38K links
Я действующий сетевой инженер, расскажу вам о сетях в доступной форме.

Реклама - @bashmak_media
Мы на бирже: https://telega.in/c/school_network

РКН: https://vk.cc/cHYqt5
Download Telegram
ЭВМ в народном хозяйстве: Госбанк, медицина и образование

В статье рассказывают, как советские ЭВМ пришли в Госбанк, медицину и образование: система «Банк» обрабатывала сотни тысяч платежных документов, Китов создавал АСУ для здравоохранения, а университетские ВЦ решали учебные и промышленные задачи. Отдельно разбирают «Сетунь» - редкую троичную ЭВМ, которая была дешёвой и надёжной, но в итоге проиграла советскому курсу на унификацию и копирование IBM.

Серверная Админа | Zeroday | #Статья
👌5👍3
👋 Привет, сетевой друг!

Сегодня про Network Insight - TypeScript-библиотеку, которая собирает сетевую информацию прямо из приложения.

🟣Она умеет определить публичный IP, посмотреть сетевые интерфейсы машины, получить геолокацию IP и собрать всё это в один объект:

const networkService = NetworkService.getInstance();

const info = await networkService.getFullNetworkInfo();
console.log(info);


В ответ можно получить клиентский и публичный IP, город и страну, координаты, timezone и данные интерфейсов вроде eth0 с адресом, маской, MAC и CIDR.

🟣Отдельно интересна работа с Express. Библиотека сразу даёт готовый роутер:

app.use('/api/network', createNetworkRouter());


После этого появляются /ip, /public-ip, /location, /interfaces, /full и /health.

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

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

Для геолокации используется похожая схема с провайдерами, а TTL кэша можно менять прямо во время работы:

networkService.updateConfig({
cache: { ttl: 120000 }
});


🟣Есть и более практичный вариант - middleware. Можно один раз добавить сетевую информацию в req и использовать её дальше в приложении:

req.network = {
clientIp: networkService.getClientIp(req),
service: networkService
};


Заодно библиотека умеет делать health check отдельно для IP-сервисов, геолокации и локальной сетевой информации.

🟣Под капотом всё написано на TypeScript, есть CommonJS и ESM, декларации типов, Jest-тесты и заявлено 100% покрытие основных модулей.
По сути, Network Insight закрывает типичный набор задач, для которых обычно приходится отдельно подключать os.networkInterfaces(), сервис определения IP, API геолокации и писать вокруг всего этого свою обвязку.

Серверная Админа | Zeroday | #Инструмент
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72👾1
👋 Привет, сетевой друг!

Сегодня разберём MSTP (Multiple Spanning Tree Protocol). Это режим STP, который распределяет VLAN по разным деревьям.

🟣Зачем он: если у вас несколько VLAN и резервные L2-линки, обычный STP может заблокировать один и тот же путь сразу для всего трафика. В результате часть физических каналов простаивает, хотя сеть могла бы использовать их параллельно.
MSTP объединяет VLAN в несколько MST-инстансов. Для каждого инстанса можно построить своё дерево:

VLAN 10,20  → MSTI 1 → путь через SW1
VLAN 30,40 → MSTI 2 → путь через SW2


🟣Как работает: сначала коммутаторы формируют MST Region. Для него важны одинаковые region name, revision и таблица соответствия VLAN → MSTI.

Например:

MSTI 1: VLAN 10-100
MSTI 2: VLAN 101-200


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

🟣Главная фишка: разные MSTI могут выбрать разные root bridge и разные forwarding-пути.
То есть два физических аплинка можно использовать одновременно:

             SW1
/ \
VLAN 10 → / \ ← VLAN 30
/ \
SW2 SW3


Для одного набора VLAN оптимальным окажется SW2, для другого - SW3. При этом петля всё равно остаётся контролируемой.

🟣Почему это лучше множества отдельных STP: MSTP не создаёт отдельное дерево для каждого VLAN. Десятки или сотни VLAN можно объединить в несколько инстансов, поэтому количество STP-состояний и служебного трафика значительно меньше.

🟣Где особенно полезен: в больших кампусных и дата-центровых L2-сетях, где нужно одновременно получить резервирование и использовать несколько физических путей, не переходя полностью на L3.
И важный момент: MSTP не является «быстрым STP» сам по себе. Его ценность в другом. Несколько VLAN могут иметь разные топологии при общей логике spanning tree.

Серверная Админа | Zeroday | #EAPS
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥82
This media is not supported in your browser
VIEW IN TELEGRAM
👋 Привет, сетевой друг!

Расскажу еще о 3 способах прокачать защиту Mikrotik.

🟣Dot1X аутентификация клиентов через встроенный RADIUS: вместо того чтобы все устройства просто подключались к порту, Mikrotik может требовать аутентификацию по 802.1X и проверять учётки через собственный User Manager:

/interface dot1x server
add interface=ether3 accounting=yes interim-update=5m \
radius-mac-authentication=yes \
comment="Require auth on access port"

/radius
add service=dot1x address=127.0.0.1 secret=radiussecret

/user-manager user
add name=workstation01 password=devicepass \
attributes=Framed-IP-Address:192.168.1.50


Устройство без валидных credentials просто не получит доступ к сети - даже если физически воткнулось в порт.

🟣Автоматический карантин хостов с аномальным поведением через скрипт: если хост начинает генерировать слишком много соединений - скрипт изолирует его в отдельный VLAN без доступа к основной сети:

/ip firewall filter
add chain=forward connection-limit=100,32 \
src-address-list=!whitelist \
action=add-src-to-address-list \
address-list=quarantine \
address-list-timeout=1h \
log=yes log-prefix="QUARANTINE:"

/ip firewall filter
add chain=forward src-address-list=quarantine \
action=jump jump-target=quarantine-chain

/ip firewall filter
add chain=quarantine-chain \
dst-address=!8.8.8.8 \
action=drop \
comment="Allow only DNS, block everything else"


Через час карантин снимается автоматически, если поведение было временным (обновление ПО), хост вернётся в сеть сам.

🟣Детект смены MAC-адреса на порту через скрипт: когда устройство меняет MAC или кто-то подключает другое устройство вместо авторизованного - скрипт это замечает и логирует или блокирует порт:

/system scheduler
add name=mac-monitor interval=1m on-event={
:local knownMacs {
"ether3"="AA:BB:CC:DD:EE:FF";
"ether4"="11:22:33:44:55:66"
}
:foreach iface,mac in=$knownMacs do={
:local currentMac [/ip arp get [find interface=$iface] mac-address]
:if ($currentMac != $mac) do={
/log warning "MAC change on $iface: expected $mac got $currentMac"
/interface set $iface disabled=yes
}
}
}


Порт автоматически гасится при появлении незнакомого MAC - администратор получает лог и должен вручную разблокировать после расследования.

Серверная Админа | Zeroday | #Mikrotik
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82👾1
Биометрия против скрепки: разбираем замки с отпечатком пальца и проводим базовый аудит их защиты

В статье проводят базовый аппаратный аудит трех биометрических замков разной ценовой категории от безымянного китайского за 1000 рублей до ABUS Touch за 2500. У первого в открытой инструкции указан заводской аварийный код 33, у второго такой же режим находят перебором за пару часов и код нельзя сменить вообще, у третьего аварийный сброс требует авторизации по зарегистрированным отпечаткам и выглядит заметно надежнее. Разбирают методологию Attack Surface Mapping по четырем векторам: логика устройства, механика корпуса, интерфейсы и сам биометрический датчик.

Серверная Админа | Zeroday | #Статья
👍21
👋 Привет, сетевой друг!

Сегодня про Kula - лёгкий мониторинг Linux-сервера который помещается в один бинарник.

🟣Что это: Go-приложение которое читает метрики напрямую из /proc и /sys каждую секунду, хранит их во встроенном ring-buffer хранилище и отдаёт через веб-дашборд или TUI в терминале.

🟣Что мониторит: CPU с разбивкой по типам нагрузки (user, system, iowait, steal), память, swap, сетевые интерфейсы с throughput и TCP-метриками, диски по IOPS, температуры, контейнеры Docker/Podman, PostgreSQL, MySQL, nginx, apache2. Плюс кастомные метрики через свои скрипты.

🟣Установка за минуту:

# Guided установка
bash -c "$(curl -fsSL https://raw.githubusercontent.com/c0m4r/kula/refs/heads/main/addons/install_v2.sh)"

# Или вручную
wget https://github.com/c0m4r/kula/releases/download/0.19.0/kula-0.19.0-amd64.tar.gz
tar -xvf kula-0.19.0-amd64.tar.gz && cd kula && ./kula


Дашборд поднимается на http://localhost:27960.

🟣Через Docker если не хочется ничего ставить на хост:

docker run --rm -it --name kula --pid host --network host \
-v /proc:/proc:ro c0m4r/kula:latest


🟣TUI для терминала - если нет браузера или нужен быстрый взгляд:

./kula tui


🟣Хранение данных по трём тирам: сырые данные с интервалом 1 секунда занимают до 250 МБ, агрегация по минуте до 150 МБ, по 5 минут до 50 МБ. Ring-buffer - старые данные перезаписываются новыми автоматически, место не растёт бесконечно.

🟣Есть Prometheus endpoint для интеграции в существующий стек, аутентификация через Argon2id с токенами, и опциональный AI-ассистент через локальный Ollama - анализирует метрики прямо в дашборде.

Серверная Админа | Zeroday | #Инструмент
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥63
This media is not supported in your browser
VIEW IN TELEGRAM
👋 Привет, сетевой друг!

Разберём Private VLAN - механизм изоляции хостов внутри одного VLAN, который закрывает горизонтальные атаки между устройствами в одном сегменте.

🟣Суть проблемы: обычный VLAN изолирует трафик между разными VLAN, но внутри одного VLAN все устройства видят друг друга. В гостевых сетях, хостинге или DMZ это проблема - скомпрометированный хост может атаковать соседей в том же сегменте через ARP-спуфинг, брутфорс или lateral movement.

🟣Как работает Private VLAN: вводится иерархия портов. Promiscuous порт видит всех — это обычно шлюз или роутер. Isolated порты видят только promiscuous, но не друг друга. Community порты видят promiscuous и других участников своей community-группы, но не isolated и другие community.

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

! Создаём primary VLAN
vlan 100
private-vlan primary

! Создаём isolated VLAN для изолированных хостов
vlan 101
private-vlan isolated

! Связываем isolated с primary
vlan 100
private-vlan association 101

! Promiscuous порт — шлюз
interface GigabitEthernet0/1
switchport mode private-vlan promiscuous
switchport private-vlan mapping 100 101

! Isolated порты — хосты которые не должны видеть друг друга
interface range GigabitEthernet0/2-10
switchport mode private-vlan host
switchport private-vlan host-association 100 101


🟣Проверяем что изоляция работает:

show vlan private-vlan
show interfaces GigabitEthernet0/2 switchport | include Private


🟣Чем это лучше просто разных VLAN: не нужно создавать десятки VLAN под каждый изолированный хост и прописывать маршруты между ними. Все хосты в одном IP-подсети, один шлюз, но горизонтальный трафик между ними физически заблокирован на уровне коммутатора. ARP-спуфинг между изолированными хостами становится невозможным - пакеты просто не доходят до соседа.

🟣Типичное применение: хостинг где клиенты в одной подсети не должны видеть друг друга, гостевые Wi-Fi сети через проводной uplink, серверные DMZ где каждый сервер изолирован от соседей.

Серверная Админа | #ARP
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8
👋 Привет, сетевой друг!

Сегодня расскажу про RD и RT в MPLS L3VPN. Их часто путают, хотя задачи у них совершенно разные.

🟣RD (Route Distinguisher) нужен, чтобы сделать VPN-префикс уникальным. Один и тот же 10.10.10.0/24 может существовать у разных клиентов:

Customer A → 10.10.10.0/24
Customer B → 10.10.10.0/24


С RD маршруты превращаются в разные VPNv4-префиксы:

65000:10:10.10.10.0/24
65000:20:10.10.10.0/24


То есть RD решает проблему пересечения адресных пространств.

🟣RT (Route Target) отвечает уже за другое: какие VPN-маршруты конкретный VRF должен импортировать или экспортировать.

Например:

VRF-CUSTOMER-A
Export RT: 65000:100
Import RT: 65000:200


Маршрут сначала получает RD и становится уникальным VPNv4-префиксом, а затем RT определяет, в какие VRF этот маршрут можно импортировать.

🟣Поэтому RD не говорит маршрутизатору, кому отдавать маршрут. И RT не делает префикс уникальным.

Упрощённо:

RD → какой это VPN-префикс?
RT → в какие VRF его можно импортировать?


🟣Из-за этого один и тот же RD может быть частью разных политик RT. Например, VRF филиалов может экспортировать маршруты с RT 65000:10, а центральный VRF импортировать их вместе с маршрутами других VPN.

🟣Именно разделение этих двух механизмов позволяет MPLS L3VPN одновременно поддерживать одинаковые IP-адреса у разных клиентов и гибко управлять обменом маршрутами между VRF.

Серверная Админа | Zeroday | #MPLS #BGP
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥31
👋 Привет, сетевой друг!

Сегодня разберём в чём реальная разница между PBR и SR-TE для управления трафиком.

🟣Policy-Based Routing работает локально на каждом роутере: смотришь на заголовок пакета, матчишь по ACL, отправляешь на нужный next-hop. Просто, понятно, но масштабируется плохо - правила нужно настраивать на каждом устройстве отдельно, а состояние пути нигде не отслеживается:

ip access-list extended VOICE
permit udp any any range 16384 32767

route-map PBR_VOICE permit 10
match ip address VOICE
set ip next-hop verify-availability 10.0.0.1 10 track 1

interface GigabitEthernet0/1
ip policy route-map PBR_VOICE


Если next-hop упал - PBR об этом узнает только через track, и только если ты это настроил.

🟣SR-TE (Segment Routing Traffic Engineering) работает иначе: весь путь кодируется в заголовке пакета на входном узле, промежуточные роутеры просто следуют инструкциям. Headend знает топологию через IGP с расширениями и сам вычисляет оптимальный путь:

segment-routing traffic-eng policy VOICE_PATH
color 10 endpoint 10.255.255.4
candidate-paths
preference 100
dynamic
pcep
metric
type latency


Метрика latency означает что контроллер или сам роутер выберет путь с минимальной задержкой, не по IGP-метрике.

🟣Главная разница: PBR статичен и локален, SR-TE динамичен и глобален. PBR не знает что происходит дальше по пути, SR-TE видит всю топологию и может перестроить маршрут при деградации канала автоматически.

Диагностика тоже разная:

show route-map PBR_VOICE          # статистика PBR
show segment-routing traffic-eng policy
show segment-routing traffic-eng policy detail


🟣Когда что выбирать: PBR подходит для простых сценариев на небольших сетях когда нужно быстро отправить один тип трафика через другой канал. SR-TE нужен когда важна сквозная гарантия качества, динамическое переключение при деградации и централизованное управление путями через контроллер.

Серверная Админа | Zeroday | #PBR #SRTE
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1
Маршрутизатор получает маршрут по OSPF и такой же префикс по eBGP. Какой маршрут обычно попадёт в RIB?
Anonymous Quiz
36%
OSPF, потому что IGP всегда приоритетнее
28%
eBGP, потому что его AD ниже
26%
OSPF, если его metric ниже
10%
Выбирается случайно при равных prefix length
🔥1