Все операционные системы с поддержкой сети имеют файл hosts для перевода имен хостов в IP-адреса. Всякий раз, когда вы открываете веб-сайт, набирая его имя хоста, ваша система считывает файл hosts для проверки соответствующего IP-адреса и затем открывает его.
Файл hosts - это простой текстовый файл, расположенный в папке etc в Linux и Mac OS (/etc/hosts). Windows также имеет файл hosts, в Windows вы можете найти его в папке Windows\System32\drivers\etc\
Вот как это выглядит:
Из того, что мы упомянули, вы, возможно, ожидаете, что этот файл будет содержать очень длинный список IP-адресов и соответствующих им имен хостов; но это не так. Файл hosts содержит всего несколько строк;
- Первая часть, по умолчанию, содержит имена хостов и IP-адреса вашего localhost и машины. Это та часть, которую вы обычно изменяете для внесения нужных изменений.
- Вторая часть содержит информацию о хостах с поддержкой IPv6, и вы вряд ли будете редактировать эти строки.
Всякий раз, когда вы вводите адрес, ваша система проверяет файл hosts на его наличие; если он там присутствует, вы будете направлены на соответствующий IP. Если имя хоста не определено в файле hosts, ваша система проверит DNS-сервер вашего интернета на наличие соответствующего IP и перенаправит вас соответствующим образом.
Зачем редактировать файл /etc/hosts?
Редактируя файлы hosts, вы можете добиться следующих результатов:
- Заблокировать веб-сайт
- справиться с атакой или решить проблему розыгрыша
- Создать псевдоним для адресов на вашем локальном сервере
- переопределять адреса, которые предоставляет ваш DNS-сервер
- контролировать доступ к сетевому трафику
Как редактировать файл /etc/hosts?
Редактировать текстовый файл hosts, расположенный по адресу /etc/hosts, можно только в качестве суперпользователя. Сначала вам придется открыть его в текстовых редакторах, таких как VI editor, Nano editor или gedit и т.д. в терминале Linux. Затем вы внесете необходимые изменения и сохраните файл, чтобы эти изменения вступили в силу.
В этой статье мы будем использовать редактор Nano для редактирования файла. Пожалуйста, введите следующую команду:
1 | sudo nano /etc/hosts |
Или
1 | sudo gedit /etc/hosts |
Как уже упоминалось, мы будем редактировать первую часть файла hosts, где задаются IP-адреса и имена хостов. Ниже мы расскажем о двух способах использования файла hosts:
- Заблокировать веб-сайт
- Доступ к удаленному компьютеру через псевдоним
Блокирование веб-сайта
Вы можете заблокировать сайт, перенаправив его на IP вашего localhost или маршрут по умолчанию.
Например, если мы хотим заблокировать сайт google.com, мы можем добавить следующий текст в наш файл:
1 | 127.0.0.1 www.google.com |
Теперь, когда мы откроем сайт google, наша система возьмет IP нашего localhost (127.0.0.1) из файла hosts и перенаправит нас на него вместо IP google с нашего DNS-сервера.
ИЛИ
1 | 0.0.0.0 www.google.com |
Теперь, когда мы открываем сайт google, наша система будет брать IP маршрута по умолчанию (0.0.0.0) из файла hosts и перенаправлять нас на него вместо IP google с нашего DNS-сервера.
Вот как будет выглядеть отредактированный файл. Пожалуйста, сохраните изменения, нажав ctrl+X.
Теперь, когда вы попытаетесь открыть www.google.com из браузера, вы увидите сообщение об ошибке следующего вида:
Обратите внимание, что в файле hosts мы указали полный адрес www.google.com, а не только имя хоста google.com, поскольку современные браузеры иногда обходят блокировку, если мы указываем только последнее.
Существует также несколько предопределенных списков блокировок, которые вы можете использовать в своем файле hosts: https://github.com/StevenBlack/hosts.
Доступ к удаленному компьютеру через псевдоним
Предположим, у нас есть сервер, расположенный в локальной сети, к которому мы хотим получить доступ. Обычно нам приходится вводить IP-адрес сервера, чтобы получить к нему доступ, если он не определен в локальном DNS. Один из способов избежать ввода IP снова и снова - назначить псевдоним серверу в файле hosts следующим образом:
1 | 192.168.1.10 myserver |
IP соответствует местоположению сервера, к которому мы хотим получить доступ, а myserver - это новый псевдоним, который мы хотим использовать.
Теперь, когда мы сохранили файл и набрали myserver в адресной строке, мы будем перенаправлены на наш удаленный сервер.
Мы узнали, что, внеся очень простые изменения в файл hosts, мы можем настраивать и, таким образом, перенаправлять сетевой трафик в соответствии с нашими потребностями. Мы также можем избавиться от сетевой атаки или розыгрыша, восстановив файл hosts по умолчанию.