Сетевой стек Linux & NetworkManager
Полное руководство по настройке сети в Linux: архитектура NetworkManager, команды nmcli, стек iproute2, маршрутизация, DNS-резолвинг и диагностика сбоев.
1. Архитектура сетевого стека: Device vs Connection
В современных дистрибутивах Linux (RHEL, AlmaLinux, Rocky, Ubuntu, Debian, Fedora) сетевое взаимодействие управляется демоном NetworkManager. Фундаментальный принцип — разделение физического/виртуального интерфейса и профиля конфигурации:
🔌 Device (Сетевой интерфейс)
L1/L2 Hardware
Физический порт или виртуальный адаптер ядра: eth0, enp0s3, wlan0, br0. Интерфейс существует в ОС, пока подключено устройство или драйвер.
📄 Connection Profile (Профиль)
ConfigurationНабор настроек (IP, маска, Gateway, DNS, маршруты). К одному интерфейсу можно привязать несколько профилей (например: «Home-DHCP» и «Office-Static») и переключать их одной командой.
Современный стандарт NetworkManager сохраняет профили в формате INI keyfile в каталоге:
/etc/NetworkManager/system-connections/*.nmconnection (с правами 600 root-only).
2. Интерактивный генератор команд nmcli
Сгенерируйте точную боевую команду настройки сети под вашу задачу
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
Физический линк и канальный уровень (Ethernet / ARP)
$ 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).
Сетевой уровень (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 назначен не из того диапазона.
Транспортный уровень (TCP/UDP сокеты и Фаервол)
$ 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) фаерволом.
Прикладной уровень (DNS Резолвинг и HTTP/TLS)
$ 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
sudo tcpdump -i any -nn -vv "udp port 53"
Показывает, на какой именно DNS-сервер и с каким доменом уходит запрос.
sudo tcpdump -i eth0 -nn "tcp[tcpflags] & (tcp-rst) != 0"
Мгновенно выявляет серверы или фаерволы, принудительно разрывающие сессию.
sudo tcpdump -i eth0 -w /tmp/capture.pcap host 192.168.1.50
Сохраняет сырой трафик для дальнейшего анализа в Wireshark.
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?