Устранение проблем с подключением к интернету в Linux

TL;DR
Краткая последовательность действий для поиска и исправления проблем с доступом в интернет: проверить состояние интерфейсов (ip, ip link), проверить связь до шлюза (ping), проверить трассировку (traceroute), проверить DNS (dig/host, /etc/resolv.conf), проверить правила брандмауэра (iptables, firewall-cmd, ufw) и службы (systemctl, nmap, ss). При наличии NetworkManager менять DNS нужно через конфиги интерфейсов или nmcli, не редактируя напрямую resolv.conf.
Введение
Интернет-соединение обеспечивает передачу данных между узлами сети. Администратору важно быстро находить причину неполадок и восстанавливать связь. В этой статье собраны практические методы и команды для диагностики и устранения проблем с исходящими и входящими соединениями, DNS и брандмауэром в Linux.
Важно: если вы работаете на сервере в продакшене, сначала документируйте текущее состояние конфигураций и делайте резервную копию конфигурационных файлов.
Что нужно знать перед началом
- Интерфейс: сетевой адаптер в системе (eth0, ens33, wlan0 и т.д.).
- Шлюз (gateway): ближайший роутер, через который идёт трафик за пределы сети.
- DNS: служба, преобразующая имена в IP.
- Брандмауэр: фильтрация пакетов на уровне хоста или сети.
Краткое определение: ping — утилита ICMP для проверки доступности хоста; traceroute — показывает путь пакетов и задержки до узла.
Как определить, клиентская или серверная проблема
- С клиента: можно ли пропинговать сервер по IP?
- С клиента: разрешается доменное имя в IP?
- С сервера: слушает ли процесс нужный порт (80/443)?
- Между ними: не блокирует ли трафик брандмауэр или промежуточное оборудование?
Поиск и устранение проблем с исходящими соединениями
1. Базовая проверка доступности
Отправьте ICMP-эхо, чтобы проверить базовую доступность:
ping Если 100% потеря пакетов, проверьте наличие интерфейса:
ip add showИнтерфейс в состоянии DOWN не имеет адреса и не передаёт трафик. Поднимите интерфейс:
sudo ifup Или:
sudo ip link set up Если интерфейс UP, но сервер недоступен, пингуйте шлюз:
ping Если шлюз недоступен — проверьте кабель, VLAN, коммутатор, питание оборудования.
2. Диагностика маршрута и задержек
Если шлюз доступен, но ресурсы за ним — нет, применяйте traceroute:
traceroute traceroute показывает промежуточные узлы и где теряются или заметно замедляются пакеты.
3. Проверка DNS при проблеме с именами
Если IP пингуется, а по имени сайт недоступен — это DNS. Сначала проверьте /etc/resolv.conf:
- На системах с NetworkManager этот файл может перезаписываться.
- На системах с systemd-resolved используется /run/systemd/resolve/stub-resolv.conf или resolvectl.
Проверка до конкретного сервера DNS:
ping -c 3 Проверка разрешения имен:
dig @X.X.X.X www.google.com
host www.google.com X.X.X.XЕсли DNS не отвечает, используйте временно публичный DNS (пример: 1.1.1.1 или 8.8.8.8) для проверки.
4. Проверка сетевых служб и портов
Для проверки, какие процессы слушают локальные порты, используйте ss или netstat:
ss -tulpn
# или
netstat -tulpnДля проверки доступности удалённых портов с клиента используйте nmap или curl:
nmap
curl -I http:// nmap покажет, какие порты открыты, какие закрыты и какие фильтруются.
Поиск и устранение проблем с входящими соединениями
1. Проверка доступности сервера с внешней сети
С клиента:
ping Если сервер не отвечает — причина может быть в сетевом оборудовании, на самом сервере или в его брандмауэре.
2. Проверка сервиса (пример: Apache httpd)
Проверяем, запущен ли процесс и слушает ли он порты 80/443:
ss -tulpn | grep http
systemctl status httpd
# Для NGINX
systemctl status nginxЕсли процесс слушает порты, но соединения не проходят — возможно, пакеты блокируются в брандмауэре или на хосте.
3. Анализ с помощью nmap
С внешнего хоста:
nmap - Состояние open — служба принимает соединения.
- closed — порт закрыт или служба не запущена.
- filtered — пакет блокируется брандмауэром.
Если порты закрыты, проверьте конфигурацию /etc/httpd/conf/httpd.conf и логи сервиса.
Устранение проблем с DNS
1. Где Linux ищет имена
Порядок поиска обычно такой:
- /etc/hosts
- DNS сервера в /etc/resolv.conf (или systemd-resolved)
Если имя не разрешается, проверьте эти источники.
2. NetworkManager и перезапись resolv.conf
NetworkManager может перезаписывать /etc/resolv.conf при подключении интерфейса через DHCP. Чтобы задать статический DNS для интерфейса, добавьте в конфиг изменения:
# На CentOS/Fedora/RHEL
sudo vim /etc/sysconfig/network-scripts/
# На Ubuntu/Debian
sudo vim /etc/network/interfaces Добавьте:
PEERDNS=no
DNS1=X.X.X.XПосле этого DHCP не будет перезаписывать DNS, и вы сможете редактировать /etc/resolv.conf вручную.
Примечание: на системах с systemd-resolved лучше использовать resolvectl или править /etc/systemd/resolved.conf.
Диагностика брандмауэра в Linux
1. Проверка правил iptables
Посмотрите текущие правила:
sudo iptables -L -n -vИщите цепочки с DROP или REJECT, а также правила с флагами -s (source) и -j (target). Правила применяются сверху вниз: если есть глобальный DROP, создайте более раннее правило для нужного порта/хоста.
2. firewalld и ufw
На современных дистрибутивах может использоваться firewalld или ufw:
# firewalld
sudo firewall-cmd --list-all
# ufw
sudo ufw status verboseОткроете порты при необходимости:
# UFw
sudo ufw allow 80/tcp
# firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reloadВажно: проверьте SELinux, он может блокировать доступ к файлам или портам в контексте безопасности.
Шпаргалка по командам (чеклист)
- ip add show — показать интерфейсы и адреса
- ip route show — просмотреть маршруты
- ip link set
up/down — поднять/опустить интерфейс - ping
— проверить доступность - traceroute
— трассировка пути - dig @DNS host — проверка DNS
- host host DNS — альтернатива dig
- ss -tulpn — какие процессы слушают на портах
- nmap host — скан порта извне
- sudo iptables -L -n -v — проверить iptables
- sudo firewall-cmd –list-all — firewalld
- sudo ufw status — ufw
- journalctl -u NetworkManager — логи NetworkManager
Пошаговый план устранения проблем (Playbook)
- Соберите симптомы и репродуцируйте проблему.
- Проверьте состояние интерфейсов: ip add show.
- Пингуйте сначала localhost, затем шлюз, затем внешний IP.
- Если пинг IP проходит, а домен — нет: проверяйте DNS (dig/host).
- Если службы недоступны: проверьте, слушает ли процесс (ss) и логи сервиса.
- Проверьте правила брандмауэра и SELinux.
- Если всё локально в порядке, проверяйте старшую сеть (маршрутизаторы, провайдер).
- Примените исправления, задокументируйте изменения и наблюдайте за поведением.
Критерии приёмки
- Клиент может корректно разрешать имя и открывать страницу.
- Входящие соединения на нужный порт доходят до приложения.
- Изменения задокументированы и отменяемы.
Ролевые чеклисты
Администратор сети:
- Проверить коммутаторы и VLAN.
- Проверить маршруты и BGP/OSPF при необходимости.
Системный администратор (сервер):
- Проверить процесс и логи приложения.
- Проверить локальные правила брандмауэра и SELinux.
Служба поддержки (helpdesk):
- Собрать логи и вывести простые команды для проверки клиента.
- Проверить, не связано ли с локальными настройками пользователя (Wi‑Fi, прокси).
Когда предложенные методы не помогут (контрпримеры)
- Проблема intermittent (прерывается): возможно, ошибка в физике канала, помехи, перегрузки сети.
- Медленная загрузка файлов, но быстрый отклик ICMP: часто причиной является ограничение полосы пропускания или QoS на маршрутизаторе.
- Сервера доступны по IP, но приложение возвращает ошибки: проблема уровня приложения, а не сети.
Дополнительные инструменты и советы
- tcpdump — для анализа реального трафика на интерфейсе (с осторожностью на продакшене):
sudo tcpdump -i host and port 80 - ethtool — для диагностики состояния физического интерфейса и скорости.
- nmcli — конфигурация NetworkManager через CLI.
- resolvectl — управление systemd-resolved.
Важно: сбор сетевого трафика может содержать персональные данные. Убедитесь в соответствии с политикой конфиденциальности.
Быстрая карта принятия решения (Mermaid)
flowchart TD
A[Проблема с доступом] --> B{Ping до IP успешен?}
B -- Да --> C{Доступ по имени?}
B -- Нет --> D[Проверить интерфейсы и шлюз]
C -- Да --> E[Проверить приложение и порт 'ss, nmap']
C -- Нет --> F[Проверить DNS 'dig/host, /etc/resolv.conf']
D --> G[ip add show; ip link set up]
F --> H{NetworkManager используется?}
H -- Да --> I[Настроить DNS через nmcli или конфиг интерфейса]
H -- Нет --> J[Изменить /etc/resolv.conf]
E --> K[Проверить брандмауэр и SELinux]
K --> L[Открыть порт или изменить правило] Шаблон для быстрого отчёта инцидента
- Описание проблемы:
- С чего начались сбои (время):
- Команды и вывод, собранные на клиенте:
- Команды и вывод, собранные на сервере:
- Временные решения (если были):
- Постоянное решение:
- Последующие шаги и рекомендации:
Итог и рекомендации
- Начинайте с самых простых проверок: интерфейс, шлюз, DNS, порт.
- Документируйте каждое изменение и имейте план отката.
- Используйте логирование и сбор метрик для обнаружения повторяющихся проблем.
- Для сложных случаев включайте сетевые инженеры и проверяйте инфраструктуру провайдера.
Краткое резюме
- Для типичных проблем хватает набора команд: ip, ping, traceroute, ss, nmap, dig, iptables.
- NetworkManager и systemd-resolved способны перезаписывать конфиги; меняйте DNS через соответствующие инструменты.
- Брандмауэр часто оказывается источником «filtered» состояния портов; проверьте порядок правил.
Важно: всегда сохраняйте бэкап конфигурационных файлов перед внесением изменений.
Похожие материалы
Исправить «preparing security options» в Windows
Как добавить Bluetooth на ПК
Улучшение звука Hi-Res без больших затрат
Apple Music Lossless: как включить и нужен ли он
Home Assistant на Raspberry Pi — локальный умный дом