Введение
Сетевое подключение является фундаментальным аспектом любой современной вычислительной среды. Хотя многое может пойти не так, одной из наиболее распространенных проблем является сбой разрешения доменных имен (DNS). DNS — это служба, которая преобразует удобные для человека доменные имена (например, www.google.com) в IP-адреса, которые компьютеры используют для соединения друг с другом. Если DNS не работает, вы можете быть подключены к интернету, но все равно не сможете получить доступ ни к каким веб-сайтам.
Эта лабораторная работа предлагает структурированный, практический подход к диагностике и устранению сетевой проблемы, связанной с DNS. Вы изучите последовательность команд для проверки вашего подключения, выявления проблемы с DNS, исправления конфигурации и подтверждения полного восстановления вашего соединения.
По завершении этой лабораторной работы вы будете оснащены надежным контрольным списком первоначальных шагов по устранению неполадок для решения проблем с подключением по DNS в системе Linux.
Подтверждение проблемы путем отправки ping на доменное имя
При устранении неполадок первым шагом всегда является подтверждение проблемы. Распространенный способ проверки подключения к Интернету — использование команды ping. Давайте попробуем выполнить пинг известного домена, google.com. Мы будем использовать опцию -c 4, чтобы отправить только четыре пакета.
Выполните следующую команду в вашем терминале:
ping -c 4 google.com
Вы увидите сообщение об ошибке, указывающее на сбой разрешения имен.
ping: google.com: Temporary failure in name resolution
Эта ошибка говорит нам о том, что система не смогла преобразовать доменное имя google.com в IP-адрес. Это убедительно указывает на проблему с DNS.
Изоляция проблемы путем отправки ping на IP-адрес
Мы подозреваем проблему с DNS, но нам необходимо убедиться, что наше базовое подключение к Интернету все еще работает. Мы можем сделать это, выполнив пинг публичного IP-адреса напрямую, что обходит процесс разрешения доменных имен (DNS). Мы будем использовать IP-адрес публичного DNS-сервера Google: 8.8.8.8.
Выполните следующую команду:
ping -c 4 8.8.8.8
На этот раз пинг должен быть успешным. Вы увидите ответы от сервера.
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=1.23 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=1.28 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=1.30 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=116 time=1.25 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.230/1.265/1.301/0.026 ms
Поскольку мы можем выполнить пинг IP-адреса, но не доменного имени, мы подтвердили, что проблема заключается именно в разрешении DNS.
Проверка и исправление настроек DNS
Теперь, когда мы знаем, что проблема связана с DNS, давайте посмотрим на файл конфигурации DNS. В Linux это обычно /etc/resolv.conf. Этот файл указывает системе, какие DNS-серверы использовать.
Посмотрим его содержимое:
cat /etc/resolv.conf
Вывод покажет сервер имен (nameserver), который был настроен нашим установочным скриптом.
nameserver 192.0.2.1
IP-адрес 192.0.2.1 зарезервирован для целей документации и тестирования; он не указывает на реальный DNS-сервер. Это и является причиной нашей проблемы.
Чтобы исправить это, нам нужно заменить некорректный сервер имен на действующий. Мы будем использовать публичный DNS-сервер Google: 8.8.8.8. Мы можем перезаписать файл с помощью команд echo и tee. Для этого требуются привилегии sudo.
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
Теперь снова просмотрите файл, чтобы подтвердить изменение.
cat /etc/resolv.conf
Вывод теперь должен показать правильный сервер имен.
nameserver 8.8.8.8
С настроенным действующим сервером имен мы на один шаг ближе к решению проблемы.
Очистка локального кэша DNS
Ваша система хранит временный кэш недавно запрошенных доменных имен для ускорения будущих запросов. После изменения настроек DNS хорошей практикой является очистка этого кэша, чтобы гарантировать, что система немедленно использует новые настройки и не полагается на старые, потенциально неверные, кэшированные данные.
В современных системах Linux для управления кэшем DNS можно использовать команду resolvectl, которая является частью systemd-resolved. Для очистки кэшей выполните следующую команду. Она требует привилегий sudo.
sudo resolvectl flush-caches
Эта команда не выдаст никакого вывода в случае успеха. Чтобы убедиться, что кэш был очищен, вы можете проверить статистику кэша с помощью команды statistics.
resolvectl statistics
В выводе найдите строку Current Cache Size. После очистки это значение должно быть 0, что подтверждает очистку кэша. Обратите внимание, что другие статистические данные, такие как попадания (Hits) и промахи (Misses), сохранят свои предыдущие значения.
...
Cache
Current Cache Size: 0
Cache Hits: 24
Cache Misses: 67
...
Очистка кэша DNS — важный шаг для обеспечения того, чтобы ваша система не использовала устаревшие записи DNS.
Подтверждение разрешения DNS и связности
Теперь, когда мы исправили конфигурацию DNS-сервера и очистили локальный кэш, пришло время проверить исправление. Мы повторим ту же команду из Шага 1, которая ранее завершилась неудачей.
Попробуем снова выполнить ping для google.com.
ping -c 4 google.com
На этот раз команда должна выполниться успешно. Вы увидите, как доменное имя будет разрешено в IP-адрес, и вы начнете получать ответы от сервера. (Примечание: Точный IP-адрес для google.com может варьироваться).
PING google.com (142.250.189.238) 56(84) bytes of data.
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=1 ttl=119 time=4.43 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=2 ttl=119 time=4.43 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=3 ttl=119 time=4.40 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=4 ttl=119 time=4.43 ms
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 4.400/4.421/4.434/0.012 ms
Успех! Теперь вы успешно диагностировали и устранили проблему с подключением через DNS.
Резюме
Поздравляем с завершением этой лабораторной работы! Вы успешно прошли стандартную процедуру по устранению и разрешению распространенной сетевой проблемы, связанной с DNS, в системе Linux.
В этой лабораторной работе вы научились:
- Использовать
pingдля проверки связности и различения общей сетевой ошибки и проблемы, специфичной для DNS. - Проверять конфигурацию DNS-сервера вашей системы в
/etc/resolv.conf. - Исправлять недействительную конфигурацию DNS для восстановления разрешения имен.
- Очищать локальный кэш DNS с помощью
resolvectl flush-cachesдля удаления устаревших записей. - Подтверждать работоспособность исправления успешным выполнением
pingпо доменному имени.
Эти базовые навыки закладывают прочную основу для решения многих распространенных сетевых проблем. Теперь вы можете применять этот логический, пошаговый процесс всякий раз, когда подозреваете проблемы с DNS в будущем.



