Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование *NIX систем > ping: unknown host


Автор: mbasil 14.6.2011, 20:22
Я полный профан в Linux. Однако требуется настроить. 
Изменил после инсталляции Oracle Linux 6 имя хоста на u01 и в результате получаю ошибку: 

Код

# ping u01
ping: unknown host u01


При этом ping на localhost проходит и команда hostname выдает u01. 

Помогите пожалуйста.




Автор: ChihPih 14.6.2011, 21:13
А вы про DNS слышали?

Автор: mbasil 14.6.2011, 21:42
В файле  /etc/resolv.conf имеет место строка:

nameserver 192.168.123.254

Дело осложняется тем, что Linux работает на VM VirtualBox.
Однако интернет доступен.

Автор: bilbobagginz 15.6.2011, 00:39
mbasil, послушайте про DNS. поскорей.

Добавлено @ 00:52
практически без слов:
http://www.youtube.com/watch?v=hcaJ1Vp_Ntg&feature=related
по-русски и нудно:
http://www.youtube.com/watch?v=d4u5VdJjCCE


P.S. DNS читается НЕ КАК ДЭНЭЕС, а как "Ди.Эн.Эс."

Автор: krypt3r 16.6.2011, 03:49
послушайте также про /etc/hosts

Автор: bilbobagginz 16.6.2011, 07:25
krypt3r, Ну если уж такая пьянка, то лучше уж почитает о переключателе резолвера:
Код

/etc/nsswitch.conf

и как его тестировать с getent.

Автор: mbasil 18.6.2011, 20:19
Спасибо за несколько ехидные рекомендации. Я предупредил, что не специалист в Linux. Я больше разработчик, просто нужда заставляет.

Автор: bilbobagginz 19.6.2011, 22:08
Цитата(mbasil @  18.6.2011,  19:19 Найти цитируемый пост)
Я больше разработчик, просто нужда заставляет. 

если единственное что задето предыдущими постами - это ваше "разработщиковское" эго, стоит задуматься.
DNS реализовали не инопланетяне, и она к нам не с небес снизошла,  простые разработчики как мы с вами.

а чтобы это не было бестолковым пустословием,

по сабжу,

вступление

для корректной работы сетевых узлов нужно настоить службы "резолвинга" (т.е. преобразования) некоторых системных ресурсов:
  • из имен в адреса, и из адресов в имена
  • из имен в сети, из сетей в имена
  • из имен пользователей в пароли
  • из имен групп в списки членов групп
  • и т.д.
это делает семейство библиотек resolver.

в системах POSIX (и линукс в том же числе) порядок выбора "источника" вычисления ресурсов по разным параметрам  записываетсв в файл /etc/nsswitch.conf

существует 2 основных метода резолвинга адресов:
  • на основе файла-таблицы преобразования  (/etc/hosts)
  • на основе dns
остальные методы работают посредством эмуляции одного из оных.

files
строение файла /etc/hosts простое: каждая строка имеет уникальное начало - адрес. остальные "поля" - различные имена данного узла. хронологически, это была первая система перевода имен, которую внедрили в системах UNIX.
между универами-участниками американских проектов на основе сети ARPANET в США гуляли такие файлы, и именно посредством их можно было подключится из standford.edu в mit.edu. постепенно сеть росла, файлы толстели и выходили из синхронизации.... это было и смешно и грустно. особенно смешно и грустно было кода имена путались и письма из одного универа приходили на другой, но не нужный. 

плохая масштабируемость оного принципа: для корректной работы сети с такой "системой" при добавлении 1 узла нужно синхронизировать файл на ВСЕХ узлах сети, чтобы у всех были корректные данные
Стала причиной того, что появилась нужда в более умном решении проблемы резолвинга.

dns
система dns - решение этой проблемы: на каждую локальную подсеть ставится конечное (малое) количество серверов dns. начальник чукотки (в смысле сетевой админ) настраивает таблицы перевода
  • из имен в адреса (прямые зоны)
  • адресов в имена (обратные зоны)
как же оно работает вне локальной сети ?
грубо говоря, каждый сервер знает подсети, имена (зоны) которой он реально содержит.
у него также есть список "родителей", т.к. имена разделены точками, а точка определяет т.н. "поддомен".
самый высокий уровень - это просто "точка", т.е. ".",
под ним так называемый TLD (top level domain), .com, .net, .org, страны и т.д.
и под ними соответственно их поддомены.
если я хочу узнать имя брата своего домена, я кричу папе, а папа знает брата.

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

Ессно тут образуется  ацикличный(желательно  smile ) диграф, или DAG (directed acyclic graph) доменов. т.е. "дерево", и листься этого  дерева - конечные зоны.

это было вступление,

конец вступления.

и так, вернемся к вопросу: "я настроил на хосте имя Х".

естественное продолжение:
для того, чтобы кто-то кроме самого хоста знал об этом, нужно либо:
  • создать единый список хостов в /etc/hosts в котором будут записаны все узлы, ну и раскидать его по всем узлам сети.
  • создать соответсвтующие днс записи на сервере, ессно первое надо будет повторить и копировать. а второе сделать 1 (или правильнее - 2) раза. 2 раза, т.к. для корректной работы сетевых приложений должна быть настроена как прямая (имя->адрес) зона, так и обратная (адрес->имя)
первый вид записей называется A record (adress), второй называется PTR record (pointer).
существует несколько видов записей, читаем доки для самообразования.

программа hostname смотрит только в файл /etc/hosts.
проверять как что работает в резолвере лучше всего с помощью программы getent
использование - ровно по устройству nsswitch.conf:
getent hosts u01
покажет нашла ли ваша система с помощью резолвера узел "u01".
(hosts - первый параметр определяет какой ресурс ищем)

результат будет положительным , если по порядку сначала проверяется dns, а потом hosts файл.
в файле будет ответ. для тестирования конкретного метода (напр. dns) есть dns clientы - nslookup, или лучше dig.
для работы с источником ldap можно делать прямые запросы клиентом ldap.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)