🐧 RHCSA / Enterprise Linux Networking

Сетевой стек Linux & NetworkManager

Полное руководство по настройке сети в Linux: архитектура NetworkManager, команды nmcli, стек iproute2, маршрутизация, DNS-резолвинг и диагностика сбоев.

🧱 Архитектура NM ⚡ Генератор nmcli 📡 iproute2 vs net-tools 🔍 Траблшутинг и Quiz
🧱

1. Архитектура сетевого стека: Device vs Connection

В современных дистрибутивах Linux (RHEL, AlmaLinux, Rocky, Ubuntu, Debian, Fedora) сетевое взаимодействие управляется демоном NetworkManager. Фундаментальный принцип — разделение физического/виртуального интерфейса и профиля конфигурации:

🔌 Device (Сетевой интерфейс)

L1/L2 Hardware

Физический порт или виртуальный адаптер ядра: eth0, enp0s3, wlan0, br0. Интерфейс существует в ОС, пока подключено устройство или драйвер.

$ nmcli device status

📄 Connection Profile (Профиль)

Configuration

Набор настроек (IP, маска, Gateway, DNS, маршруты). К одному интерфейсу можно привязать несколько профилей (например: «Home-DHCP» и «Office-Static») и переключать их одной командой.

$ nmcli connection show
📁 Где хранятся настройки в файловой системе?

Современный стандарт NetworkManager сохраняет профили в формате INI keyfile в каталоге:
/etc/NetworkManager/system-connections/*.nmconnection (с правами 600 root-only).

⚡

2. Интерактивный генератор команд nmcli

Сгенерируйте точную боевую команду настройки сети под вашу задачу

bash terminal

                    
💡 Полезные быстрые команды:
nmcli con up <name> // Активировать профиль
nmcli con mod <name> +ipv4.dns 9.9.9.9 // Добавить ещё один DNS
nmcli con reload // Перечитать файлы конфигурации
📡

3. Современный стек iproute2 против устаревших утилит

Пакет net-tools (ifconfig, netstat, route) объявлен устаревшим (deprecated) более 15 лет назад. В корпоративном Linux стандартом является iproute2:

Задача Устаревшая утилита Современная команда (iproute2) Разбор флагов
Просмотр IP и MAC адресов ifconfig -a ip addr show или ip -br a -br — brief (лаконичный вывод)
Включение / выключение линка ifconfig eth0 up/down ip link set dev eth0 up/down Управляет состоянием L2 сетевого интерфейса
Таблица маршрутизации (Routing) route -n / netstat -rn ip route show Показывает Default Gateway и локальные подсети
Прослушиваемые порты и сокеты netstat -tulpn ss -tulpn -t TCP, -u UDP, -l Listen, -p PID, -n Numeric
ARP / Соседние устройства arp -an ip neighbor show L2 кэш сопоставления IP ↔ MAC адресов
🌐

4. DNS Резолвинг, Hostname и конфигурационные файлы

/etc/hosts — таблица статического локального сопоставления доменных имен и IP-адресов. Проверяется системой до обращения к публичным DNS-серверам.

# Пример содержимого /etc/hosts
127.0.0.1       localhost localhost.localdomain
::1             localhost6 localhost6.localdomain6
192.168.1.10    dc01.lab.internal dc01
192.168.1.50    siem-server.lab.internal wazuh
🔍

5. Методология сетевой диагностики (OSI L1–L7)

Системный пошаговый алгоритм поиска и локализации любых сетевых сбоев в Linux

Шаг 1: L1 / L2

Физический линк и канальный уровень (Ethernet / ARP)

Есть ли сигнал и MAC-адреса соседей?
Команды проверки:

$ ip link show # Проверить флаг <UP,LOWER_UP>

$ ethtool eth0 # "Link detected: yes/no", Speed

$ ip neighbor show # Таблица ARP соседей

Симптомы сбоя:

• Состояние NO-CARRIER — нет физического подключения кабеля или свитча.
• FAILED в ip neighbor — шлюз не отвечает на ARP-запросы (L2 изоляция, не тот VLAN).

Шаг 2: L3

Сетевой уровень (IP-адресация и маршрутизация)

Правилен ли IP и шлюз по умолчанию?
Команды проверки:

$ ip -br addr # Наличие IP и маски подсети

$ ip route show # Наличие маршрута "default via ..."

$ ping -c 3 <Default_GW> # Пинг локального шлюза

$ tracepath -n 1.1.1.1 # Трассировка и проверка MTU

Симптомы сбоя:

• Network is unreachable — отсутствует маршрут по умолчанию (default gateway).
• Шлюз не пингуется — неверная маска подсети или IP назначен не из того диапазона.

Шаг 3: L4

Транспортный уровень (TCP/UDP сокеты и Фаервол)

Слушает ли сервис порт и открыт ли Firewall?
Команды проверки:

$ ss -tulpn | grep :80 # Биндинг (0.0.0.0 vs 127.0.0.1)

$ nc -zvw3 192.168.1.10 22 # Тест порта удаленного хоста

$ sudo firewall-cmd --list-all # Правила firewalld

$ sudo nft list ruleset # Правила nftables

Симптомы сбоя:

• Connection refused — сервис не запущен или слушает только локальный Loopback (127.0.0.1).
• Connection timed out — трафик тихо отбрасывается (DROP) фаерволом.

Шаг 4: L7

Прикладной уровень (DNS Резолвинг и HTTP/TLS)

Преобразуются ли доменные имена в IP?
Команды проверки:

$ resolvectl status # DNS статус в systemd

$ dig +trace google.com # Итеративный DNS запрос

$ curl -Iv https://ya.ru # Проверка HTTP ответа и SSL/TLS

Симптомы сбоя:

• Could not resolve host — недоступны DNS-серверы или поврежден /etc/resolv.conf.
• SSL certificate problem — истек сертификат или сбито системное время (timedatectl).

🦈

Анализ пакетов: боевые фильтры tcpdump

Перехват DNS запросов в реальном времени: sudo tcpdump -i any -nn -vv "udp port 53"

Показывает, на какой именно DNS-сервер и с каким доменом уходит запрос.

Поиск аварийных сбросов TCP (TCP RST): sudo tcpdump -i eth0 -nn "tcp[tcpflags] & (tcp-rst) != 0"

Мгновенно выявляет серверы или фаерволы, принудительно разрывающие сессию.

Дамп трафика конкретного хоста в PCAP: sudo tcpdump -i eth0 -w /tmp/capture.pcap host 192.168.1.50

Сохраняет сырой трафик для дальнейшего анализа в Wireshark.

Чтение сохраненного PCAP файла с номерами портов: tcpdump -nn -r /tmp/capture.pcap -c 100

Быстрый оффлайн-просмотр первых 100 пакетов без DNS-задержек.

🛠️

6. Интерактивный тренажер неисправностей (Сценарии из практики)

Выберите типовой сетевой инцидент, изучите вывод терминала и рецепт устранения

📝

7. Итоговая проверка знаний

Проверьте понимание сетевой подсистемы Linux, команд nmcli, iproute2 и траблшутинга

1. Какая команда применит изменения и активирует сетевой профиль «office-net»?

2. Какая комбинация флагов утилиты ss выведет прослушиваемые TCP/UDP сокеты с PID процессов и номерами портов?

3. Сервис веб-сервера работает, но при попытке подключиться с соседнего ПК возникает ошибка «Connection refused». Что наиболее вероятно?

4. Где в современных дистрибутивах Linux (RHEL 9, Alma, Fedora, Debian 12) хранятся постоянные профили NetworkManager?