Name Service and Resolver Configuration
| назад | Вперед |
Функції читають налаштування файлу. Він повідомляє, який сервіс використовуватиме і в якому порядку. Стара стандартна бібліотека Linux, libc використовувала файл /etc/host.conf, але бібліотека GNU Version 2, glibc, використовує файл /etc/nsswitch.conf.
Ця опція визначає порядок, у якому перебираються всі доступні послуги. Значення hosts пов'язує запити сервера з пошуком хостів /etc/hosts , bind з пакетом named , а nis з NIS-пошуком. Будь-яке чи всі значення одразу можуть бути визначені. Порядок, у якому з'являються у рядках, визначає послідовність, у якій перебиратимуться послуги.
Ця опція може приймати значення on або off. Якщо вона включена, будь-які спроби спуфінгу будуть внесені в протокол syslog .
Ця опція бере як аргумент ім'я домену, яке буде видалено з імені хоста перед пошуком. Це корисно для інформаційних елементів, де Ви хочете визначити ім'я хоста з локальним доменом. При пошуку хоста з ім'ям локального домену буде видалено ім'я цього домену. Таким чином, легко здійснити пошук /etc/hosts . Ім'я домену, що додається, має закінчуватися точкою (.), наприклад linux.org.au. .
Опція trim дозволяє розглядати Ваш хост як локальний для кількох доменів.
Типовий файл для vlager показаний у прикладі 6-1.
Приклад 6-1. Зразок файлу host.conf
Налаштування з файлу 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 .
Version 2 GNU standard library включає більш потужний та гнучкий механізм, ніж старий host.conf. Поняття сервісу імен було розширено із включенням низки різних типів інформації. Опції конфігурації для всіх функцій, які запитують до баз даних, були винесені в один файл конфігурації nsswitch.conf .
Доступні такі параметри:
nis або nisplus
Порядок, у якому перераховані послуги, визначає послідовність їхнього опитування. Список порядку опитування міститься в описі сервісу у файлі /etc/nsswitch.conf. Сервіси опитуються ліворуч, і за замовчуванням опитування припиняється коли перетворення виконано.
Простий приклад специфікації баз даних host та network показаний у прикладі 6-2.
Приклад 6-2. Зразок файлу nsswitch.conf
Цей приклад змушує систему шукати комп'ютери спочатку в Domain Name System, а у разі невдачі у файлі /etc/hosts. Пошук імені мережі використовує лише файл /etc/networks.
Ви можете керувати пошуковою таблицею більш точно, використовуючи "action items", які описують, яку дію використовує результат попереднього пошуку. Action items з'являються між сервісними специфікаціями та включені доквадратні дужки ( [] ). Загальний синтаксис тут такий:
Є дві можливі дії:
Управління повертається до програми, яка запросила перетворення імені. Якщо спроба пошуку була успішною, resolver поверне докладні дані, інакше нульовий результат.
Resolver перейде до наступного сервісу у списку та намагатиметься використовувати його.
Доступні значення стану, які ми можемо використати:
Запитаний запис було знайдено без помилок. Задана за умовчанням дія для цього стану return.
Сервіс недоступний. Файл hosts чи networks нечитаемий для сервісу files , сервер імен чи NIS-сервер не відповідають запити сервісів dns чи nis . Задана за умовчанням дія для цього стану continue.
Цей стан означає, що сервіс тимчасово недоступний. Для сервісу files це зазвичай показує, що файл був блокований певним процесом. Для інших послуг це може означати, що сервер тимчасово не може приймати підключення. Задана за умовчанням дія для цього стану continue.
Простий приклад того, як Ви могли б використовувати цей механізм, показано на прикладі 6-3.
Приклад 6-3. Файл nsswitch.conf із командою Action
При конфігуруванні бібліотеки resolver для того, щоб використовувати сервіс BIND для пошуку хостів, Ви повинні обов'язково повідомити, яке ім'я сервера використовуєте. Існує окремий файл, призначений спеціально для цього, званий resolv.conf. Якщо цей файл не існує або порожній, resolver прийме ім'я сервера, визначеного для Вашого локального хоста. Якщо ви запускаєте сервер на вашому локальному хості, то повинні встановити це ім'я окремо, як це зробити буде пояснено пізніше в наступному розділі. Якщо у локальній мережі є можливість використовувати існуючеім'я сервера, то йому має надаватися перевага.
Це лише мета інструкції domain. Вона дозволяє Вам визначати задане за умовчанням ім'я домену, яке буде додано, коли DNS зазнає невдачі під час пошуку імені хоста. Наприклад, коли дано ім'я gauss, resolver не може знайти машину gauss. у DNS, оскільки такого домену верхнього рівня немає. Коли дано mathematics.groucho.edu як значення за промовчанням, resolver повторює запит для gauss із заданим за умовчанням доменом.
Але як тільки Ви вийдете за межі домену відділу математики, гарне життя скінчиться. Звичайно, ви також хотіли б мати записи на кшталт 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.
Якщо заданий за промовчанням домен створює проблеми, перегляньте частину файлу resolv.conf для Virtual Brewery:
Коли запитується ім'я vale, resolver шукає vale, а у разі невдачі ще й vale.vbrew.com.
Якщо ви запускаєте LAN всередині більшої мережі, неодмінно повинні використовувати центральні сервери імен, якщо вони доступні. Перевага цього полягає в тому, що вони мають багаті кеші, тому що всі запити направлені до них. Ця схема має недолік: коли згорів базовий кабель у нашому університеті під час пожежі, неможливо було далі працювати в LAN нашого відділу, бо resolver не міг досягти якогось із серверів. Не було login на X-терміналах, друку на принтерах тощо.
Хоча опускатися до пожеж для університетського містечка нікуди не годитися, кожен зобов'язаний дотримуватися техніки безпеки, щоб уникнути випадків, подібних до цих.
Один із способівце обійти: встановлювати локальний сервер, який визначає імена з вашого локального домену та пересилає всі запити для інших імен до головних серверів. Звичайно, це застосовується лише тоді, коли Ви використовуєте свій власний домен.