Введение
Сетевые проблемы — одна из самых частых задач, с которыми сталкиваются администраторы и пользователи Linux. Неработающий интерфейс, недоступные ресурсы, медленное соединение — всё это требует системного подхода к диагностике. В этом гайде собраны основные команды и методы, которые помогут быстро найти причину неполадок и восстановить работу сети.
Статья охватывает диагностику на всех уровнях: от физического подключения до DNS и файрвола. Все примеры работают в современных дистрибутивах Ubuntu, Debian, CentOS и Fedora.
Подготовка
Перед началом диагностики убедитесь, что у вас есть доступ к терминалу с правами суперпользователя (для некоторых команд). Также полезно знать:
- IP-адрес вашего компьютера
- IP-адрес шлюза (роутера)
- адреса DNS-серверов (обычно предоставляются провайдером или настраиваются автоматически)
Если вы подключены через WiFi, сначала убедитесь, что беспроводной адаптер включён и ассоциирован с точкой доступа.
Шаг 1: Проверка состояния сетевых интерфейсов
Начните с просмотра всех сетевых интерфейсов и их текущего состояния:
ip link show
Вы увидите список интерфейсов (обычно eth0 или enp0s3 для проводных, wlan0 или wlp2s0 для беспроводных, lo — локальный интерфейс). Обратите внимание на строку состояния:
- UP, LOWER_UP — интерфейс включён и работает
- DOWN — интерфейс отключён
- NO-CARRIER — кабель не подключён или проблемы с физическим соединением
Если интерфейс в состоянии DOWN, включите его:
sudo ip link set eth0 up
Для получения подробной информации об IP-адресах выполните:
ip addr show
Здесь вы увидите назначенные IP-адреса, маску подсети и состояние интерфейса. Если адрес отсутствует (нет строки inet), это объясняет проблемы с сетью.
Шаг 2: Тестирование базового подключения
После проверки интерфейсов переходите к тестированию связности. Сначала пропингуйте локальный шлюз:
ping -c 4 192.168.1.1
⚠️ Важно: замените
192.168.1.1на реальный IP-адрес вашего роутера. Узнать его можно командойip route | grep default.
Если пинг проходит успешно (вы видите ответы от шлюза), переходите к тестированию внешнего подключения:
ping -c 4 8.8.8.8
Мы используем Google DNS (8.8.8.8) потому, что этот адрес всегда доступен и редко блокируется. Отсутствие ответов означает проблему с маршрутизацией или файрволом.
💡 Совет: для непрерывного мониторинга используйте
pingбез ключа-c. Нажмите Ctrl+C для остановки.
Шаг 3: Диагностика маршрутизации
Если пинг до шлюза работает, но до внешних адресов — нет, проблема в маршрутизации. Просмотрите таблицу маршрутов:
ip route show
Типичный вывод:
default via 192.168.1.1 dev eth0 proto dhcp
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
Первая строка — маршрут по умолчанию (шлюз для всего исходящего трафика). Вторая — локальная сеть. Если маршрут по умолчанию отсутствует, интернет работать не будет.
Добавить шлюз вручную можно так:
sudo ip route add default via 192.168.1.1
Но это временное решение — после перезагрузки настройки сбросятся. Лучше настроить DHCP или прописать статический маршрут в конфигурации системы.
Шаг 4: Проверка DNS
Когда пинг по IP-адресам работает, но сайты не открываются, — это классический признак проблем с DNS. Сначала проверьте, какие DNS-серверы используются:
cat /etc/resolv.conf
Современные дистрибутивы (systemd-resolved) могут не использовать этот файл напрямую. Проверьте текущие DNS:
resolvectl status
Теперь протестируйте разрешение имён:
nslookup ya.ru
или
dig ya.ru
Если команды возвращают ошибку или не находят адрес, проблема в DNS-серверах. Временное решение — использовать публичные DNS (например, Google 8.8.8.8 или Cloudflare 1.1.1.1):
sudo resolvectl dns eth0 8.8.8.8 1.1.1.1
Для постоянной настройки отредактируйте файл /etc/netplan/*.yaml (Ubuntu) или создайте конфигурацию в NetworkManager.
Шаг 5: Анализ открытых портов и служб
Иногда проблема не в подключении, а в том, что нужная служба не работает или слушает не тот порт. Просмотрите все открытые порты:
ss -tulpn
Ключи означают:
-t— TCP-порты-u— UDP-порты-l— только слушающие-p— показать процессы
Вы увидите таблицу с адресами, портами и именами процессов. Например:
LISTEN 0 511 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234))
Если нужный порт (например, 80 для веб-сервера) отсутствует в списке, проверьте, запущена ли соответствующая служба:
sudo systemctl status nginx
Шаг 6: Проверка файрвола
Брандмауэр может блокировать как входящие, так и исходящие соединения. Проверьте текущие правила.
Для iptables:
sudo iptables -L -v -n
Для ufw (Ubuntu):
sudo ufw status verbose
Для firewalld (CentOS, Fedora):
sudo firewall-cmd --list-all
💡 Совет: если вы не уверены в настройках файрвола, временно отключите его для теста, а затем настройте правила корректно.
Отключить файрвол временно:
# ufw
sudo ufw disable
# firewalld
sudo systemctl stop firewalld
# iptables (требует перечисления всех правил)
sudo iptables -F
Проверка результата
После выполнения шагов убедитесь, что сеть работает:
- Интерфейс включён —
ip link showдолжен показывать статус UP - Есть IP-адрес —
ip addrпоказывает адрес в вашей подсети - Пинг до шлюза работает — ответы от роутера
- Пинг до интернета работает — ответы от 8.8.8.8
- DNS работает —
nslookup ya.ruвозвращает IP-адрес
Если всё перечисленное выполняется — сеть работает корректно.
Возможные проблемы
Нет IP-адреса после перезагрузки
Проверьте, что служба DHCP-клиента работает: sudo systemctl status systemd-networkd или NetworkManager. Для статического IP настройте конфигурацию в /etc/netplan/ или через NetworkManager.
Соединение устанавливается, но обрывается
Проверьте качество кабеля (для проводного подключения) или сигнал WiFi. Используйте iwconfig для беспроводного адаптера и sudoiwlist wlan0 scan для поиска сетей.
Скорость очень низкая
Запустите тест скорости и проверьте загрузку интерфейса: ip -s link. Проблема может быть в дуплексе (полный/полудуплекс) — настройте вручную: sudo ethtool -s eth0 speed 100 duplex full.