Как редактировать файл hosts в Linux
Кратко:
Файл hosts в Linux позволяет сопоставлять IP‑адреса и имена хостов локально — это простой способ быстро обращаться к вашим серверам и виртуальным машинам без DNS. Резервное копирование, права root и учёт кэшей DNS решают почти все проблемы при его использовании.

Файл /etc/hosts хранит локальную таблицу, где каждая строка связывает IP‑адрес с одним или несколькими именами хостов. Это работает без DNS‑сервера, потому что система читает этот файл на компьютере. Файл удобен для локальных сетей, тестирования, переадресации или упрощения доступа к часто используемым машинам.
Что такое файл hosts?
Файл hosts — это простой текстовый файл, который разрешает имена хостов в IP‑адреса до обращения к внешнему DNS. Кратко:
- Местоположение: /etc/hosts
- Формат: каждая запись — одна строка: IP, пробел(ы), имена хостов
- Применение: локальная разработка, домашняя сеть, виртуальные машины, тестирование
Определение в одной строке: hosts — локальная карта IP → имя, приоритетнее внешнего DNS для локальной машины.
Как использовать файл hosts
- Посмотрите текущие записи:
cat /etc/hosts- Создайте резервную копию перед редактированием:
sudo cp /etc/hosts /etc/hosts.bak- Откройте файл в редакторе с правами root:
sudo nano /etc/hosts
# или
sudo vim /etc/hostsОбразец строки в hosts:
ip-address hostname other-hostnameПример для Pi‑Hole (IPv4):
192.168.122.7 pihole.localПример для виртуальной машины:
192.168.122.202 linux-vm.localПример IPv6:
::1 ip6-localhost ip6-loopback
fe80::1%lo0 ipv6-localЗамечания:
- Можно использовать короткие имена (например, pihole) или домены .local/.lab — это вопрос удобства.
- На одной строке можно указать несколько имён; первое имя обычно считается основным.
Формат и правила
- Разделители: один или несколько пробелов или символ табуляции.
- Комментарии: строка, начинающаяся с #, игнорируется.
- Порядок: запись в hosts обрабатывается локальным резолвером раньше, чем внешний DNS (в большинстве стандартных конфигураций).
- Порты не указываются в hosts — только имена и IP.
Частые ошибки и как их избежать
- Редактирование без sudo: изменения не сохранятся. Всегда используйте sudo или откройте редактор от root.
- Забытый пробел между IP и именем или лишние непечатаемые символы: используйте простые пробелы/табуляцию.
- Браузер или системный DNS‑кэш: после изменения может потребоваться очистка кэша.
Команды для очистки кэшей (зависит от системы):
- systemd‑resolved: sudo resolvectl flush-caches
- nscd: sudo systemctl restart nscd
- dnsmasq: sudo systemctl restart dnsmasq
- браузер: перезапустить или очистить внутренний DNS‑кэш
Когда hosts не сработает
- Если служба разрешения имён игнорирует /etc/hosts в вашей конфигурации NSS (посмотрите /etc/nsswitch.conf).
- Если используется корпоративный прокси/VPN, который перенаправляет DNS‑запросы внешним образом.
- При конфликте с mDNS/Avahi: два механизма могут привязывать одно и то же имя к разным адресам.
- Если запись перекрыта программно локальным кэшем DNS (например, в браузере) — очистите кэш.
Альтернативы и когда их выбрать
- Настройка локального DNS (BIND, dnsmasq): лучше для большого количества записей и централизованного управления.
- mDNS/Avahi: хороший выбор для автоматического обнаружения устройств в локальной сети без ручной правки.
- DHCP‑резервации в роутере: если хотите неизменный IP для устройства без правки hosts на каждом клиенте.
Выбор: если у вас несколько клиентов, используйте локальный DNS; для пары устройств hosts проще и быстрее.
Права доступа и безопасность
- /etc/hosts обычно доступен для чтения всем, но запись требует root.
- Не храните конфиденциальную информацию в именах хостов.
- Регулярно делайте резервные копии перед массовыми изменениями.
Советы по отладки
- Проверьте содержимое файла: cat /etc/hosts
- Убедитесь в отсутствии лишних символов: od -c /etc/hosts | sed -n ‘1,20p’
- Попробуйте ping по имени и по IP, чтобы увидеть, что возвращается:
ping -c 3 pihole.local
ping -c 3 192.168.122.7- Если имя всё ещё резолвится неправильно, проверьте /etc/nsswitch.conf на строке hosts: порядок должен быть hosts: files dns … чтобы /etc/hosts использовался первым.
Чек-листы по ролям
Системный администратор:
- Сделать резервную копию /etc/hosts
- Добавить запись в соответствии со стандартом именования
- Проверить разрешение имени и перезапустить нужные сервисы (nscd, dnsmasq, systemd‑resolved)
- Залогировать изменения в систему управления конфигурацией
Разработчик:
- Добавить временные записи для разработки
- Очистить кэш DNS в браузере
- Удалить/восстановить изменения после завершения тестов
Домашний пользователь:
- Использовать простые короткие имена (server, pihole)
- Делать одну резервную копию перед правкой
- Не трогать системные строки без понимания
Шпаргалка команд
sudo cp /etc/hosts /etc/hosts.bak # резервная копия
sudo nano /etc/hosts # редактирование
cat /etc/hosts # просмотр
sudo resolvectl flush-caches # очистить кэш systemd-resolved
sudo systemctl restart nscd # перезапустить nscdКритерии приёмки
- Новая запись присутствует в /etc/hosts и не содержит опечаток.
- Разрешение имени возвращает ожидаемый IP: ping имя → IP.
- При необходимости кэш сервиса был очищен и изменения видны через все клиенты.
Частые кейсы и примеры
- Блокировка домена: 0.0.0.0 badsite.example
- Локальное тестирование: 127.0.0.1 test.local
- Несколько имён для одной машины: 192.168.1.10 db db.internal db1
Резюме
Использование файла hosts — быстрый и надёжный способ локального сопоставления имён и IP‑адресов без развертывания DNS. Главное — работать с правами root, делать резервные копии и не забывать про кэширование. Для масштабных сценариев лучше выбирать локальный DNS или DHCP‑резервации.
Важно:
- Всегда делайте резервную копию перед изменением.
- Проверяйте /etc/nsswitch.conf, если изменения не применяются.
- Очистка кэша часто решает большинство проблем.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента