Глава 7 Мрежова информационна услуга (NIS) (Общ преглед)
Тази глава предоставя общ преглед на мрежовата информационна услуга (NIS).
NIS е разпределена услуга за именуване. Това е механизъм за идентифициране и локализиране на мрежови обекти и ресурси. Той осигурява единен метод за съхранение и извличане на информация в цялата мрежа по транспортен протокол и независим от медиите начин.
Тази глава обхваща следните теми.
Въведение в NIS
Чрез стартиране на NIS, системният администратор може да разпространява административни бази данни, наречени карти, между различни сървъри (главни и подчинени). Администраторът може да актуализира тези бази данни от централизирано местоположение по автоматичен и надежден начин, за да гарантира, че всички клиенти споделят една и съща информация за услугата за именуване по последователен начин в цялата мрежа.
NIS е разработен независимо от DNS и има малко по-различен фокус. Докато DNS се фокусира върху опростяването на комуникацията чрез използване на имена на машини вместо числови IP адреси, NIS се фокусира върху това да направи мрежовата администрация по-управляема чрез предоставяне на централизиран контрол върху разнообразна мрежова информация. NIS съхранява информация не само за имената и адресите на машините, но и за потребителите, самата мрежа и мрежовите услуги. Тази колекция от мрежова информация се нарича NIS namespace.
Забележка –В някои контексти имената на машини се отнасят до имена на хостове или имена на машини. Тази дискусия използва машина, но някои екранни съобщения или имена на карти на NIS може да използват хост или машина.
NIS използва схема клиент-сървър. NIS сървърите предоставят услуги на NIS клиенти. Основните сървъри се наричат главни сървъри и за надеждност те имат резервни или подчинени сървъри. И главният, и подчиненият сървър използват NIS софтуера за извличане на информация и съхраняват NIS карти.
NIS използва домейни, за да подреди машините, потребителите и мрежите в своето пространство от имена. Той обаче не използва йерархия на домейни; пространството от имена на NIS е плоско.
По този начин тази физическа мрежа ще бъде подредена в един NIS домейн.
NIS домейн не може да се свърже директно към интернет само с NIS. Все пак организации, които искат да използват NIS и също да бъдат свързани към Интернет, могат да комбинират NIS с DNS. Можете да използвате NIS, за да управлявате цялата локална информация и да използвате DNS за търсене на интернет хост. NIS предоставя услуга за пренасочване, която препраща търсенията на хост към DNS, ако информацията не може да бъде намерена в NIS карта. Операционната среда на Solaris също ви позволява да настроите файла nsswitch.conf, така че заявките за търсене на хостове да отиват само към DNS или към DNS и след това към NIS, ако не бъдат открити от DNS, или към NIS и след това към DNS, ако не бъдат намерени от NIS. Вижте Глава 2, Превключвателят за услуга за имена (Общ преглед) за подробности.
Типове NIS машини
Има три вида NIS машини.
Главен сървър
Починени сървъри
Клиенти на NIS сървъри
Всяка машина може да бъде NIS клиент, но само машините с дискове трябва да бъдат NIS сървъри, главни или подчинени. Сървърите също са клиенти, обикновено сами по себе си.
NIS сървърът не трябва да бъде същата машина като NFS файловия сървър.
NIS сървърите се предлагат в две разновидности, главни и подчинени. Машината, определена като главен сървър, съдържа набор от карти, които системният администратор създава и актуализира при необходимост. Всеки NIS домейн трябва да има един и само един главен сървър, който може да разпространява NIS актуализации с най-малко влошаване на производителността.
Можете да посочите допълнителни NIS сървъри в домейна като подчинени сървъри. Подчинен сървър има пълно копие на главния набор от NIS карти. Всеки път, когато картите на главния сървър се актуализират, актуализациите се разпространяват между подчинените сървъри. Подчинените сървъри могат да се справят с всяко препълване на заявки от главния сървър, свеждайки до минимум грешките „сървърът е недостъпен“.
Обикновено системният администратор определя един главен сървър за всички NIS карти. Въпреки това, тъй като всяка отделна NIS карта има името на машината на главния сървър, кодирано в нея, можете да посочите различни сървъри, които да действат като главни и подчинени сървъри за различни карти. За да сведете до минимум объркването, посочете един сървър като главен за всички карти, които създавате в рамките на един домейн. Примерите в тази глава предполагат, че един сървър е главният за всички карти в домейна.
NIS клиенти изпълняват процеси, които изискват данни от картите на сървърите. Клиентите не правят разлика между главни и подчинени сървъри, тъй като всички NIS сървъри трябва да имат една и съща информация.
Елементи на NIS
Услугата за именуване на NIS се състои от следните елементи:
домейнът на NIS е колекция от машини, които споделят общ набор от карти на NIS. Всеки домейн има име на домейн и всяка машина, споделяща общия набор от карти, принадлежи към този домейн.
Всяка машина може да принадлежи към даден домейн, стига да има сървър за картите на този домейн в същата мрежа. NIS клиентска машина получава своето име на домейн и се свързва към NIS сървър като част от своя процес на зареждане.
NIS услугата се предоставя от пет демона, както е показано в таблица 7–1.
Таблица 7–1NIS демони
Демон
Функция
ypserv
Сървърен процес
ypbind
Процес на обвързване
ypxfrd
Високоскоростен трансфер на карта
rpc.yppasswdd
Демон за актуализиране на парола за NIS
** Вижте ЗАБЕЛЕЖКАТА по-долу.**
rpc.ypupdated
Модифицира други карти като publickey
Забележка –
rpc.yppasswdd счита всички черупки, които започват с r, за ограничени. Това означава, че потребителите, които имат обвивка, която започва с r. Например, ако сте в /bin/rksh, нямате право да променяте тази обвивка на друга. Ако имате обвивка, която започва с r, но не е предназначена да бъде ограничена като такава, вижте Глава 10, NIS Отстраняване на неизправности за заобиколно решение.
Услугата NIS се поддържа от девет помощни програми, както е показано в Таблица 7–2.
Таблица 7–2NIS помощни програми
Помощна програма
Функция
makedbm
Създава dbm файл за NIS карта
ypcat
Изброява данни в карта
ypinit
Изгражда и инсталира NIS база данни и инициализира списъка ypservers на клиента на NIS.
ypmatch
Намира конкретен запис в карта
yppoll
Получава номер на поръчка на карта от сървър
yppush
Разпространява данни от NIS master към NIS slave сървър
ypset
Задава обвързване към определен сървър
ypwhich
Изброява името на NIS сървъра и таблицата за превод на псевдоними
ypxfr
Прехвърля данни от главен към подчинен NIS сървър
Информацията в NIS картите се съхранява във формат ndbm. ypfiles(4) и ndbm(3C) обясняват формата на картата.
NIS картите са проектирани да заменят UNIX /etc файлове, както и други конфигурационни файлове, така че съхраняват много повече от имена и адреси. В мрежа, работеща с NIS, NIS главният сървър за всеки домейн на NIS поддържа набор от NIS карти за други машини в домейна за запитване. NIS slave сървърите също поддържат дубликати на картите на главния сървър. Клиентските машини на NIS могат да получават информация за пространството на имената от главни или подчинени сървъри.
Картите на NIS са по същество таблици с две колони. Едната колона е ключът, а другата колона е информация, свързана с ключа. NIS намира информация за клиент чрез търсене в ключовете. Част от информацията се съхранява в няколко карти, тъй като всяка карта използва различен ключ. Например, имената и адресите на машините се съхраняват в две карти: hosts.byname и hosts.byaddr. Когато сървър има име на машина и трябва да намери нейния адрес, той търси в картата hosts.byname. Когато има адреса и трябва да намери името, той търси в картата hosts.byaddr.
NIS Makefile се съхранява в директорията /var/yp на машини, определени като NIS сървър по време на инсталиране. Изпълнението на make в тази директория кара makedbm да създава или променя NIS картите по подразбиране от входните файлове.
Забележка –Винаги създавайте карти на главния сървър, тъй като картите, създадени на подчинен, няма да бъдат изпратени автоматично към главния сървър.
Набор по подразбиране от NIS карти се предоставя в операционната среда на Solaris. Може да искате да използвате всички тези карти или само някои от тях. NIS може също да използва каквито и карти да създадете или добавите, когато инсталирате други софтуерни продукти.
Картите по подразбиране за NIS домейн се намират в директорията /var/yp/domainname на всеки сървър. Например картите, които принадлежат към домейна test.com, се намират в директорията /var/yp/test.com на всеки сървър.
Таблица 7–3 описва NIS картите по подразбиране, информацията, която те съдържат, и дали софтуерът се консултира със съответните административни файлове, когато NIS работи.
Таблица 7–3 Описания на картите на NIS
Име на картата
Съответен административен файл на NIS
Описание
параметри за зареждане
параметри за зареждане
Съдържа имена на пътища на файлове, от които клиентите се нуждаят по време на зареждане: root, swap, евентуално други.
ethers.byaddr
етери
Съдържа имена на машини и Ethernet адреси. Ethernet адресът е ключът в картата.
ethers.byname
етери
Същото като ethers.byaddr, с изключение на това, че ключът е името на машината вместо Ethernet адреса.
group.bygid
група
Съдържа информация за сигурност на групата с ID на групата като ключ.
group.byname
група
Съдържа информация за сигурност на групата с име на групата като ключ.
hosts.byaddr
хостове
Съдържа име на машина и IP адрес, с IP адрес като ключ.
hosts.byname
хостове
Съдържа име на машина и IP адрес, с име на машина (хост) като ключ.
mail.псевдоними
псевдоними
Съдържа псевдоними и имейл адреси, с псевдоними като ключ.
mail.byaddr
псевдоними
Съдържа имейл адрес и псевдоним, с имейл адрес като ключ.
netgroup.byhost
мрежова група
Съдържа име на група, потребителско име и име на машина.
netgroup.byuser
мрежова група
Същото като netgroup.byhost, с изключение на това, че ключът е потребителско име.
мрежова група
мрежова група
Същото като netgroup.byhost, с изключение на това, че ключът е името на групата.
netid.byname
passwd, хостове
група
Използва се за удостоверяване в стил UNIX. Съдържа име на машина и имейл адрес (включително име на домейн). Ако има наличен netid файл, той се консултира в допълнение към данните, налични чрез другите файлове.
мрежови маски.byaddr
мрежови маски
Съдържа мрежова маска, която да се използва с подаване на IP, с адреса като ключ.
networks.byaddr
мрежи
Съдържа имена на мрежи, известни на вашата система, и техните IP адреси, с ключа addressas.
networks.byname
мрежи
Същото като networks.byaddr, с изключение на това, че ключът е името на мрежата.
passwd.adjunct.byname
passwd и сянка
Съдържа информация за одит и информация за скритата парола за C2 клиенти.
passwd.byname
passwd и сянка
Съдържа информация за парола с потребителско име като ключ.
passwd.byuid
passwd и сянка
Същото като passwd.byname, с изключение на това, че ключът е потребителски идентификатор.
protocols.byname
протоколи
Съдържа мрежови протоколи, известни на вашата мрежа.
протоколи.по номер
протоколи
Същото като protocols.byname, с изключение на това, че ключът е номер на протокол.
rpc.по номер
rpc
Съдържа номер на програма и име на RPC, известни на вашата система. Ключът е номер на RPC програма.
services.byname
услуги
Изброява интернет услугите, известни на вашата мрежа. Ключът е порт или протокол.
services.byservice
услуги
Изброява интернет услугите, известни на вашата мрежа. Ключът е името на услугата.
ypservers
Няма
Изброява NIS сървърите, известни на вашата мрежа.
Нови ipnodes карти (ipnodes.byaddr и ipnodes.byname) се добавят към NIS. Картите съхраняват както IPv4, така и IPv6 адреси. Вижте страницата с ръководство за ipnodes(4). NIS клиентите и сървърите могат да комуникират чрез IPv4 или IPv6 RPC транспорти.
NIS прави обновяването на мрежовите бази данни много по-лесно отколкото с файловата система /etc. Вече не трябва да променяте административните /etc файлове на всяка машина всеки път, когато променяте мрежовата среда.
Например, когато добавите нова машина към мрежа, работеща с NIS, трябва само да актуализирате входния файл в главния сървър и да стартирате make. Това автоматично актуализира картите hosts.byname и hosts.byaddr. След това тези карти се прехвърлят към всички подчинени сървъри и се предоставят на всички клиентски машини на домейна и техните програми. Когато клиентска машина или приложение поиска име или адрес на машина, NIS сървърът препраща към картата hosts.byname или hosts.byaddr според случая и изпраща исканата информация на клиента.
Можете да използвате командата ypcat, за да покажете стойностите в карта. Основният формат на ypcat е следният.
където mapname е името на картата, която искате да разгледате, или нейния псевдоним. Ако картата е съставена само от ключове, както в случая с ypserver, използвайте ypcat -k. В противен случай ypcat отпечатва празни редове. Страницата за ръководство на ypcat(1) описва повече опции за ypcat.
Можете да използвате командата ypwhich, за да определите кой сървър е главният на определена карта. Въведете следното.
където mapname е името или псевдонима на картата, чийто капитан искате да намерите. yp, който отговаря, като показва името на главния сървър. За пълна информация вижте справочната страница на ypwhich(1).
Псевдонимите са псевдоними за пълни имена на карти. За да получите списък с налични псевдоними на картата, като например passwd за passwd.byname, напишете ypcat -x или ypwhich -x.
Псевдонимите се съхраняват във файла /var/yp/nicknames, който съдържа псевдоним на картата, последван от напълно определеното име за картата, разделено с интервал. Този списък може да бъде добавен или модифициран. В момента има ограничение от 500 псевдонима.
Услугата NIS включва специализирани демони, системни програми и команди, които са обобщени в следващата таблица.
Таблица 7–4 Резюме на командите NIS
Команда
Описание
ypserv
Обслужва заявки на NIS клиенти за информация от NIS карта. ypserv е демон, който работи на NIS сървъри с пълен набор от карти. Поне един ypserv демон трябва да присъства в мрежата, за да функционира NIS услугата.
ypbind
Предоставя на клиентите информация за свързване на NIS сървър. Той осигурява обвързване чрез намиране на процес ypserv, който обслужва карти в рамките на домейна на искащия клиент. ypbind трябва да работи на всички сървъри и клиенти.
ypinit
Автоматично създава карти за NIS сървър от входните файлове. Използва се и за конструиране на първоначалния файл /var/yp/binding/domain/ypservers на клиентите. Използвайте ypinit, за да настроите главния NIS сървър и подчинените NIS сървъри за първи път.
направи
Актуализира NIS картите чрез четене на Makefile (когато се изпълнява в директорията /var/yp). Можете да използвате make, за да актуализирате всички карти въз основа на входните файлове или да актуализирате отделни карти. Справочната страница на ypmake(1M) описва функционалността на make for NIS.
makedbm
makedbm взема входен файл и го преобразува във файлове dbm.dir и dbm.pag—валидни dbm файлове, които NIS може да използва като карти. Можете също да използвате makedbm -u, за да разглобите карта, така че да можете да видите двойките ключ-стойност, които я съставят.
ypxfr
Изтегля NIS карта от отдалечен сървър към локалната директория /var/yp/domain, като използва самата NIS като транспортна среда. Можете да стартирате ypxfr интерактивно или периодично от crontab файл. Също така се извиква от ypserv за иницииране на трансфер.
ypxfrd
Осигурява услуга за прехвърляне на карти за заявки ypxfr (обикновено подчинени сървъри). Изпълнява се само на главния сървър.
yppush
Копира нова версия на NIS карта от главния NIS сървър към неговите подчинени устройства. Стартирате я на главния NIS сървър.
ypset
Казва на процес на ypbind да се свърже с назован NIS сървър. Това не е за случайна употреба и използването му не се препоръчва поради последици за сигурността. Вижте man страниците на ypset(1M) и ypbind(1M) за информация относно опциите ypset и ypsetme за процеса ypbind.
yppoll
Показва коя версия на NIS карта се изпълнява на сървър, който посочите. Той също така изброява главния сървър за картата.
ypcat
Показва съдържанието на NIS карта.
ypmatch
Отпечатва стойността за един или повече посочени ключове в NIS карта. Не можете да посочите коя версия на картата на NIS сървъра виждате.
ypwhich
Показва кой NIS сървър клиентът използва в момента за NIS услуги или, ако се извика с опцията -m mapname, кой NIS сървър е главен за всяка от картите. Ако се използва само -m, той показва имената на всички налични карти и съответните им главни сървъри.
NIS обвързване
NIS клиентите получават информация от NIS сървър чрез процеса на обвързване, който може да работи в един от двата режима: сървър-списък или излъчване.
Списък със сървъри. В режим на списък със сървъри процесът ypbind отправя запитване към списъка /var/yp/binding/domain/ypservers за имената на всички NIS сървъри в домейна. Процесът ypbind се свързва само със сървъри в този файл. Файлът се създава чрез изпълнение на ypinit -c.
Излъчване. Процесът ypbind може също да използва RPC излъчване, за да инициира обвързване. Тъй като излъчванията са само локални подмрежови събития, които не се маршрутизират по-нататък, трябва да има поне един сървър (главен или подчинен) в същата подмрежа като клиента. Самите сървъри може да съществуват в различни подмрежи, тъй като разпространението на карти работи през границите на подмрежите. В подмрежова среда един често срещан метод е да направите подмрежовия рутер NIS сървър. Това позволява на домейн сървъра да обслужва клиенти на всеки подмрежов интерфейс.
Процесът на обвързване в режим на списък със сървъри работи по следния начин:
Всяка програма, работеща на NIS клиентската машина, която се нуждае от информация, предоставена от NIS карта, пита ypbind за името на сървър.
ypbind търси във файла /var/yp/binding/domainname/ypservers списък с NIS сървъри за домейна.
ypbind инициира свързване към първия сървър в списъка. Ако сървърът не отговори, ypbind опитва втория и така нататък, докато намери сървър или изчерпи списъка.
ypbind казва на клиентския процес с кой сървър да говори. След това клиентът изпраща заявката директно до сървъра.
Демонът ypserv на NIS сървъра обработва заявката, като се консултира със съответната карта.
ypserv изпраща исканата информация обратно на клиента.
Процесът на обвързване в режим на излъчване работи по следния начин:
ypbind трябва да се стартира със зададена опция за излъчване (излъчване).
ypbind издава RPC излъчване в търсене на NIS сървър.
Забележка –За да поддържате такива клиенти, е необходимо да имате NIS сървър във всяка подмрежа, изискваща NIS услуга.
ypbind инициира свързване към първия сървър, който отговаря на излъчването.
ypbind казва на клиентския процес с кой сървър да говори. След това клиентът изпраща заявката директно до сървъра.
Демонът ypserv на NIS сървъра обработва заявката, като се консултира със съответната карта.
ypserv изпраща исканата информация обратно на клиента.
Обикновено, след като клиент е свързан със сървър, той остава свързан с този сървър, докато нещо не го накара да се промени. Например, ако сървър излезе от експлоатация, клиентите, които обслужва, ще се свържат с нови сървъри.
За да разберете кой NIS сървър в момента предоставя услуга на конкретен клиент, използвайте следната команда.
%ypкое име на машина
Където име на машина е името на клиента. Ако не е споменато име на машина, ypwhich по подразбиране е локалната машина (т.е. машината, на която се изпълнява командата).
Разлики в NIS Solaris 2.6 NIS и по-ранни версии на NIS
Следните функции на NIS са нови или различни в Solaris 2.6.
Последните версии на Solaris не включват NIS услуга. Досега услугата NIS трябваше да се инсталира от необвързания NSKit. NIS вече е включен в Solaris 2.6 и няма 2.6 NSKit.
Тъй като услугата NIS вече е част от Solaris 2.6, пакетите SUNWnsktu и SUNWnsktr вече не съществуват. Вместо това NIS сега се инсталира чрез клъстера NIS Server (съдържащ пакетите SUNWypu и SUNWypr).
NIS услугата вече не се стартира със скрипта /etc/init.d/yp, който вече не съществува. Със Solaris 2.6 първо конфигурирате NIS картите на вашия главен сървър със скрипта ypinit и след това стартирате NIS с ypstart. NIS услугата се спира с командата ypstop.
Последните версии на NSKit не включват ypupdated daemon. Демонът ypupdated вече е включен в тази версия на Solaris.
Както при предишната версия на NSKit, файлът /var/yp/securenets сега се използва за ограничаване на достъпа до NIS услуги. Ако такъв файл съществува на NIS сървър, сървърът отговаря само на заявки или предоставя карти на машини и мрежи, чиито IP адреси са изброени във файла. За файловия формат вижте securenets(4).
Следното е пример за файл на securenets.
255.255.255.10 192.168.0.1host13.13.14.1host13.13.14.2където 255.255.255.10 е мрежовата маска, а 13.13.13.255 е мрежовият адрес. За настройката в ред 1, ypserv отговаря само на онези адреси в обхвата на подмрежата 13.13.13.255.
Ако промените записи във файла /var/yp/securenets, трябва да убиете и рестартирате демоните ypserv и ypxfrd.
Както при предишната версия на NSKit, процесът ypserv осигурява поддръжка за машини, които имат повече от един мрежов адрес. Когато машинните карти са създадени, Makefile създава запис YP_MULTI_HOSTNAME в картата за всяка машина, която има повече от един адрес. Този запис изброява всички адреси за тази машина. Когато е необходим адресът на машината, се прави опит да се използва най-близкият адрес в списъка. Вижте man страницата на ypserv за повече подробности.
Определянето на най-близкия адрес е аритметично и като такова няма проверка за валидност на адреса. Да предположим например, че многодомна машина има шест IP адреса и само пет от интерфейсите на машината работят нормално. Машините в мрежа, която не е пряко свързана с тази многодомна машина, могат да получат IP адреса за интерфейса надолу от ypserv. По този начин този хипотетичен клиент не може да достигне до многодомната машина.
Забележка –Всички адреси за многодомна машина обикновено трябва да са активни. Ако определен адрес или машина няма да работи, премахнете ги от картите на NIS.
NIS поддържа файлове за конфигуриране на пароли както във формата на парола SunOS 4 (Solaris 1), така и във файловите формати за парола и сянка на Solaris 2.
Режимът на работа се определя от съществуването на файла $PWDIR/shadow, където $PWDIR е макросът Makefile, зададен във файла /var/yp/Makefile. Ако shadow файлът съществува, NIS работи в режим Solaris 2. Ако този файл не съществува, NIS работи в режим SunOS 4.
В режим SunOS 4 цялата информация за паролата се съхранява във файла passwd. В режим Solaris 2 информацията за паролата се съхранява в shadow файла, а информацията за потребителския акаунт се съхранява във файла passwd.
Ако макросът make PWDIR е настроен на директорията /etc, NIS може да работи само в режим Solaris 2 поради изискванията за обработване на Solaris 2 passwd. Въпреки това, ако PWDIR сочи към която и да е директория, различна от /etc, потребителят има опцията да запази конфигурационните файлове на passwd или във формат SunOS 4, или във формат Solaris 2. Демонът rpc.yppasswdd разбира и двата формата на паролата. Препоръчва се формат Solaris 2.
PREV: Как да настроите IP и базиран на порт виртуален хостинг (Vhosts) с ...