Etc hosts conf linux

Глава 6. Настройка сервера имен

Как уже обсуждалось в главе 2, сеть TCP/IP может полагаться на различные схемы преобразования имен в адреса. Самый простой способ, у которого нет никаких преимуществ над способом, где все пространство имен разделено на зоны, таблица хостов, сохраненная в /etc/hosts . Это полезно только для маленьких LAN, которые управляются одним администратором, и не имеют никакого IP общения с внешним миром. Формат файлов hosts был уже описан главе 5.

С другой стороны Вы можете использовать BIND ( Berkeley Internet Name Domain) для перевода имен хостов в IP-адреса. Конфигурация BIND может быть сложной задачей, но если только Вы сделаете это, то изменения в сетевой топологии могут быть легко отслежены. На Linux, как и на многих других Unix-подобных cистемах, сервис обеспечивается через программу, называемую named. При запуске эта программа загружает множество основных файлов в собственный кэш и ждет запрос от удаленных или локальных пользовательских процессов. Имеющиеся способы требуют, чтобы Вы обязательно ввели имя сервера для каждого хоста.

Библиотека Resolver

Когда мы говорим о » resolver«, то не подразумеваем никакого специального приложения, речь идет только об интерфейсе: системе функций, которая может быть найдена в стандарной библиотеке C. Основными вызовами являются gethostbyname(2) и gethostbyaddr(2) , которые ищут все IP-адреса, принадлежащие хосту, и наоборот. Они могут быть сконфигурированы при простом просмотре информации о хосте, при запросе ряда серверов, или при использовании баз данных hosts NIS (Network Information Service).

Функции читают файл настройки. Он сообщает, какой сервис использовать и в каком порядке. Старая стандартная библиотека Linux, libc, использовала файл /etc/host.conf , но библиотека GNU Version 2, glibc, использует файл /etc/nsswitch.conf .

Файл host.conf

Опции в /etc/host.conf должны быть на отдельных строках. Области могут быть отделены пустым пространством (пробелами или табуляцией). Знак # вводит комментарий до конца строки. Доступны следующие опции:

Эта опция определяет порядок, в котором перебираются все доступные сервисы. Значение hosts связывает запросы сервера с поиском хостов в /etc/hosts , bind с пакетом named , а nis с NIS-поиском. Любое или все значения сразу могут быть определены. Порядок, в котором они появляются в строках, определяет последовательность, в которой будут перебираться сервисы.

Эта опция определяет, разрешено ли хосту в /etc/hosts иметь несколько IP-адресов, которые обычно называются «multi-homed». Этот флаг не действует на DNS или NIS запросы. Допустимые значения: on или off . По умолчанию off.

Как уже объяснено в предыдущем разделе, DNS позволяет найти имя хоста, принадлежащего IP-адресу, используя домен in-addr.arpa . Попытки серверов поддержать ложное имя хоста называются «спуфинг» («spoofing»). Чтобы обезопасить себя от этого, библиотека может быть сконфигурирована на проверку, является ли настоящий IP-адрес фактически связанным с полученным именем хоста. Если нет, то этому имени будет отказано в преобразовании и возвращен код ошибки. Это поведение зависит от того, включен ли nospoof .

Эта опция может принимать значения on или off . Если она включена, то любые попытки спуфинга будут внесены в протокол syslog.

Эта опция берет как аргумент имя домена, которое будет удалено из имени хоста перед поиском. Это полезно для информационных элементов, где Вы хотите точно определить имя хоста с локальным доменом. При поиске хоста с именем локального домена будет удалено имя этого домена. Таким образом, легко осуществить поиск в /etc/hosts . Добавляемое имя домена должно оканчиваться точкой (.), например linux.org.au. .

Опция trim позволяет рассматривать Ваш хост как локальный для нескольких доменов.

Типовой файл для vlager показан в примере 6-1.

Пример 6-1. Образец файла host.conf

Resolver и переменные окружения

Установки из файла host.conf могут быть изменены, используя ряд переменных окружения:

Определяет файл, который будет считан вместо /etc/host.conf .

Отменяет опцию order в host.conf . Сервисы, заданные как hosts , bind , и nis , разделяются пробелом, запятой, двоеточием или точкой с запятой.

Определяет действия, принимаемые против спуфинга. Эта установка полностью отключается опцией off . Значения warn и warn off включают проверку спуфинга, но соответственно включают и выключают протоколирование (logging). Значение * включает проверку, но оставляет logging, как определено в файле host.conf .

Эта переменная может быть использована для перекрытия опции multi из host.conf . Допустимы значения on или off .

Определяет список trim-доменов, который отключает те, что заданы в host.conf .

Определяет список trim-доменов, которые добавляются к заданным в host.conf .

Файл nsswitch.conf

Version 2 GNU standard library включает более мощный и гибкий механизм, чем старый host.conf . Понятие сервиса имен было расширено с включением ряда различных типов информации. Опции конфигурации для всех функций, которые делают запрос к базам данных, были вынесены в один файл конфигурации nsswitch.conf .

Читайте также:  Route vpn windows как

Файл nsswitch.conf позволяет администратору конфигурировать большое число разных баз данных. Мы ограничим наше обсуждение параметрами, которые касаются хостов и поиска адресов IP.

Опции в nsswitch.conf должны располагаться на отдельных строках. Поля разделяются пробелами или табуляцией. Знак # как обычно определяет комментарий. Каждая строка описывает свой сервис. Первое поле в каждой строке задает имя базы данных, заканчивающееся двоеточием. База данных для преобразования адресов hosts . Связанная база данных, которая используется для преобразования имен сетей в адреса, networks .

Доступны следующие параметры:

Использовать Domain Name System (DNS), чтобы найти адрес. Это имеет смысл только для адресов машин, но не сетей. Этот механизм использует файл /etc/resolv.conf , который мы обсудим позже.

Искать локальный файл для хоста или имени сети и связанный адрес. Опция использует традиционные /etc/hosts и /etc/network .

nis или nisplus

Использовать Network Information System (NIS), чтобы найти адрес. NIS и NIS+ подробно рассмотрены в главе 13.

Порядок, в котором перечислены сервисы, определяет последовательность их опроса. Список порядка опроса находится в описании сервиса в файле /etc/nsswitch.conf . Сервисы опрашиваются слева направо, и по умолчанию опрос прекращается когда преобразование выполнено.

Простой пример спецификации баз данных host и network показан в примере 6-2.

Пример 6-2. Образец файла nsswitch.conf

Этот пример заставляет систему искать компьютеры сначала в Domain Name System, а в случае неудачи в файле /etc/hosts . Поиск имени сети использует только файл /etc/networks .

Имеются два возможных действия:

Управление возвращается программе, которая запросила преобразование имени. Если попытка поиска была успешна, resolver вернет подробные данные, иначе нулевой результат.

Resolver перейдет к следующему сервису в списке и будет пытаться использовать его.

Доступные значения состояния, которые мы можем использовать:

Запрошенная запись была найдена без ошибки. Заданное по умолчанию действие для этого состояния return .

Не было ошибки в поисковой таблице, но компьютер адресата или сеть не найдены. Заданное по умолчанию действие для этого состояния continue .

Сервис недоступен. Файл hosts или networks нечитаем для сервиса files , сервер имен или NIS-сервер не отвечают на запросы сервисов dns или nis . Заданное по умолчанию действие для этого состояния continue .

Это состояние означает, что сервис временно недоступен. Для сервиса files это обычно указывает, что файл был блокирован неким процессом. Для других сервисов это может означать, что сервер временно не может принимать подключения. Заданное по умолчанию действие для этого состояния continue .

Простой пример того, как Вы могли бы использовать этот механизм, показан в примере 6-3.

Пример 6-3. Файл nsswitch.conf с командой Action

Этот пример пытается искать компьютеры через Domain Name Service. Если состояние возврата не unavailable, resolver возвращает любой найденный адрес. Если, и только если, DNS возвращает unavailable, resolver делает попытку использовать локальный /etc/hosts . Это означает, что он должен использовать файл hosts , только если наш сервер имен является недоступным.

Настройка сервера имен: файл resolv.conf

При конфигурировании библиотеки resolver для того, чтобы использовать сервис BIND для поиска хостов, Вы обязательно должны сообщить, какое имя сервера используете. Существует отдельный файл, предназначенный специально для этого, называемый resolv.conf . Если этот файл не существует или пуст, то resolver примет имя сервера, определенного для Вашего локального хоста. Если Вы запускаете сервер на Вашем локальном хосте, то должны установить это имя отдельно, как это сделать будет объяснено позже в следующем разделе. Если в локальной сети есть возможность использовать существующее имя сервера, то ему должно отдаваться предпочтение.

Самая важная опция в resolv.conf это name server , которая задает IP-адрес используемого сервера. Если Вы определите несколько имен серверов, используя опцию name server несколько раз, то они будут проверяться в этом порядке. Поэтому Вы должны поместить наиболее надежный сервер первым. Могут поддерживаться не более трех серверов. Если опция name server не задана, то resolver попытается соединиться с сервером на локальном хосте.

Две других опции, domain и search , имеют дело с заданными по умолчанию доменами, которые берутся из имени хоста, если BIND не может найти адрес с первого запроса. Опция search определяет список доменов, которые необходимо проверить. Пункты списка разделены пробелом или табуляцией. Обычно при подключении к компьютер в локальном домене не указывают полностью квалифицированное имя, но использование имени вроде gauss в командной строке приведет на локальный домен, например, mathematics.groucho.edu .

Это только цель инструкции domain . Она позволяет Вам определять заданное по умолчанию имя домена, которое будет добавлено, когда DNS терпит неудачу при поиске имени хоста. Например, когда дано имя gauss , resolver не может найти машину gauss. в DNS, поскольку такого домена верхнего уровня нет. Когда дано mathematics.groucho.edu как значение по умолчанию, resolver повторяет запрос для gauss с заданным по умолчанию доменом.

Читайте также:  Как перенести папку temp windows 10

Но как только Вы выйдете за пределы домена отдела математики, хорошая жизнь кончится. Конечно, Вы также хотели бы иметь записи вроде quark.physics для компьютеров в отделе Физики.

Это делается с помощью search list. Список может быть определен, используя опцию search , которая является обобщением инструкции domain . Он задает перечень доменов, которые будут использовать для поиска машины с коротким именем.

Инструкции search и domain исключают друг друга и не могут появляться больше одного раза. Если никакая опция не задана, resolver пробует взять заданный по умолчанию домен из локального имени хоста (hostname) системным вызовом getdomainname(2) . Если локальный hostname не имеет доменной части, заданный по умолчанию домен будет принят как корневой домен.

Если Вы помещаете инструкцию search в resolv.conf , Вы должны внимательно следить, какие домены туда попадают. Библиотека Resolver до BIND 4.9 создавала заданный по умолчанию список поиска из имени домена, когда список поиска не был задан. Этот заданный по умолчанию список был составлен из заданного по умолчанию домена и всех родительских доменов до корневого. Это вызывало проблемы потому, что запросы DNS попадали на сервера, которые никогда не имели дела с нужным доменом.

Предположим, что Вы из сети Virtual Brewery хотите обратиться к foot.groucho.edu . Но ошибочно вместо foot набираете foo , который не существует. Сервер имен GMU сообщит Вам, что не знает такой компьютер. Со списком поиска старого стиля resolver теперь продолжил бы пробовать найти имя с добавлением vbrew.com и com . Последнее проблематично, потому что groucho.edu.com вполне может оказаться реальным доменом. Их сервер имен мог бы даже найти в своем домене foo . В результате Вы попадете на машину, к которой совсем не стремились! Вряд ли Вы на ней зарегистрируетесь, но с толку будете сбиты основательно.

Для некоторых прикладных программ эти поддельные ведущие поисковые таблицы могут быть проблемой защиты. Следовательно, Вы должны обычно ограничивать домены в Вашем списке поиска локальная организацией. В отделе математики Groucho Marx University список поиска обычно установлен в maths.groucho.edu и groucho.edu .

Когда запрашивается имя vale , resolver ищет vale , а в случае неудачи еще и vale.vbrew.com .

Ошибкоустойчивость Resolver

Если Вы запускаете LAN внутри большей сети, непременно должны использовать центральные сервера имен, если они доступны. Преимущество этого состоит в том, что они имеют богатые кэши, так как все запросы направлены к ним. Эта схема имеет недостаток: когда сгорел базовый кабель в нашем университете при пожаре, невозможно было дальше работать в LAN нашего отдела, потому что resolver не мог достичь какого-либо из серверов. Не было login на X-терминалах, печати на принтерах и т.д.

Хотя опускаться до пожаров для университетского городка никуда не годиться, каждый обязан соблюдать технику безопасности, чтобы избежать случаев, подобных этим.

Один из способов это обойти: устанавливать локальный сервер, который определяет имена из Вашего локального домена и пересылает все запросы для других имен к главным серверам. Конечно, это применимо только тогда, когда Вы используете Ваш собственный домен.

Источник

Как настроить локальный DNS используя файл /etc/hosts в Linux

DNS (система или служба доменных имён) — это иерархическая, децентрализованная служба/система наименования и перевода доменных имён в IP адреса в Интернете или в приватной сети, а также серверы, которые предоставляют такой сервис и называют DNS серверами.

Эта статья объясняет, как настроить локальный DNS используя файл /etc/hosts в системах Linux для локального разрешения доменов или тестирования веб-сайтов перед размещением их на доступном глобально веб-сервере.

Например, изменив файл /etc/hosts на своей локальной системе, чтобы в нём содержалась запись связывающая доменное имя с IP, вы можете протестировать сайт в идентичном окружении, как если бы он был размещён на реальном доменном имени. Такой подход позволит проверить работу, например, абсолютных ссылок, которые включают в адресе также и домен. Даже работу SSL сертификата таким образом можно проверить на локальной машине до того, как сделать это на рабочей сервере.

Ещё одно применение локального разрешения имён в файле /etc/hosts — создание коротких, легко запоминающихся имён для других устройств и компьютеров в локальной сети, благодаря чему можно будет вместо ввода IP адреса указать понятное имя «kali» или «files» для доступа к другому компьютеру по SSH или на его веб-сервер.

/etc/hosts — это файл операционной системы, который переводим имена хостов или имена доменов в IP адреса.

Внимание: если в вашей сети компьютерам IP адрес назначается автоматически при каждой загрузке, то при следующем включении IP может измениться и вы не сможете подключиться к устройству по имени, так как оно будет указывать на старый IP. Чтобы этот метод работал и после перезагрузки, настройте статические IP адреса для всех устройств, к которым вы будете обращаться по имени хоста, и которые вы добавите в файл hosts.

  • Настройку постоянного IP в любом Linux вы можете сделать на примере описанном в инструкции «Как настроить Kali Linux на использование статичного IP адреса».
  • Настройка статичного IP в Windows описана в статье «Как веб-сервер на своём компьютере сделать доступным для других».
Читайте также:  Serial console linux ��� ���

Для целей настоящей статьи мы будем использовать следующий домен, имена хостов и IP адреса (используйте значения в соответствии с вашей локальной сетью).

Что такое Переключатель сервисов имён в Linux (Name Service Switch)

Перед тем, как продолжить, вы должны понимать несколько вещей о другом важном файле, который расположен в /etc/nsswitch.conf. Он обеспечивает функции Переключателя сервисов имён, что означает, что он контролирует порядок (приоритет) в котором опрашиваются службы запросах к сервисам преобразования имени.

Если коротко, то за используемые для преобразования имён хостов службы перечислены в строке, которая начинается на «hosts:», пример данной строки:

Если в этой строке на первом месте слово «files» расположено перед словом «dns», то это означает, что для запросов к службе имён в начале делается запрос к файлу /etc/hosts, а затем к DNS. Но если слово «dns» стоит до «files», то при поиске IP адреса домена в начале будет сделан запрос DNS, и если не получено значение, то будут опрошены другие соответствующие службы или файлы.

Для наших целей важно, чтобы в строке «hosts:» присутствовало слово «files». А если вы хотите в файле /etc/hosts сделать записи для реальных доменных имён (например, для zalinux.ru), то необходимо, чтобы слово «files» в этой строке стояло раньше слова «dns», иначе вначале будет делаться запрос к DNS серверу, который будет возвращать IP сайта и очередь для получения IP из /etc/hosts не дойдёт

Проверьте содержимое этого файла:

Или просто посмотрите нужную строку:

Локальная настройка DNS используя файл /etc/hosts в Linux

Теперь откройте файл /etc/hosts используя любой текстовый редактор:

Добавьте в этот файл строки в формате:

Например, для моих данных я добавляю:

Сохраните и закройте файл.

Изменения, внесённые в файл hosts, вступают в силу немедленно.

Далее проверьте, что всё работает как и ожидается. Выполним пинг первого хоста командой ping. Для других хостов можно сделать аналогичную проверку:

Или используем сокращённый псевдоним:

На хосте kali.hackware.lan у меня запущен веб-сервер, поэтому я могу получить к нему доступ в веб-браузере, набрав адрес http://kali.hackware.lan/ или более короткий псевдоним http://kali.

Важно: обращаться по этим именам к другим компьютерам я могу только с тех систем, где добавлены аналогичные записи в файл /etc/hosts.

Если вы попытаетесь проверить IP адрес с помощью команды dig, nslookup или host, то для локальных хостов не будут найдены записи. Дело в том, что эти команды только делает запросы к DNS серверу и игнорируют настройки в файлах /etc/hosts и /etc/nsswitch.conf.

Формат файла /etc/hosts

Файл /etc/hosts в современных системах Linux присутствует скорее историческим причинам — ранее, до появления и распространения службы DNS, этот файл выполнял задачи по трансляции имён в IP адреса. В современных системах подразумевается, что функции этого файла может выполнять DNS сервер (например, локальный кэширующий DNS сервер, в котором присутствуют пользовательские записи и который, в случае если запрашиваемое имя не найдено, обращается к другому DNS серверу в Интернете). В принципе, аналогичный показанному результат действительно можно было достичь установив и настроив локальный DNS — в этом случае программы dig и другие правильно бы показывали IP адреса даже этих локальных хостов. Тем не менее как мы могли убедиться, использование файла /etc/hosts намного быстрее и удобнее для небольшого числа записей. По этой причине файл /etc/hosts по-прежнему часто применяется.

Файл /etc/hosts является простым текстовым файлом, в котором IP адреса связаны с именами хостов, каждая строка содержит по одному IP адресу. Для каждого хоста одна строка должна представлять следующую информацию:

Поля записи разделяются любым количеством пробелов и/или символов табуляции. Текст с символа «#» до конца строки является комментарием и игнорируется. Имена хостов могут содержать только буквы английского алфавита, знак минус (««) и точку («.«). Они должны начинаться с буквы и заканчиваться на букву. Необязательные псевдонимы указываются для изменений имён, альтернативных написаний, укороченных имён хостов или родовых имён хостов (например, localhost).

Источник

Оцените статью