Какие сетевые команды Linux ты используешь для диагностики и настройки?

«Какие сетевые команды Linux ты используешь для диагностики и настройки?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

1. Базовая диагностика и проверка доступности:

  • ping / ping6: Проверка базовой связности и задержки (RTT). Часто с ключом -c для ограничения числа запросов: ping -c 4 8.8.8.8.
  • traceroute / tracepath: Определение сетевого пути и выявление "прыжков" с большой задержкой или потерей пакетов.

2. Анализ соединений и портов:

  • ss (предпочтительнее устаревшего netstat): Показывает открытые порты, установленные соединения, их состояние.
    # Показать все слушающие TCP-порты
    ss -tln
    # Показать установленные соединения на конкретный порт (например, 5432 - PostgreSQL)
    ss -t src :5432

3. Работа с сетевыми интерфейсами и маршрутизацией:

  • ip (замена ifconfig и route): Универсальная утилита.
    # Показать адреса интерфейсов
    ip addr show
    # Показать таблицу маршрутизации
    ip route show
    # Добавить статический маршрут
    ip route add 10.1.0.0/16 via 192.168.1.1 dev eth0

4. DNS-диагностика:

  • dig: Мощный инструмент для запросов к DNS. Использую для проверки A, MX, TXT записей и решения проблем с разрешением имен.
    dig A example.com +short
    dig @8.8.8.8 example.com  # Запрос к конкретному DNS-серверу

5. Анализ трафика (сниффинг и отладка):

  • tcpdump: Захват и анализ сетевых пакетов. Незаменим для отладки протоколов.
    # Захватить HTTP-трафик на порту 80
    sudo tcpdump -i eth0 -A tcp port 80
    # Захватить пакеты до/от конкретного хоста
    sudo tcpdump host 10.0.1.5
  • nc (netcat): "Швейцарский нож" TCP/IP. Для быстрой проверки доступности порта: nc -zv example.com 443.

6. Фаервол и безопасность:

  • iptables / nftables: Просмотр и управление правилами фаервола. sudo iptables -L -n -v для просмотра текущих правил и счетчиков пакетов.

7. HTTP-запросы и скачивание:

  • curl: Для тестирования API, проверки заголовков, загрузки файлов. curl -I http://example.com покажет только заголовки ответа (HTTP-код).
  • wget: Для рекурсивного скачивания или зеркалирования сайтов.