networkadm | Unsorted

Telegram-канал networkadm - Network Admin

12610

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

Subscribe to a channel

Network Admin

Обфускация трафика для админов: как маскировать VPN, SSH и другие сервисы под «мирный» трафик

В условиях современных фильтраций и DPI (глубокая проверка пакетов) важно не только шифровать трафик, но и сделать его неотличимым от обычного.

Администраторы часто сталкиваются с задачей маскировки VPN, SSH и других сервисов, чтобы обойти блокировки или обострение цензуры.

В этом посте рассмотрим, как можно спрятать трафик за обычным HTTP(S) или даже UDP, минимизируя шанс на его обнаружение.


1️⃣OpenVPN с обфускацией (obfs4)

Для маскировки OpenVPN под HTTPS используем плагин obfs4.

Конфиг для сервера (OpenVPN + obfs4):
Установите obfs4proxy:

sudo apt install obfs4proxy


Конфиг сервера OpenVPN (/etc/openvpn/server.conf):

port 443
proto tcp
dev tun
server 10.8.0.0 255.255.255.0
keepalive 10 120
cipher AES-256-CBC
auth SHA256
tls-auth ta.key 0
dh dh2048.pem
crl-verify crl.pem

# Добавляем obfs4 для маскировки
plugin /usr/lib/openvpn/plugins/obfs4proxy.so
obfs4proxy --obfs4 --listen 0.0.0.0:443


Конфиг клиента:

Установите obfs4proxy на клиенте:

sudo apt install obfs4proxy


Конфиг клиента (/etc/openvpn/client.conf):

client
dev tun
proto tcp
remote yourserver.com 443
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
cipher AES-256-CBC
auth SHA256
tls-client
remote-cert-tls server
auth-user-pass

# Добавляем obfs4 для маскировки
plugin /usr/lib/openvpn/plugins/obfs4proxy.so
obfs4proxy --obfs4 --listen 0.0.0.0:443


2️⃣
 
WireGuard с UDP2Raw


WireGuard можно обфусцировать через udp2raw, чтобы маскировать трафик под обычный UDP, минимизируя следы от VPN.

Конфиг для сервера (WireGuard):

Установите udp2raw:

sudo apt install udp2raw


Конфиг WireGuard (/etc/wireguard/wg0.conf):

[Interface]
Address = 10.8.0.1/24
PrivateKey = <private_key>
ListenPort = 51820

[Peer]
PublicKey = <client_public_key>
AllowedIPs = 10.8.0.2/32


Прокачаем WireGuard через udp2raw:

udp2raw -s -l0.0.0.0:51820 -r yourserver.com:51820 -k your_password --raw-mode faketcp


Конфиг клиента (WireGuard):
Конфиг клиента (/etc/wireguard/wg0.conf):

[Interface]
Address = 10.8.0.2/24
PrivateKey = <private_key>

[Peer]
PublicKey = <server_public_key>
AllowedIPs = 0.0.0.0/0
Endpoint = yourserver.com:51820
PersistentKeepalive = 25


Прокачаем WireGuard через udp2raw:

udp2raw -c -l0.0.0.0:51820 -r yourserver.com:51820 -k your_password --raw-mode faketcp


3️⃣
 
SSH с обфускацией через socat


Для SSH трафика, чтобы его было сложно отличить от HTTPS, можно использовать socat.

Конфиг для сервера (SSH + socat): 
Установите socat:

sudo apt install socat


Запускаем SSH через socat на порту 443:

socat TCP-LISTEN:443,fork TCP:localhost:22


Конфиг клиента (SSH): В настройках клиента используем порт 443:

ssh -p 443 youruser@yourserver.com


С помощью этой настройки ваш SSH-трафик будет выглядеть как обычное HTTPS-соединение.

N.A. ℹ️ Help

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

Network Admin

Следы EDR/MDM на сервере: что остаётся после удаления агента

Иногда достаточно зайти на сервер и понять, что за ним кто-то уже наблюдал. Даже если агент EDR или MDM уже удалён, он мог оставить вполне читаемые следы. Это полезно, если:

вы получили машину “в наследство”,
поднимаете форензику после инцидента,
хотите убедиться, что прод чист перед публикацией.

1️⃣Остатки EDR/MDM в автозагрузке

Агенты часто прописывают себя в:

Linux:
• /etc/rc.local
• systemd-юниты: systemctl list-units --type=service | grep -i crowdstrike
• crontab -e, /etc/cron.*/, atq

Windows:
• HKLM\Software\Microsoft\Windows\CurrentVersion\Run
• Task Scheduler — часто от имени SYSTEM
• services.msc — останки удалённых служб с пустыми бинарниками

2️⃣Директории, которые “забыли почистить”

Примеры часто встречающихся путей:
/opt/CrowdStrike/, /opt/sentinelone/, /opt/zscaler/, /var/lib/falcon/
C:\ProgramData\CrowdStrike\, C:\Program Files\SentinelOne\, C:\Windows\System32\drivers\<что-то>.sys

Некоторые агенты любят оставлять log-файлы, временные сокеты, логи ядра (/var/log/audit/audit.log), etc.

3️⃣Сетевые хвосты

Проверьте активные или недавно использовавшиеся подключения:

lsof -i -P | grep -i established
ss -tunap | grep 443


EDR часто стучит на поддомены вида sensor.<vendor>.com, edr-api.<vendor>.net, telemetry.*. Иногда видно остатки резолвов в /etc/resolv.conf или hosts.

4️⃣ Файлы и процессы в памяти

Linux:
Поиск по ps aux — многие агенты маскируются, но забывают убрать старые PID файлы
Использование auditctl -l — агенты часто конфигурируют auditd

Windows:
Используйте Autoruns, ProcessHacker или Sysinternals Procmon — даже удалённый агент может оставить “ghost” драйвер

N.A. ℹ️ Help

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

Network Admin

Проверка настройки

После добавления правила NAT необходимо убедиться, что проброс порта работает корректно.

1️⃣Проверяем доступность порта
Открываем командную строку (Windows) или терминал (Linux/macOS) и выполняем:

telnet 35.135.235.15 23535


Если подключение установлено, значит проброс порта работает. В противном случае:
• Убедитесь, что роутер имеет внешний статический IP. Если IP динамический, потребуется DDNS.
• Проверьте настройки брандмауэра в IP → Firewall → Filter Rules. Возможно, трафик блокируется.
• Убедитесь, что локальный сервер принимает подключения на порту 80 (запущен Apache, Nginx или нужный сервис).

2️⃣Тестируем подключение через браузер
Вводим http://35.135.235.15:23535 в адресной строке браузера. Должна открыться веб-страница FreePBX. Если нет:
• Проверьте, запущен ли сервер (например, systemctl status apache2 или nginx).
• Убедитесь, что порт 80 не блокируется локальным firewall’ом сервера (проверить через iptables -L или ufw status).

Дополнительные настройки
Проброс нескольких портов: Если сервер использует несколько сервисов (например, SSH на 22, FTP на 21), можно добавить дополнительные NAT-правила, аналогично настройке выше.
Ограничение доступа: Чтобы ограничить доступ только для определённых IP-адресов, в Firewall → Filter Rules создаём правило, разрешающее подключение только с нужных IP.
Динамический DNS (DDNS): Если провайдер выдаёт динамический IP, можно использовать DDNS. В IP → Cloud активируем “DDNS Enabled”, и Mikrotik получит доменное имя вида yourrouter.sn.mynetname.net.

N.A. ℹ️ Help

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

Network Admin

Проблемы и решения транспортировки данных: как «разговаривают» протоколы

Когда транспортные протоколы обмениваются данными, они «мечтают» о приложениях — потому что именно приложениям нужны данные, перемещаемые от одного процесса (или устройства) к другому.

Но как вообще возможна передача информации по воздуху, проводу или оптическому кабелю? 


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

1️⃣Упорядочивание и упаковка данных

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

Этот процесс в сетях называют маршалингом: данные кодируются с использованием символов и правил, которые могут быть корректно интерпретированы. Ключевая роль здесь у метаданных — «данных о данных», указывающих, как интерпретировать содержимое.

2️⃣ Управление ошибками

Представьте, что вы кричите своей собаке «Стой!», «Нет!», «Остановись!» — разные формы одного сообщения. Вы повторяете его, чтобы убедиться, что оно будет понято.

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


Протоколы могут запрашивать подтверждение (ACK) или пересылку пакета (если его не поняли или потеряли).

3️⃣Мультиплексирование: «говорим в толпе»

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

Используются порты, сессии и идентификаторы потока, чтобы «адресовать» каждую передачу конкретному получателю.

4️⃣ Управление потоком

Книгу можно читать в удобном темпе. Протоколы делают то же самое: контролируют скорость передачи, чтобы «медленный» получатель не утонул в потоке данных. 


TCP, например, использует механизмы регулировки окна и обратную связь от получателя, чтобы не перегружать буфер.

N.A. ℹ️ Help

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

Network Admin

Как настроить split DNS для VPN: маскируем внутренние домены, а внешний — оставляем доступным

Split DNS — это метод, при котором разные DNS-серверы используются для разрешения одинаковых доменных имен в зависимости от того, откуда поступает запрос.

В случае с VPN это позволяет маршрутизировать запросы для внутренних доменов в корпоративной сети через защищенные DNS-серверы, а внешние домены разрешать через общедоступные DNS-сервисы. 


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

Зачем это нужно?
Когда вы подключаетесь к корпоративной сети через VPN, возможно, вам нужно использовать внутренние доменные имена для доступа к ресурсам, таким как базы данных, файловые серверы или другие приложения.

Однако важно, чтобы доступ к внешним ресурсам (например, для веб-серфинга или API-запросов) оставался на внешнем DNS-сервере.

Шаги настройки split DNS:
1️⃣Настройка внутреннего DNS-сервера (например, unbound или bind)
Для начала необходимо настроить внутренний DNS-сервер, который будет обслуживать запросы на внутренние домены. В примере рассмотрим unbound:
• Установите unbound на VPN-сервер или на отдельную машину.
• Конфигурируйте unbound для обработки только внутренних доменных имен.
• Например, для домена example.local настройте unbound в конфигурационном файле:

server:
interface: 0.0.0.0
interface: ::0
access-control: 192.168.0.0/16 allow
local-zone: "example.local" static
local-data: "example.local. IN A 192.168.1.10"


2️⃣ Настройка VPN для использования внутреннего DNS
VPN-сервер должен быть настроен на отправку запросов для внутренних доменов на ваш локальный DNS-сервер (unbound или bind). Для этого можно использовать параметр push в конфигурации OpenVPN:

push "dhcp-option DNS 192.168.1.1"  # IP вашего внутреннего DNS-сервера


3️⃣ Настройка внешнего DNS-сервера для обычных запросов
Чтобы разрешать внешние домены, вы можете настроить перенаправление на публичные DNS-сервисы, например, Google DNS или Cloudflare DNS, через ваш VPN-клиент:
Измените файл /etc/resolv.conf в контейнерах или клиентских системах, чтобы указать внешний DNS-сервер для разрешения общих доменов:

nameserver 8.8.8.8  # Google DNS
nameserver 1.1.1.1 # Cloudflare DNS


4️⃣ Решение с bind для более сложной конфигурации
Если необходимо более сложное управление DNS, можно настроить Bind, который будет использовать как внутренние, так и внешние зоны. Например:
В настройках Bind указывайте два разных файла конфигурации: один для внутренних доменов, второй для внешних. Это можно сделать через настройки views:

view "internal" {
match-clients { 192.168.0.0/16; };
zone "example.local" {
type master;
file "/etc/bind/zones/example.local";
};
};
view "external" {
match-clients { any; };
recursion yes;
zone "." { type hint; file "/etc/bind/db.root"; };
};


5️⃣ Тестирование и устранение проблем
После настройки split DNS, важно тестировать разрешение имен как для внутренних, так и для внешних доменов:

Для внутренних доменов используйте команду dig с флагом @<внутренний DNS сервер>:

dig @192.168.1.1 example.local


Для внешних доменов можно просто использовать стандартный dig или nslookup:

dig example.com


N.A. ℹ️ Help

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

Network Admin

Многие отечественные компании по-прежнему используют зарубежные opensource-решения TACACS+ для управления доступом к сетевому оборудованию. При этом есть большой риск столкнуться с внезапным прекращением развития продуктов, отсутствием оперативной поддержки и исправлений уязвимостей.

Eltex предлагает современное ПО для контроля доступа к сети и сетевому оборудованию – систему NAICE с гарантированной технической поддержкой, мультивендорностью, развитием функциональности под требования заказчиков. В версии 0.8 была добавлена поддержка TACACS+, теперь NAICE может выступать как сервер управления доступом к сетевому оборудованию.

Присоединяйтесь к нашему техническому вебинару 29 апреля в 10:00 (МСК) и узнайте всё о новом функционале в системе.

Что будет:

• Демонстрация установки NAICE и настройки TACACS+
• Возможности TACACS+ в NAICE: политики доступа, авторизации команд, интеграции с AD и др.
• Примеры на реальном оборудовании
• Ответы на вопросы от экспертов Eltex
• Лицензирование NAICE и функционала TACACS+

Вебинар будет полезен техническим специалистам, отвечающим за сетевую инфраструктуру и безопасность.

Зарегистрируйтесь, чтобы не пропустить.

Реклама. ООО "ПРЕДПРИЯТИЕ "ЭЛТЕКС". ИНН 5410108110. erid: 2W5zFJYtkeC

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

Network Admin

Deckhouse — разработчик лидирующей платформы контейнеризации — проводит свой первый инженерный митап: Deckhouse User Community.

Когда: 20 мая, сбор гостей с 18:15, начало в 19:00 (мск)
Где: в Москве и онлайн.
Для кого: DevOps-инженеры, SRE, сисадмины и платформенные разработчики.
О чём: работа Cilium и распределённый инференс LLM с K8s в домашних условиях.
Сколько стоит: бесплатно, но регистрация обязательна — на такое событие рекомендуем поторопиться с бронью места.

Зарегистрироваться на DUC

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

Network Admin

SFTP как точка отказа: когда libssh зависает при логине из-за отсутствия энтропии

На слабых VPS, embedded-хостах и в dev-контейнерах можно столкнуться с неожиданной проблемой: sftp (через libssh) виснет при подключении.

Никаких логов, таймаутов, ошибок. Просто «залипло».


Обычно дело не в сервере, а в недостатке энтропии в системе. libssh по умолчанию использует /dev/random, а не /dev/urandom, и если пул энтропии пустой — генерация ключа блокируется.

Особенно это критично в headless-системах без клавиатуры, мыши, звуковой карты и других источников «шумов».

Как диагностировать:
1️⃣Проверить текущее состояние энтропии:

cat /proc/sys/kernel/random/entropy_avail


Если значение меньше 100–200 — уже плохо.

2️⃣Пробуем strace sftp user@host и замечаем, что процесс застрял на чтении /dev/random.

Что делать:
В контейнерах и VPS — установить haveged или rng-tools, чтобы генерировать энтропию:

apt install haveged
systemctl enable --now haveged


• Если вы собираете libssh сами — используйте флаг LIBSSH_USE_URANDOM.
• Для тестов — можно подменить /dev/random на /dev/urandom через LD_PRELOAD (не для продакшна):

LD_PRELOAD=./fake-random.so sftp user@host


где fake-random.so — небольшая заглушка, перенаправляющая open("/dev/random") на "/dev/urandom".

N.A. ℹ️ Help

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

Network Admin

Когда ICMP нужен: как его отсутствие ломает MSS и PMTU discovery

Во многих инфраструктурах ICMP считают «ненужным» и отрубaют его на периметре — мол, безопасность, чтобы никто не пинговал.

В результате получаем баги, которые тяжело отлаживать: от медленного SSH до обрыва TLS.


Path MTU Discovery (PMTUD) в TCP/IP полагается на ICMP Type 3 Code 4 (Fragmentation Needed).

Когда по пути есть узел с меньшим MTU, он должен прислать ICMP-ошибку и сообщить, какой размер пакета возможен. Если ICMP блокируется, пакеты просто молча теряются.

Признаки в продакшене:
• SSH или HTTPS зависает сразу после подключения
• TLS соединение срывается без ошибки
• ping до узла работает, но curl или scp — нет
• MTU выше по цепочке (например, GRE или IPsec) не согласуется

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

ip link | grep mtu  
ip route get <dst>
ping -M do -s 1472 <dst> # для MTU 1500 с учетом IP+ICMP


Анализ через tcpdump:

tcpdump -i eth0 icmp or tcp port 443


Если нет ICMP Fragmentation Needed — значит, он кем-то фильтруется.

Проверка firewall’ов:
Убедитесь, что правила (например, в iptables или cloud security group) не блокируют ICMP Type 3.

Как лечить
Пропустить ICMP Type 3 на периметре (или хотя бы Code 4):

iptables -A INPUT -p icmp --icmp-type fragmentation-needed -j ACCEPT


Уменьшить MSS вручную на туннелях или при NAT:

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu


Проверить, не отключен ли PMTU discovery в системе:

sysctl net.ipv4.ip_no_pmtu_disc


N.A. ℹ️ Help

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

Network Admin

Когда conntrack не спасает: потерянные state’ы при NAT failover

Вы строите отказоустойчивую NAT-схему с двумя Linux-хостами. На обоих — iptables с маскарадингом, conntrack и failover через VRRP (например, с keepalived).

Всё выглядит нормально — пока один узел не уходит в оффлайн. После этого все существующие подключения падают, хотя fallback сработал, IP переехал, и сервис вроде доступен.


Что происходит:
NAT работает только при наличии state о соединении. Таблица состояний conntrack привязана к ядру, и при смене хоста она теряется — второй сервер ничего не знает о старых сессиях. В результате:

TCP-потоки обрываются;
UDP перестаёт ходить (особенно заметно с DNS);
клиент пытается переподключиться, но если TTL на уровне приложения высокий — может повиснуть на retry.

Как это диагностировать:
1️⃣Проверяем текущие state’ы:

conntrack -L | grep 192.168.0.100


2️⃣Ловим сессии, потерявшиеся после failover:

conntrack -E | grep [ip-источника]


3️⃣Отслеживаем попытки соединений без состояния:

tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0'


Если SYN идёт, но SYN-ACK нет — вероятно, новый хост не знает об исходной сессии.

Как решить:
Синхронизация state’ов:
Установите conntrackd, настройте режим FT-FW (Failover). Он будет реплицировать таблицы состояний между узлами:

Sync {
Mode FTFW {
...
}
}


Сохранение/восстановление:
В некоторых сценариях (например, при перезагрузке) можно попробовать дампить state’ы:

conntrack -L > /var/lib/conntrack.backup


А потом — восстановить:

conntrack -I < /var/lib/conntrack.backup


Трюк для UDP: если потеря state критична (например, в VoIP), используйте NAT-keepalive, чтобы клиент сам инициировал переустановку state после фейловера.

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

Network Admin

ARP flux и виртуализация: когда Linux отвечает не с того интерфейса

Что это вообще за баг?
Виртуалки, бонды, VRRP, несколько интерфейсов на одном хосте — классическая среда для ловли ARP flux.

Это ситуация, когда ядро Linux отвечает на ARP-запрос не с того интерфейса, на который он пришёл.

Вроде мелочь, но внезапно: неправильный MAC, рушится failover, свитчи запоминают неправильные порты, и начинается магия.


Как это ловится?
Допустим, вы настраиваете keepalived с VRRP или делаете dual-homed сервер, и трафик вдруг уходит в никуда.

Проверяете tcpdump — ARP-ответ пришёл с другого интерфейса. Layer2-свитч делает неправильные записи в CAM-таблице, и VoIP, iSCSI или просто HTTP начинают флапать.

Почему это происходит?
По умолчанию ядро Linux считает, что интерфейсы — это просто физические каналы для одной общей таблицы маршрутов.

Оно не проверяет, что IP принадлежит конкретному интерфейсу — если IP есть в системе, он может быть “отвечен” с любого интерфейса. Это и есть ARP flux.

Как чинить?
Пара sysctl-параметров, которые спасают день:

# Запретить ядру отвечать на ARP-запросы с не того интерфейса
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth1/arp_filter


Если интерфейсов много — применяйте ко всем нужным. Можно прописать в /etc/sysctl.conf или /etc/sysctl.d/.

И как проверить, есть ли ARP flux прямо сейчас?

tcpdump -i any arp and ether src host <mac вашего сервера>


Если ARP replies приходят не с того интерфейса, с которого ожидали — вы его словили.

Где это особенно критично?
• VRRP и L3 failover’ы
• Сетевые storage, где важна предсказуемость ARP
• Виртуалки с несколькими интерфейсами
• Контейнерные среды с нестандартными bridge’ами

N.A. ℹ️ Help

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

Network Admin

MTU + TSO/GSO/UDP: когда пакеты разваливаются на границе VxLAN

VxLAN, jumbo frames и offload-механизмы вроде TSO/GSO — отличная штука, пока всё работает. 


Но стоит один компонент неправильно выставить MTU или забыть про особенности UDP в туннелях — и вы ловите странные таймауты, обрывы и падения производительности.

Что ломается:

Когда внутри туннеля передаётся большой сегмент TCP, рассчитанный на offload (TSO), а снаружи он должен быть помещён в VxLAN, происходит фрагментация.

UDP в ядре Linux с GSO не всегда корректно обрабатывает такие сценарии, особенно если на сетевой карте отключены нужные offload-флаги.

В некоторых сетях это приводит к такому:
• Nginx внезапно залипает на ответе;
• SSH отваливается при открытии tmux;
• tcpdump ничего не показывает, но ss висит в ESTABLISHED;
• а dmesg втихаря шепчет про “UDP: fragmentation failed”.

Как это отлавливать:
Проверка MTU:

ip link show dev eth0


Сравните с ip link show dev vxlan100. Виртуальный интерфейс часто выставляется на 1500, что не учитывает заголовки (VxLAN + UDP + IP).

Анализ GSO/TSO/SG:

ethtool -k eth0 | grep -i 'tcp-segmentation-offload'
ethtool -k vxlan100


Иногда приходится принудительно отключать gso на уровне интерфейса:

ethtool -K vxlan100 gso off


sysctl-трюки:
Проверка/отключение GRO:

sysctl net.core.netdev_max_backlog
sysctl net.ipv4.udp_rmem_min


tcpdump против правды:
Если tcpdump не видит проблему, попробуйте с -j adapter_unsynced -s 0 -n или через nstat, чтобы проверить, есть ли фрагментированные пакеты, падающие в ядре.

N.A. ℹ️ Help

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

Network Admin

Как TCP slow start ломает API-gateway после простоя

Когда API-шлюз долго простаивает, первый клиент после “засыпания” получает неприятный бонус — повышенную задержку.

Особенно это видно на малых payload: TCP начинает с минимального окна, передаёт несколько MSS, ждёт ACK… и только потом разгоняется. 


Так работает TCP slow start — и это может ломать весь UX.

Симптомы:
— Первый запрос к API после простоя обрабатывается в разы дольше.
— В логах видно нормальное время backend’а, но высокая TTFB у клиента.
— В pcap видно задержки между первым и вторым сегментом TCP.

Почему так происходит:
TCP после простоя теряет CWND (congestion window) до минимального значения. Если запрос не был отправлен “целиком” в одном сегменте, начинается игра в догонялки с ACK’ами.

Как это фиксится:

1️⃣Прогрев сокетов заранее
В Nginx можно запустить fake-запросы через curl к себе раз в N минут. Это сохранит живые соединения и CWND.
Также помогает настройка keepalive_timeout, чтобы соединения не рвались.

2️⃣ Твик tcp_notsent_lowat
Позволяет управлять, сколько данных можно держать в буфере, прежде чем TCP начнёт их отправку.
Установка маленького значения tcp_notsent_lowat ускоряет отправку данных, даже если окно ещё не полностью заполнено.

Пример настройки:

sysctl -w net.ipv4.tcp_notsent_lowat=4096


3️⃣ В HAProxy
Используйте tune.ssl.default-dh-param, tune.bufsize, а также timeout client и timeout server в разумных пределах, чтобы не терять соединения по idle.
Также помогает http-reuse always и option http-keep-alive для постоянных соединений.

Диагностика:
— tcpdump и wireshark покажут, сколько MSS передаётся на первом этапе.
— ss -i покажет текущие значения CWND и RTT.
— Прогрев + sysctl + reuse дают улучшения до 30–50 мс в холодных запросах.

N.A. ℹ️ Help

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

Network Admin

Трюки с ip rule и policy routing: поднимаем multi-WAN на голом Linux без дорогих железок

Наш сценарий: два провайдера, failover, и исходящая маршрутизация — с минимумом магии


Когда у вас два провайдера, а маршрутизатор — это обычный Linux-сервер, можно вполне обойтись без дорогих решений и поднять multi-WAN с failover и выбором маршрута в зависимости от исходящего интерфейса.

Главное — понимать, как работает policy routing (ip rule) и грамотно использовать ip route + conntrack.

Задача:
• Провайдер 1 (eth0, IP 192.0.2.10, шлюз 192.0.2.1)
• Провайдер 2 (eth1, IP 198.51.100.10, шлюз 198.51.100.1)
• Хотим, чтобы по умолчанию трафик шел через провайдера 1, но могли задать правила для выхода через провайдера 2. В случае падения первого — переключаемся.

Конфигурация таблиц маршрутизации:

# /etc/iproute2/rt_tables
100 isp1
200 isp2


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

ip route add 192.0.2.0/24 dev eth0 src 192.0.2.10 table isp1
ip route add default via 192.0.2.1 dev eth0 table isp1

ip route add 198.51.100.0/24 dev eth1 src 198.51.100.10 table isp2
ip route add default via 198.51.100.1 dev eth1 table isp2


Политики маршрутизации:

ip rule add from 192.0.2.10 table isp1
ip rule add from 198.51.100.10 table isp2


Теперь хост знает, что если исходный IP — от провайдера 1, маршрутизировать через его шлюз. То же для второго провайдера.

Failover:

Базово можно использовать ip route с приоритетами:

ip route add default via 192.0.2.1 dev eth0 metric 100
ip route add default via 198.51.100.1 dev eth1 metric 200


Или более продвинуто: скрипт, который пингует внешний IP через eth0, и при недоступности временно удаляет маршрут и добавляет eth1.

Но есть нюанс:

Policy routing сам по себе не сохраняет “состояние” соединения. Если маршрут ушёл на другой интерфейс, текущие соединения могут поломаться. Для этого нужен conntrack, и маршруты на основе марки пакетов (fwmark).

С помощью iptables и fwmark:

iptables -t mangle -A PREROUTING -i eth1 -j MARK --set-mark 2
ip rule add fwmark 2 table isp2


N.A. ℹ️ Help

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

Network Admin

🔍 Учитесь находить атаки в трафике до того, как они нанесут ущерб

28 апреля стартует практикум «Анализ сетевого трафика» от Positive Education — с разбором реальных атак и облачным стендом для отработки навыков.

Практикум готовили эксперты Positive Technologies:

Алексей Леднев, PT Expert Security Center
Кирилл Шипулин, PT NAD
— другие практики с опытом расследования сложных инцидентов.

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

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

Вы узнаете:

— какие следы оставляют хакеры в трафике
— как отличать шум от реальных угроз
— что важно при расследовании инцидентов на основе сетевых данных

Подробнее — на сайте программы

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

Network Admin

Дорога до вуза, задания, встречи с друзьями...Где найти энергию на все? 🤯

Lamoda поможет не тратить силы на лишнее — работай удаленно или в гибридном формате на новой оплачиваемой стажировке! 😎

Подавай заявку до 16 мая, чтобы воспользоваться и другими комфортными условиями: 👇
— зарплатой 90 000 или 65 000 рублей в зависимости от направления
— гибким графиком: работай от 30 часов в неделю
— полезными бенефитами: ДМС для экстренных случаев, корпоративными скидками, обучением и другим
— карьерными перспективами: ты сможешь остаться в штате Lamoda

Переходи на сайт — там ты найдешь еще больше крутых преимуществ работы в Lamoda! https://vk.cc/cLCvWO?erid=2W5zFHoSv8p

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

Network Admin

⚙️ Используй майские праздники наилучшим образом!

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

🤩 Admin Books – техническая литература для сетевых и системных администраторов и ИБ специалистов.

Ссылка для своих: /channel/+oiJ6xSEDw30wNDE6

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

Network Admin

Почему Wi-Fi режет ICMP, но TCP работает

Wi-Fi часто становится причиной загадочных «отвалов» мониторинга, когда ping перестаёт отвечать, но веб-сервер, SSH и другие TCP-сервисы продолжают работать.

ICMP-пакеты (ping) — это не приоритетный трафик. Многие точки доступа, особенно SOHO и корпоративные, дропают ICMP, если канал перегружен. 


Некоторые режут ICMP по TTL, другие — по скорости или даже отключают его в настройках безопасности.

Попробуем воспроизвести:

# Отправляем пинги через Wi-Fi
ping -i 0.2 -s 1000 192.168.1.1


Может наблюдаться: потери пакетов, увеличенный RTT, регулярные таймауты.

Но при этом:

curl -m 5 http://192.168.1.1


Ответ стабильно приходит.

Как проверить, режет ли точка ICMP
1️⃣Сравнить потери ping через Ethernet и Wi-Fi.
2️⃣ Снифферить Wi-Fi-интерфейс (в monitor mode):

tcpdump -i wlan0 icmp or tcp port 80

3️⃣ Посмотреть настройки точки доступа — часто фильтрация ICMP включена по умолчанию.

Что это ломает
Zabbix/Prometheus с проверками через ping видят «отвалившийся» хост, хотя он доступен.
Диагностика сбоев теряет точку опоры.
ping как способ оценки качества канала становится бесполезным.

Что делать
• Использовать TCP-проверки (tcping, curl, nmap -p 22 --host-timeout 1s).
• Настраивать fallback-механизмы в мониторинге.
• Учитывать ICMP-фильтрацию при проектировании Wi-Fi-инфраструктуры.

Хорошая сеть — не та, где «пинг 1 мс», а та, где стабильны TCP-соединения и нет сюрпризов при нагрузке.

N.A. ℹ️ Help

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

Network Admin

Split DNS на практике: от настройки к отладке
Часть 2

Split DNS часто выглядит просто на бумаге, но на практике вызывает сюрпризы: то внешние домены резолвятся через внутренний DNS, то наоборот — VPN-клиент затирает resolv.conf, а Windows всё делает по-своему. Вот как довести схему до рабочего состояния.

1️⃣Проверяем порядок DNS-резолвинга

На Linux используйте resolvectl или systemd-resolve --status, чтобы убедиться, какие DNS-сервера реально применяются для интерфейсов VPN и основного:

resolvectl status


Особенно важно убедиться, что у VPN-интерфейса указан внутренний DNS-сервер, а для внешнего трафика — системный или публичный.

2️⃣ Боремся с resolv.conf

Многие VPN-клиенты (в том числе OpenVPN) затирают resolv.conf полностью. Если split DNS не работает, это частая причина. Решения:
• используйте resolvconf или systemd-resolved
• для OpenVPN добавьте в конфигурацию клиента:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf


3️⃣ Отладка dig-ом

Чтобы убедиться, что внутренние домены резолвятся через внутренний DNS, проверяем явно:

dig @192.168.1.1 example.local


Если всё работает — получите IP из внутренней сети. Если нет — проверьте ACL на DNS-сервере (access-control в unbound, match-clients в bind).

4️⃣ Windows-клиенты

На Windows VPN-клиенты не всегда уважают split DNS. Возможные решения:
• настройка DNS-префикса и суффикса в свойствах интерфейса
• использование netsh interface ipv4 add dnsservers ... вручную
• настройка правил маршрутизации DNS-запросов через PowerShell

5️⃣ Мобильные клиенты и проблемы с fallback

На Android и iOS DNS-запросы часто идут мимо VPN, особенно если используется DoH (DNS over HTTPS). Проверьте настройки приватности — иногда помогает отключение DoH или включение Always-on VPN с принудительным туннелированием DNS.

N.A. ℹ️ Help

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

Network Admin

Как stateful firewall ломает VoIP NAT: conntrack, sip-helper и ALG под капотом

VoIP через NAT — это боль. Даже если вы пробросили нужные порты и открыли RTP, звонки могут не работать.

Причина — stateful firewall и особенности его работы с динамическими протоколами.


Основная беда — это SIP. Протокол передаёт IP-адреса и порты в теле пакетов, а не в заголовке. Stateful-фильтры, вроде conntrack, пытаются понять, как работает SIP, и вмешиваются: перенаправляют порты, переписывают IP, и даже создают свои правила.

Это делает отладку почти невозможной, особенно если подключены SIP ALG или sip-helper.

На Linux это может проявляться так:

входящий звонок идёт, но голос односторонний или пропадает;
conntrack создаёт странные сессии, которые живут не по правилам;
звонки перестают работать после перезагрузки роутера, хотя конфигурация не менялась.

Вот к примеру:

Проверка conntrack-сессий:

conntrack -L | grep sip


Отключение sip-helper в iptables:

modprobe -r nf_conntrack_sip


В nftables sip-helper уже не подгружается по умолчанию — и VoIP работает стабильнее, но требует ручной настройки NAT.

Что делать
1️⃣Отключайте ALG и sip-helper везде, где можете. Они только мешают.
2️⃣Контролируйте TTL и время жизни conntrack-сессий — SIP может ждать ответа дольше, чем сессия живёт.
3️⃣Используйте STUN и ICE у клиентов, особенно на NAT’ах.
4️⃣Если VoIP работает через VPN — выключите SIP-оптимизации совсем.

N.A. ℹ️ Help

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

Network Admin

Huawei VRP. Часть 2: передача файлов, удаление и установка ПО

Продолжаем работу с CLI на оборудовании Huawei. В этой части — как загрузить или скачать файлы по TFTP/FTP, удалить ненужное и установить новую прошивку.

Передача файлов через TFTP

Простейший способ передать файлы — через TFTP-сервер. На ПК можно использовать tftpd32 или встроенный сервер в Linux.

На Huawei VRP:

tftp 192.168.0.10 get vrpcfg.zip


— забрать файл с сервера.

tftp 192.168.0.10 put vrpcfg.zip


— отправить на сервер.

Убедитесь, что TFTP разрешён в настройках и нет блокировки межсетевым экраном.

Передача через FTP

FTP удобен, когда нужен логин/пароль или работаете с защищённым сегментом.

ftp 192.168.0.10


После логина можно использовать команды:

get vrpcfg.zip
put backup/vrpcfgbak.zip


Удаление файлов

Очистка памяти бывает критична перед обновлением прошивки:

delete vrpcfg.zip


или папки:

rmdir backup


Система спросит подтверждение — отвечайте Y.

Установка ПО и настройка автозагрузки

Загрузите прошивку в корень:

dir


Найти файл .cc, например:

vrp-basic.cc


Задать прошивку по умолчанию:

startup system-software vrp-basic.cc


Указать конфигурацию:

startup saved-configuration vrpcfg.zip


Проверить настройки загрузки:

display startup


И перезагрузить устройство:

reboot

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

Network Admin

Huawei VRP. Часть 1: Telnet и файловая система вживую

В этом посте разбираемся, как удалённо зайти на оборудование Huawei по Telnet, проверить состояние устройства и поработать с его файловой системой. Всё — через CLI.

Подключение через Telnet

По умолчанию Telnet работает на порту 23. На Huawei VRP устройство может быть и сервером, и клиентом Telnet. В простом сценарии с ПК на Windows можно подключиться так:

telnet 10.137.217.177


После ввода логина и пароля вы получите приглашение командной строки:

<Huawei>


Минимальный набор команд после входа:
• display version — показывает прошивку и версию ПО.
• display current-configuration — текущая конфигурация.
• display interface brief — список интерфейсов и их состояния.

Файловая система Huawei VRP

На маршрутизаторах это чаще всего флэш и SD, на коммутаторах — флэш и CF. Основной конфиг — vrpcfg.zip, системное ПО — *.cc.

Посмотреть содержимое хранилища:

dir


Создать каталог:

mkdir backup


Скопировать и переименовать файл:

copy vrpcfg.zip backup/vrpcfgbak.zip


Проверить, что копия на месте:

cd backup
dir


N.A. ℹ️ Help

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

Network Admin

Имба: в сети обнаружили мегашпаргалку с самыми полезными нейросетями на все случаи жизни.

Сохраняем самое крутое:
🤩Claude 3.7 Sonnet — мастхев для программистов
🤩Same New — быстрая копия интерфейса сайта
🤩Openrouter — доступ ко всем ИИ
🤩Suno AI — своя музыка с нейросетью

Подпишись и находи для себя крутые нейросети бесплатно: /channel/+pn8vPUiMNWw4MWJi

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

Network Admin

💰Вопрос безопасности в разработке становится всё более актуальным. Но как обосновать инвестиции в безопасность для бизнеса? Как оценить её финансовую сторону?

🗓Открытый вебинар 23 апреля в 20:00 мск даст ответы на самые важные вопросы. Мы расскажем, как сэкономить на долгосрочных потерях, внедряя эффективные меры безопасности с самого начала разработки.

🧑‍💻Спикер Максим Чащин — директор по информационной безопасности в ГК «Девелоника».

Вы узнаете, сколько стоит устранение уязвимостей, как принцип «shift left» влияет на итоговую производительность и как измерять эффективность мер безопасности. Это поможет вам убедить руководство инвестировать в безопасность на всех уровнях разработки.

👉Присоединяйтесь к открытому уроку и получите скидку на большое обучение «Внедрение и работа в DevSecOps»: https://otus.pw/L8gYc/

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

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

Network Admin

🔍 Больше, чем Kafka — для тех, кто не хочет терять контроль

Чем сложнее инфраструктура, тем выше риски. Kafka запускается быстро, но требует постоянного внимания и ресурсов: кластеры, ZooKeeper, ручное масштабирование — всё это вы и так знаете.

YDB Topics — альтернатива, созданная для тех, кто привык держать всё под контролем. Это брокер сообщений, встроенный в базу данных, с транзакциями между топиками и таблицами, отказоустойчивостью по умолчанию и без лишнего зоопарка сервисов.

🕛 23 апреля в 12:00 - вебинар не просто про продукт, а про философию: надёжность — не "фича", а норма.

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

Network Admin

23 апреля встречаемся на хардкорном митапе «Метрокластер на отечественном»

Что в программе?
▪️Разбор архитектуры и нюансов технологии метрокластера, особенностей проектирования и реализации
▪️Live-demo работы решения на отечественном оборудовании и ПО

Вы увидите, как ведет себя прикладное ПО при выходе из строя отдельных компонентов кластера и продуктивной площадки целиком.

В составе стенда два набора оборудования:
▪️СХД Аэродиск
▪️Сервер виртуализации Aquarius под управлением zVirt
▪️Коммутатор Qtech

и один набор ПО:
▪️СУБД Postgres Pro под синтетической нагрузкой
▪️Платформа анализа данных Visiology с рабочим местом администратора и руководителя ИТ-инфраструктуры и панелью по анализу данных

Между двумя площадками эмулируется расстояние 60 км. Отслеживать состояние комплекса будет система мониторинга «Пульт».

🗓 Когда?

23 апреля, 16:00

Регистрация

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

Network Admin

🔌 Нужно железо без лишних вопросов?

Когда хочется развернуть проект быстро и без лишней зависимости от соседей по хостингу — можно взять BareMetal от Yandex Cloud. Это физический сервер под вашу задачу: ставите нужную ОС, свою виртуализацию, подключаетесь через SSH, KVM или API.

Плюс готовая интеграция с облаком: можно распределять нагрузку между выделенными серверами и облачной инфраструктурой. Всё изолировано, размещено в дата-центрах в РФ, безопасность по стандартам. Поддержка — 24/7, если что, помогут.

Попробовать BareMetal и подобрать нужную конфигурацию можно тут. Всё быстро, понятно и без лишних движений.

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

Network Admin

Прокачай свои навыки Kubernetes

Kubernetes — это мощь. Но по-настоящему он раскрывается в руках тех, кто знает, как с ним обращаться.

Хотите уверенно управлять кластерами, настраивать сеть, разруливать инциденты и держать инфраструктуру под контролем? ➡️Тогда вам на курс «Kubernetes Мега» от Слёрма.

На обучении вы: 

👉 Освоите перенос продукта на Kubernetes
👉 Научитесь разворачивать отказоустойчивые кластеры
👉 Ускорите траблшутинг и будете решать инциденты как профи
👉 Повысите стабильность и безопасность инфраструктуры
👉 Настроите автоматическую ротацию сертификатов, автодеплой и защищённое хранение секретов

Это не просто курс. Это путь к профессиональному уровню в K8s.

Старт — 21 апреля, вы как раз успеваете!

Посмотрите программу и забронируйте место ➡️ по ссылке

#реклама
О рекламодателе
erid: 2W5zFJJ5t3J

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

Network Admin

Как утечка MTU ломает SSH, туннели и мониторинг

Если вы замечали, что SSH с VPN «висит» после логина, HTTPS дёргается, а Zabbix теряет метрики без причины — проблема может быть не в приложении, а в MTU. 


Причём даже если ping работает нормально.

MTU (Maximum Transmission Unit) — это максимальный размер пакета на уровне канала. И если он больше, чем реально проходит через узлы между клиентом и сервером, пакеты начинают теряться без уведомлений, особенно если где-то по пути ICMP заблокирован (так называемый ICMP blackhole).

Как это выглядит на практике
1️⃣SSH коннектится, но команды «висят» после логина
2️⃣ HTTP-ответ не доходит до клиента (особенно при больших заголовках)
3️⃣ VPN соединение создаётся, но трафик не проходит
4️⃣ Zabbix или Prometheus теряют отдельные метрики
5️⃣ curl/telnet зависают, ping — работает
6️⃣ ICMP Fragmentation Needed не приходит из-за фильтрации

Диагностируем:

tracepath сразу показывает проблемный узел:

tracepath 8.8.8.8


Там, где TTL доходит, но MTU резко падает — и есть узкое место.

ping с флагом “не фрагментировать”:

ping -M do -s 1472 1.1.1.1


Если на 1472 пинг не проходит, а на 1400 — всё ок, MTU завышен.

3️⃣ tcpdump покажет проблему в TCP и ICMP:

tcpdump -ni wg0 icmp or tcp port 443


Смотрите на недостающие ACK или неожиданные RST.

Как лечить

Уменьшаем MTU на интерфейсе VPN (WireGuard, OpenVPN):
Для WireGuard:

ip link set wg0 mtu 1380


Клэмпим MSS через iptables (актуально, если не можете влиять на клиента):

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu


Проверка mtu через ifconfig/ip:

ip link show dev wg0


На сетевом оборудовании — настраиваем MSS clamping или активируем Path MTU Discovery.

N.A. ℹ️ Help

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

Network Admin

Как нейтральные узлы ломают QoS: когда DSCP обнуляется, а VoIP задыхается

На бумаге приоритизация VoIP выглядит идеально: помечаем трафик DSCP EF, настраиваем очереди, наслаждаемся стабильной связью.

На практике — где-то по пути эти метки теряются, и звонки начинают лагать. Почему?


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

Это могут быть CG-NAT-узлы провайдера, контроллеры Wi-Fi, туннельные интерфейсы, плохо настроенные маршрутизаторы.

Они могут обнулять DSCP в ноль, затирать его своими политиками или просто игнорировать вообще всё, что связано с приоритетом.

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

Начинаем копать — оказывается, WireGuard не передаёт DSCP. Или MPLS-сеть оператора зачищает приоритеты на выходе. Или пограничный маршрутизатор просто не сконфигурирован сохранять метки.

Иногда даже корпоративный DPI-фильтр может сбросить DSCP “на всякий случай”, если видит неизвестное приложение.


Решения тут нетривиальные.

Во-первых, стоит тщательно оттрассировать путь трафика — tcpdump, mtr, tracepath -V — и посмотреть, где именно пропадают метки.

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

Если не помогает — спасают отдельные VLAN и приоритет на уровне 802.1p, чтобы хотя бы на L2 звонки шли быстрее. И конечно, не мешает написать провайдеру и спросить напрямую: “А вы DSCP вообще не трогаете?”

В итоге: QoS по DSCP — не магия, а тонкая настройка всей цепочки. Один узел без поддержки — и весь план по приоритизации VoIP рушится.

N.A. ℹ️ Help

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