Введение
В этой лабораторной работе вы освоите важнейший навык управления локальным разрешением имен хостов в Linux путем прямого редактирования файла /etc/hosts. Этот файл позволяет вручную сопоставлять имена хостов с IP-адресами на вашем локальном компьютере, что является критически важным методом для веб-разработки, сетевого тестирования и системного администрирования. Контролируя эти сопоставления, вы можете переопределять публичные DNS-серверы и направлять трафик для определенных доменов на локальный или пользовательский IP-адрес.
Вам будет предложен полный практический рабочий процесс. Сначала вы проверите содержимое файла /etc/hosts по умолчанию с помощью команды cat, чтобы понять его структуру. Затем вы используете редактор nano для добавления пользовательской записи хоста. Чтобы проверить вашу конфигурацию, вы протестируете новое имя хоста с помощью команды ping. Наконец, вы удалите добавленную запись, восстановив файл в исходное состояние и завершив практическое упражнение.
Просмотр файла /etc/hosts по умолчанию с помощью cat
На этом шаге вы научитесь просматривать содержимое файла /etc/hosts. Этот файл представляет собой простой текстовый файл, который ваша операционная система использует для сопоставления имен хостов с IP-адресами. Прежде чем ваш компьютер обратится к DNS-серверу в Интернете для разрешения доменного имени, он сначала проверяет этот локальный файл. Понимание его структуры является фундаментальным сетевым навыком в Linux.
Мы будем использовать команду cat, которая является стандартной утилитой для чтения файлов и вывода их содержимого в терминал.
Откройте терминал и выполните следующую команду, чтобы отобразить содержимое файла /etc/hosts:
cat /etc/hosts
Пример вывода:
Вы увидите вывод, похожий на приведенный ниже. Точное содержимое может незначительно отличаться, но формат будет тем же.
127.0.0.1 localhost
## The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 Aliyun
192.168.2.67 iZbp1gakoh36s0s067d3ebZ iZbp1gakoh36s0s067d3ebZ
172.20.239.123 ubunut-base-image ubunut-base-image
172.28.138.90 iZj6c8bsoq3dpsob2zhgheZ iZj6c8bsoq3dpsob2zhgheZ
Разберем этот вывод:
127.0.0.1 localhost: Это самая распространенная запись. Она сопоставляет IP-адрес127.0.0.1(также известный как адрес обратной петли) с именем хостаlocalhost. Это критически важно для корректной работы многих локальных служб.- Строки, начинающиеся с
#: Это комментарии. Система их игнорирует, но они полезны для предоставления пояснений. - Записи IPv6: Строки типа
::1 ip6-localhostявляются эквивалентами обратной петли и других стандартных сетевых конфигураций для IPv6.
Теперь, когда вы увидели стандартную структуру файла hosts, вы готовы узнать, как его изменить на следующем шаге.
Добавление пользовательской записи хоста с помощью nano
На этом шаге вы вручную добавите новую запись в файл /etc/hosts. Это практический навык для разработчиков, которым нужно направить домен на локальный сервер, или для системных администраторов, настраивающих внутренние сети. Поскольку /etc/hosts является системным защищенным файлом, вам необходимо использовать sudo для получения необходимых разрешений на его изменение.
Мы будем использовать nano — простой и удобный текстовый редактор командной строки, который предустановлен в среде LabEx.
Выполните следующую команду, чтобы открыть /etc/hosts в nano:
sudo nano /etc/hosts
Терминал теперь отобразит содержимое файла внутри редактора nano. Используйте клавиши со стрелками, чтобы переместить курсор в конец файла. Добавьте следующую новую строку:
192.168.1.100 myfictionalserver.local
Эта строка сообщает вашей системе, что всякий раз, когда она встретит имя хоста myfictionalserver.local, она должна разрешить его в IP-адрес 192.168.1.100.
Теперь вам нужно сохранить изменения и выйти из редактора. Выполните следующие нажатия клавиш:
- Нажмите
Ctrl+O(команда "Write Out" — записать) для сохранения файла. nanoспросит "File Name to Write" (Имя файла для записи). По умолчанию это/etc/hosts, что правильно, поэтому просто нажмитеEnterдля подтверждения.- Нажмите
Ctrl+X, чтобы выйти изnanoи вернуться к приглашению терминала.
Теперь вы успешно изменили файл hosts. На следующем шаге мы протестируем эту новую запись, чтобы убедиться, что она работает должным образом.
Тестирование пользовательского имени хоста с помощью ping
На этом шаге вы проверите, правильно ли работает пользовательская запись, которую вы добавили в /etc/hosts. Лучший способ сделать это — использовать команду ping. ping — это сетевая утилита, используемая для проверки доступности хоста в IP-сети. Она также измеряет время, необходимое для отправки сообщений от исходного хоста к целевому компьютеру и обратно.
Когда вы выполняете ping для имени хоста, система сначала пытается разрешить это имя в IP-адрес. Поскольку мы добавили запись для myfictionalserver.local в /etc/hosts, ваша система должна найти ее там и использовать IP-адрес 192.168.1.100.
Протестируем это. В терминале выполните следующую команду. Мы используем флаг -c 4, чтобы отправить только 4 пакета и затем остановиться, что удобно для тестирования.
ping -c 4 myfictionalserver.local
Пример вывода:
Вы должны увидеть вывод, подтверждающий разрешение имени, даже если хост недоступен.
PING myfictionalserver.local (192.168.1.100) 56(84) bytes of data.
^C
--- myfictionalserver.local ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3053ms
Самая важная часть — это самая первая строка: PING myfictionalserver.local (192.168.1.100). Это подтверждает, что ваша система успешно разрешила имя хоста myfictionalserver.local в IP-адрес 192.168.1.100, используя запись из вашего файла /etc/hosts.
Команда будет продолжать выполняться до тех пор, пока не будет остановлена (например, нажатием Ctrl+C). Поскольку по адресу 192.168.1.100 в сети нет реального устройства, пакеты не будут получены. Однако часть процесса разрешения имен была успешной, что мы и хотели продемонстрировать.
Теперь вы подтвердили, что ваша пользовательская запись в файле hosts активна. На заключительном шаге вы узнаете, как выполнить очистку, удалив эту запись.
Удаление пользовательской записи хоста для восстановления исходного состояния
На этом заключительном шаге вы отмените изменения, внесенные в файл /etc/hosts. Отмена временных изменений является крайне важной практикой, особенно в общих или производственных средах, чтобы избежать неожиданного поведения в дальнейшем. Восстановление исходного состояния файла гарантирует, что разрешение имен вашей системой будет работать должным образом для всех остальных сетевых операций.
Как и прежде, вам потребуются привилегии sudo для редактирования файла с помощью nano.
Снова откройте файл /etc/hosts в редакторе:
sudo nano /etc/hosts
Используйте клавиши со стрелками, чтобы перейти к строке, которую вы добавили на Шаге 2:
192.168.1.100 myfictionalserver.local
Поместив курсор на эту строку, вы можете ее удалить. Быстрый способ удалить всю строку в nano — нажать Ctrl+K.
После удаления строки сохраните файл и выйдите из редактора:
- Нажмите
Ctrl+O, а затемEnterдля сохранения изменений. - Нажмите
Ctrl+X, чтобы выйти изnano.
Чтобы убедиться, что запись удалена и система больше не может разрешать имя хоста локально, попробуйте выполнить ping еще раз:
ping myfictionalserver.local
Пример вывода:
На этот раз команда должна немедленно завершиться ошибкой, поскольку у системы нет способа разрешить это имя.
ping: myfictionalserver.local: Name or service not known
Это подтверждает, что вы успешно удалили пользовательскую запись и восстановили файл hosts до исходного состояния.
Резюме
В этой лабораторной работе вы научились управлять локальным разрешением имен хостов в Linux, работая с файлом /etc/hosts. Вы начали с использования команды cat для проверки содержимого и структуры этого файла по умолчанию, понимая его роль в сопоставлении IP-адресов с именами хостов до выполнения DNS-запроса. Вы увидели, как форматируются стандартные записи, такие как 127.0.0.1 localhost, и как используются комментарии для документирования.
После проверки вы приобрели практические навыки, используя текстовый редактор nano для добавления пользовательской записи хоста, что является распространенной задачей для локальной разработки или тестирования сети. Чтобы убедиться в эффективности ваших изменений, вы использовали команду ping для тестирования нового пользовательского имени хоста, проверяя, что система разрешила его в указанный вами IP-адрес. Наконец, вы завершили лабораторную работу, удалив пользовательскую запись для восстановления исходного состояния системы, продемонстрировав полный цикл управления локальной записью хоста.



