Сетевые проблемы удобно разбирать по слоям: доходят ли пакеты до сервера, слушает ли программа порт, пропускает ли фаервол, правильно ли настроен DNS. Для каждого слоя — своя команда.
Инструменты
$ apt install -y mtr-tiny traceroute dnsutils netcat-openbsd curlНа macOS mtr ставится через Homebrew (brew install mtr), в Windows вместо него есть pathping и WinMTR.
ping: есть ли связь
$ ping -c 10 203.0.113.10Смотрите на packet loss и разброс времени (mdev). Потери в несколько процентов уже заметны для SSH и игр.
mtr: где теряются пакеты
mtr совмещает traceroute и ping: показывает каждый узел по пути и потери на нём.
$ mtr -rwc 100 203.0.113.10- Потери на промежуточном узле, которые не доходят до последней строки, обычно не проблема: маршрутизаторы часто ограничивают ответы на ICMP.
- Если потери начинаются на каком-то узле и сохраняются до конца — проблема на этом участке или раньше.
- Резкий рост задержки между соседними узлами бывает нормальным, если узлы в разных странах.
Как прислать трассировку в тикет
Сделайте две трассировки — от вас до сервера и от сервера до вас (ваш IP можно узнать на сервере в выводе команды who или на любом сайте определения IP). Запускайте в момент, когда проблема проявляется, и вставьте текст целиком, а не скриншот:
$ mtr -rwc 100 203.0.113.10 > mtr-to-server.txt$ mtr -rwc 100 198.51.100.7 > mtr-to-client.txtss: слушает ли служба порт
$ ss -tulpnАдрес 0.0.0.0 или [::] означает, что порт доступен на всех интерфейсах; 127.0.0.1 — только локально. Если нужного порта в списке нет, служба не запущена или слушает другой порт.
Проверить доступность порта снаружи — с вашего компьютера:
$ nc -vz 203.0.113.10 443curl: что отвечает сайт
$ curl -sv -o /dev/null https://example.com$ curl -I --resolve example.com:443:203.0.113.10 https://example.comПервая команда покажет TLS-рукопожатие, сертификат и заголовки ответа. Вторая обращается к конкретному IP в обход DNS — удобно, чтобы проверить новый сервер до переключения домена.
dig: куда указывает домен
$ dig +short example.com A$ dig +short example.com AAAA$ dig @1.1.1.1 example.com AЕсли публичный резолвер уже возвращает новый IP, а ваш компьютер — старый, дело в кэше. Он очистится по истечении TTL записи.
Частые ошибки
- Служба слушает только 127.0.0.1 — поменяйте адрес привязки в её настройках, если к ней нужен доступ снаружи (и закройте фаерволом, если не нужен).
- Порт слушается, но снаружи закрыт — правило фаервола (ufw status) или, для Docker, публикация порта только на 127.0.0.1.
- Исходящие соединения на порты 25, 465 и 587 закрыты во всей сети — это ожидаемо, см. статью про почту.