doc/mn_MN.UTF-8/books/handbook/network-servers/chapter.sgml
Ganbold Tsagaankhuu 494499fdd2 MFen: Resync with the English version of the handbook
Obtained from: FreeBSD Mongolian Documentation project
2009-05-19 15:06:28 +00:00

5085 lines
286 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
The FreeBSD Mongolian Documentation Project
Original revision 1.118
$FreeBSD$
-->
<chapter id="network-servers">
<chapterinfo>
<authorgroup>
<author>
<firstname>Мюррей</firstname>
<surname>Стөүкли</surname>
<contrib>Дахин зохион байгуулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
<!-- 23 July 2004 -->
</chapterinfo>
<title>Сүлжээний орчны Серверүүд</title>
<sect1 id="network-servers-synopsis">
<title>Ерөнхий агуулга</title>
<para>Энэ бүлэгт &unix; системүүдэд өргөн хэрэглэгддэг, сүлжээний орчинд ажилладаг
зарим нэг үйлчилгээнүүдийн талаар авч үзнэ. Бид тэдгээр үйлчилгээнүүдийг хэрхэн
суулгах, тохируулах, турших болон үйлчилгээг хариуцах талаар үзэх болно.
Танд зориулж жишээ тохиргооны файлуудыг мөн оруулж өгсөн байгаа.</para>
<para>Энэ бүлгийг уншсаны дараа, та дараах зүйлсийг мэдэх болно:</para>
<itemizedlist>
<listitem>
<para><application>inetd</application> дэмоныг хэрхэн удирдах.</para>
</listitem>
<listitem>
<para>Сүлжээний орчны файл системийг хэрхэн зохион байгуулах.</para>
</listitem>
<listitem>
<para>Хэрэглэгчийн бүртгэлийг хуваалцах сүлжээний орчны мэдээллийн серверийг хэрхэн зохион байгуулах.</para>
</listitem>
<listitem>
<para>DHCP ашиглан автоматаар сүлжээний тохиргоог хэрхэн хийх.</para>
</listitem>
<listitem>
<para>Домэйн нэрийн серверийг хэрхэн зохион байгуулах.</para>
</listitem>
<listitem>
<para><application>Apache</application> HTTP Серверийг хэрхэн зохион байгуулах.</para>
</listitem>
<listitem>
<para>File Transfer Protocol буюу Файл Дамжуулах Протокол(FTP) Серверийг хэрхэн зохион байгуулах.</para>
</listitem>
<listitem>
<para><application>Samba</application> ашиглан &windows; хэрэглэгчдэд зориулсан
файл болон хэвлэгч серверийг хэрхэн зохион байгуулах.</para>
</listitem>
<listitem>
<para>NTP протокол ашиглан цаг болон өдрийг тохируулах хийгээд цагийн серверийг хэрхэн зохион байгуулах.</para>
</listitem>
<listitem>
<para>How to configure the standard logging daemon,
<command>syslogd</command>, to accept logs from remote
hosts.</para>
</listitem>
</itemizedlist>
<para>Энэ бүлгийг уншихаасаа өмнө, та дараах шаардлагыг хангасан байх хэрэгтэй:</para>
<itemizedlist>
<listitem>
<para><filename>/etc/rc</filename> скриптүүдийн үндсийг ойлгосон байх.</para>
</listitem>
<listitem>
<para>Сүлжээний үндсэн нэр томъёоллыг мэддэг байх.</para>
</listitem>
<listitem>
<para>Гуравдагч этгээдийн програмыг(<xref linkend="ports">) хэрхэн нэмж суулгахыг мэддэг байх.</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="network-inetd">
<sect1info>
<authorgroup>
<author>
<firstname>Шерн</firstname>
<surname>Лий</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<contrib>&os; 6.1-RELEASE-д зориулж шинэчилсэн </contrib>
<othername>&os; Баримтжуулах Төсөл</othername>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title><application>inetd</application> <quote>Супер-Сервер</quote></title>
<sect2 id="network-inetd-overview">
<title>Ерөнхий агуулга</title>
<para>&man.inetd.8; нь олон тооны үйлчилгээний сүлжээний холболтыг удирддаг тул
заримдаа түүнийг <quote>Интернэт Супер-Сервер</quote> гэж нэрлэх нь бий.
Гаднаас үүсч буй холболтыг <application>inetd</application> хүлээн авч, аль програмтай холбогдохыг
тодорхойлон, тухайн процессийг салаалуулж, сокетийг түүн рүү чиглүүлнэ (програмын стандарт оролт,
гаралт болон алдааны дескриптороор үйлчилгээний сокетийг өгнө). Байнга ашиглагддаггүй үйлчилгээний хувьд
<application>inetd</application>-г ажиллуулах нь бүх дэмонг дангаар бие-даах горимд ажиллуулсантай
харьцуулахад системийн нийт ачааллыг бууруулж өгдөг. </para>
<para>Голчлон, <application>inetd</application> нь бусад дэмонуудыг салаалуулахад хэрэглэгддэг
боловч <application>chargen</application>, <application>auth</application>,
ба <application>daytime</application> гэх мэт нилээд олон ердийн протоколуудыг шууд зохицуулан ажиллуулж чадна.</para>
<para>Энэ хэсэгт <application>inetd</application>-н үндсэн тохиргоог тушаалын мөрний тохируулгаар,
мөн <filename>/etc/inetd.conf</filename> тохиргооны файлаар хэрхэн хийхийг үзэх болно.</para>
</sect2>
<sect2 id="network-inetd-settings">
<title>Тохиргоо</title>
<para><application>inetd</application> нь &man.rc.8; системээр эхлүүлэгдэнэ.
<literal>inetd_enable</literal> тохируулгын анхдагч утга нь <literal>NO</literal> бөгөөд,
системийг суулгах явцад хэрэглэгчийн зааж өгсний дагуу <application>sysinstall</application>
програмын тусламжтай идэвхжүүлж болно.</para>
<programlisting>inetd_enable="YES"</programlisting>
<para>эсвэл</para>
<programlisting>inetd_enable="NO"</programlisting>
<para>гэсэн мөрийг <filename>/etc/rc.conf</filename>
файл дотор байрлуулснаар <application>inetd</application>-г систем ачаалахад
эхэлдэг болгож болно. Доор дурдсан:</para>
<programlisting>/etc/rc.d/inetd rcvar</programlisting>
<para>тушаалыг өгөн одоо идэвхтэй байгаа
тохиргоог харж болно.</para>
<para>Дээр нь, <literal>inetd_flags</literal> тохируулгаар дамжуулан
<application>inetd</application> програмд тушаалын мөрнөөс өөр бусад тохируулгуудыг
зааж өгч болно.</para>
</sect2>
<sect2 id="network-inetd-cmdline">
<title>Тушаалын мөрний тохируулгууд</title>
<para>Ихэнх сервер дэмоны нэгэн адил, <application>inetd</application> нь
түүнийг өөрчлөн тохируулахад зориулагдсан олон тооны тохируулгуудын хамт ирдэг.
Тохируулгуудыг бүрнээр жагсаан бичвэл:</para>
<para><command>inetd</command> <option>[-d] [-l] [-w] [-W] [-c maximum] [-C rate] [-a address | hostname]
[-p filename] [-R rate] [-s maximum] [configuration file]</option></para>
<para><filename>/etc/rc.conf</filename> файл доторх
<literal>inetd_flags</literal> тохируулгыг ашиглан
эдгээр тохируулгуудыг <application>inetd</application>-д дамжуулна.
Анхдагч байдлаар, <literal>inetd_flags</literal> нь <literal>-wW -C 60</literal> гэсэн
утгыг авсан байх ба энэ нь <application>inetd</application>-ны үйлчилгээнүүдийн хувьд
TCP wrapping буюу TCP-ийн дундын хяналтыг идэвхжүүлэх ба нэг IP хаягнаас аль нэг үйлчилгээнд
нэг минутанд 60-аас дээш удаа хүсэлт тавих боломжгүй болгоно.</para>
<para>Хэдийгээр бид гаднаас хэтэрхий олон
тооны хандалт хийгдэж байгаа үед тохируулгаар түүнийг хэрхэн хязгаарлахыг
доор үзүүлж байгаа ч, анхлан суралцагчдад зөвлөхөд
эдгээр параметрүүдийг ихэвчлэн өөрчлөх шаардлагагүй байдаг.
Тохируулгуудын бүрэн жагсаалтыг &man.inetd.8; заавар хуудаснаас үзнэ үү.</para>
<variablelist>
<varlistentry>
<term>-c maximum</term>
<listitem>
<para>Үйлчилгээг нэгэн зэрэг хамгийн ихдээ хэдэн удаа дуудаж болохыг заана; Анхдагч утга нь хязгааргүй.
Үйлчилгээ тус бүрээр <option>max-child</option> параметрийн тусламжтай
утгыг дарж өөрчилж болно.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-C rate</term>
<listitem>
<para>Үйлчилгээг нэг IP хаягнаас нэг минутын дотор хамгийн ихдээ хэдэн удаа
дуудаж болохыг заана; Анхдагч утга нь хязгааргүй.
Үйлчилгээ тус бүрээр <option>max-connections-per-ip-per-minute</option> параметрийн тусламжтай
утгыг дарж өөрчилж болно.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-R rate</term>
<listitem>
<para>Үйлчилгээг нэг минутын дотор хамгийн ихдээ хэдэн удаа дуудаж болохыг заана;
Анхдагч утга нь 256. 0-г тавьснаар хязгааргүй болгоно.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-s maximum</term>
<listitem>
<para>Үйлчилгээг нэг IP хаягнаас хамгийн ихдээ хэдэн удаа
дуудаж болохыг заана; Анхдагч утга нь хязгааргүй.
Үйлчилгээ тус бүрээр <option>max-child-per-ip</option> параметрийн тусламжтай
утгыг дарж өөрчилж болно.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="network-inetd-conf">
<!-- XXX This section isn't very clear, and could do with some lovin' -->
<title><filename>inetd.conf</filename></title>
<para><application>inetd</application>-г <filename>/etc/inetd.conf</filename>
файлын тусламжтай тохируулна.</para>
<para><filename>/etc/inetd.conf</filename> файлд өөрчлөлт хийсний дараа,
<application>inetd</application>-р тохиргооны файлыг дахин уншуулахдаа
дараах тушаалыг өгнө:</para>
<example id="network-inetd-reread">
<title><application>inetd</application>-н тохиргооны файлыг дахин ачаалах нь</title>
<screen>&prompt.root; <userinput>/etc/rc.d/inetd reload</userinput></screen>
</example>
<para>Тохиргооны файлын мөр бүр тусдаа дэмонг заана.
Файл доторх тайлбарууд нь мөрийн эхэнд <quote>#</quote> тэмдэгтэй байна.
<filename>/etc/inetd.conf</filename> файл доторх бичлэгүүдийн формат дараах
байдалтай байна:</para>
<programlisting>service-name
socket-type
protocol
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
user[:group][/login-class]
server-program
server-program-arguments</programlisting>
<para>IPv4 ашигладаг &man.ftpd.8; дэмоны хувьд жишээ бичлэг дараах байдалтай байж болно:</para>
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
<variablelist>
<varlistentry>
<term>service-name</term>
<listitem>
<para>Тухайн дэмоны үйлчилгээний нэрийг заана.
Энэ нь <filename>/etc/services</filename> файл дотор бичигдсэн үйлчилгээнүүдийн нэг
байх ёстой бөгөөд аль портон дээр сонсохыг <application>inetd</application>-д хэлж өгнө.
Хэрэв шинэ үйлчилгээ үүсгэсэн бол түүнийг заавал <filename>/etc/services</filename> файл
дотор нэмсэн байх ёстой.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>socket-type</term>
<listitem>
<para><literal>stream</literal>,
<literal>dgram</literal>, <literal>raw</literal>, эсвэл <literal>seqpacket</literal> эдгээрийн нэг байна.
<literal>stream</literal>-г холболтон дээр үндэслэсэн TCP дэмонуудын хувьд хэрэглэдэг бол,
<literal>dgram</literal>-г <acronym>UDP</acronym> протоколоор ажилладаг дэмонуудын хувьд хэрэглэнэ.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>protocol</term>
<listitem>
<para>Доор дурдсанаас нэг нь байна:</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Протокол</entry>
<entry>Тайлбар</entry>
</row>
</thead>
<tbody>
<row>
<entry>tcp, tcp4</entry>
<entry>TCP IPv4</entry>
</row>
<row>
<entry>udp, udp4</entry>
<entry>UDP IPv4</entry>
</row>
<row>
<entry>tcp6</entry>
<entry>TCP IPv6</entry>
</row>
<row>
<entry>udp6</entry>
<entry>UDP IPv6</entry>
</row>
<row>
<entry>tcp46</entry>
<entry>TCP IPv4 ба v6 хоёул</entry>
</row>
<row>
<entry>udp46</entry>
<entry>UDP IPv4 ба v6 хоёул</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</listitem>
</varlistentry>
<varlistentry>
<term>{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]</term>
<listitem>
<para><option>wait|nowait</option> нь <application>inetd</application>-р дуудагдсан
дэмон өөрийн сокетийг удирдаж чадах эсэхийг заана.
<option>dgram</option> төрлийн сокет дэмоны хувьд <option>wait</option> тохируулгыг
хэрэглэх ёстой байдаг бол, ихэвчлэн олон урсгалтай байдаг
<option>stream</option> сокет дэмоны хувьд <option>nowait</option> тохируулгыг хэрэглэх
хэрэгтэй байдаг. <option>wait</option> нь ихэвчлэн олон сокетийг нэг дэмонд
шилжүүлэн өгдөг бол, <option>nowait</option> нь шинээр үүссэн сокет тус бүрт
харгалзуулан хүүхэд дэмонг салаалуулан үүсгэдэг.</para>
<para><application>inetd</application>-ийн салаалуулан үүсгэж
болох хамгийн их хүүхэд дэмоны тоог <option>max-child</option>
тохируулгын тусламжтай зааж өгч болно. Хэрэв
тухайн дэмоны ажиллаж болох тохиолдлыг 10-р хязгаарлах бол,
<option>nowait</option>-н ард <literal>/10</literal> гэж бичнэ.
<literal>/0</literal> нь хүүхдийн тоог хязгаарлахгүй гэсэн утгатай.</para>
<para><option>max-child</option>-с гадна, нэг газраас тухайн дэмонтой
үүсгэж байгаа холболтын тоог хязгаарладаг өөр хоёр
тохируулгыг хэрэглэж болно.
<option>max-connections-per-ip-per-minute</option> нь тухайн ямар нэг IP хаягнаас
нэг минутанд үүсгэж болох холболтын тоог хязгаарлана,
жишээлбэл: 10 гэсэн утга нь тухайн ямар нэг IP хаягнаас
нэг минутын дотор тухайн үйлчилгээнд холбогдохоор оролдох
оролдлогын тоог 10-р хязгаарлана. <option>max-child-per-ip</option> нь
Тухайн ямар нэг IP хаяг дээр үүсгэгдсэн хүүхдийн тоог хязгаарлана.
Эдгээр тохируулгууд нь санаатай болон санамсаргүйгээр нөөцийг
хэтрүүлэн хэрэглэх, мөн Үйлчилгээг Зогсоох (DoS) халдлагаас хамгаалахад
хэрэгтэй байдаг.</para>
<para>Хэрэглэхдээ, <option>wait</option> ба <option>nowait</option>
хоёрын аль нэгийг заавал хэрэглэх ёстой. Харин <option>max-child</option>,
<option>max-connections-per-ip-per-minute</option> ба
<option>max-child-per-ip</option> тохируулгуудыг сонгон хэрэглэж болно.</para>
<para>Stream төрлийн олон урсгалтай дэмоны хувьд, <option>max-child</option>,
<option>max-connections-per-ip-per-minute</option> эсвэл <option>max-child-per-ip</option> хязгаарлалтуудын
алийг ч хэрэглэхгүй тохиолдолд ердөө: <literal>nowait</literal> байна.</para>
<para>Дээрхтэй адил дэмон, 10 хүүхэд дэмоны хязгаарлалттай бол: <literal>nowait/10</literal> байна.</para>
<para>Мөн адил дэмон, 10 хүүхэд дэмоны хязгаарлалттай,
минутанд нэг IP хаягнаас үүсгэх холболтын тоог 20-р хязгаарлах бол:
<literal>nowait/10/20</literal> болно.</para>
<para>Эдгээр тохируулгуудыг &man.fingerd.8; дэмоны анхдагч тохиргоон дээр
жишээ болгон харвал:</para>
<programlisting>finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s</programlisting>
<para>Эцэст нь, 100 хүүхдийн хязгаарлалттай, нэг IP хаягнаас үүсэх холболтын
тоог 5-р хязгаарласан дэмоны жишээг авбал: <literal>nowait/100/0/5</literal> байх юм.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>user</term>
<listitem>
<para>Энд тухайн дэмон ямар хэрэглэгчийн нэрээр ажиллахыг зааж өгнө.
Ихэвчлэн дэмонууд <username>root</username> хэрэглэгчийн нэр дээр ажилладаг.
Аюулгүй байдлын үүднээс, зарим серверүүд <username>daemon</username>, эсвэл
хамгийн бага эрхтэй <username>nobody</username> хэрэглэгчийн нэр дээр ажиллах нь
элбэг байдаг.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>server-program</term>
<listitem>
<para>Энд гаднаас холболт хүлээн авахад ажиллуулах дэмоны
бүрэн замыг зааж өгнө. Хэрэв энэ дэмон <application>inetd</application>-р удирдагдсан
дотоод үйлчилгээ бол <option>internal</option> тохируулгыг хэрэглэх хэрэгтэй.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>server-program-arguments</term>
<listitem>
<para>Үүнийг <option>server-program</option>-тай хамт, <literal>argv[0]</literal>-с эхлэн
програмын аргументыг зааж өгөх байдлаар хэрэглэнэ. Хэрэв командын
мөрөнд <command>mydaemon -d</command> гэсэн байдлаар хэрэглэдэг бол, <option>server-program-arguments</option>-н
утга <literal>mydaemon -d</literal> байна. Дахин хэлэхэд, хэрэв тухайн дэмон дотоод үйлчилгээний
нэг бол <option>internal</option>-г энд мөн хэрэглэнэ үү.</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="network-inetd-security">
<title>Аюулгүй байдал</title>
<para>Үйлдлийн системийг суулгах үед хийсэн сонголтуудаас хамааран
<application>inetd</application>-н үйлчилгээнүүдийн ихэнх нь
идэвхтэй болсон байдаг. Хэрэв хэрэглэх
онцын шаардлага байхгүй бол тэдгээрийг идэвхгүй болгоно уу.
<filename>/etc/inetd.conf</filename> файл дотор, идэвхгүй болгох гэж
байгаа демоныхоо харгалзах мөрийн урд <quote>#</quote>
тэмдгийг тавьж өгнө. Дараа нь <link linkend="network-inetd-reread">inetd-н тохиргоог дахин
ачаална</link>. <application>fingerd</application> зэрэг зарим дэмонууд гадны халдагчид
хэрэгтэй мэдээллийг түгээж байдаг тул тэдгээр үйлчилгээг бүрмөсөн хааж
болох юм.</para>
<para>Зарим дэмонууд аюулгүй байдлыг бодолцолгүйгээр бүтээгдсэн
байдаг ба холболт тогтоох харьцангуй урт болзоот хугацаатай, эсвэл болзоот
хугацааг огт зааж өгөөгүй байдаг. Энэ нь халдагчид тодорхой дэмон уруу холболт
тогтоох хүсэлтийг олон дахин илгээж, нөөцийг дуусгах замаар системд халдах
боломжийг олгодог. Хэрэв ямар нэг дэмоны хувьд үүссэн холболтын тоо
хэтэрхий олон байвал <option>max-connections-per-ip-per-minute</option>,
<option>max-child</option> эсвэл <option>max-child-per-ip</option> тохиргооны
тусламжтайгаар хязгаарлалт хийх нь оновчтой байдаг.</para>
<para>Анхдагч байдлаар TCP-ийн дундын хяналт (гүйцэтгэл хялбаршуулалт) идэвхтэй байдаг.
<application>inetd</application>-р дуудагдсан дэмонуудын хувьд TCP хязгаарлалтыг хэрхэн
тавих талаар дэлгэрэнгүй мэдээллийг &man.hosts.access.5;
заавар хуудаснаас үзнэ үү.</para>
</sect2>
<sect2 id="network-inetd-misc">
<title>Элдэв зүйлс</title>
<para><application>daytime</application>,
<application>time</application>,
<application>echo</application>,
<application>discard</application>,
<application>chargen</application>, ба <application>auth</application> бүгд
<application>inetd</application>-н дотоод үйлчилгээнүүд юм.</para>
<para><application>auth</application> үйлчилгээ нь
сүлжээний орчинд, тодорхойлолт өгөх үйлчилгээ үзүүлдэг
бөгөөд тодорхой түвшинд тохиргоо хийх боломжтой байдаг бол
бусад үйлчилгээнүүдийг зөвхөн идэвхтэй эсвэл идэвхгүй болгох
боломжтой.</para>
<para>Дээрх үйлчилгээнүүдийн талаар бүрэн дүүрэн мэдээллийг &man.inetd.8; заавар хуудаснаас
үзнэ үү.</para>
</sect2>
</sect1>
<sect1 id="network-nfs">
<sect1info>
<authorgroup>
<author>
<firstname>Том</firstname>
<surname>Рөүдс</surname>
<contrib>Дахин зохион байгуулж, сайжруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Билл</firstname>
<surname>Свингл</surname>
<contrib>Бичсэн </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title>Сүлжээний Файлын Систем (NFS)</title>
<indexterm><primary>NFS</primary></indexterm>
<para>FreeBSD дээр дэмжигддэг олон файлын системүүдийн нэг бол
Network File System буюу Сүлжээний Файлын Систем юм, мөн <acronym role="Network
File System">NFS</acronym> гэж нэрлэнэ. <acronym role="Network File
System">NFS</acronym> нь сүлжээний орчинд файл болон санг
бусадтай хуваалцах боломжийг олгодог. <acronym role="Network File System">NFS</acronym>-г
хэрэглэн, хэрэглэгчид болон програмууд алслагдсан систем рүү
дотоод файл руу хандаж байгаатай адилаар хандах боломжтой.</para>
<para><acronym>NFS</acronym>-н тэмдэглүүштэй давуу талуудаас дурдвал:</para>
<itemizedlist>
<listitem>
<para>Өргөн хэрэглэгддэг өгөгдлийг нэгтгэн нэг машин дээр
байрлуулж, түүнд алсаас хандах боломжтой болсноор
дотоод машинууд илүү бага диск хэрэглэх болно. </para>
</listitem>
<listitem>
<para>Хэрэглэгчийн хувьд сүлжээнд байгаа машин бүр дээр тус
тусдаа гэрийн сантай байх шаардлагагүй болно.
Гэрийн санг нэг удаа <acronym>NFS</acronym> сервер дээр үүсгээд
түүнийгээ сүлжээгээр дамжин хэрэглэх боломжтой.</para>
</listitem>
<listitem>
<para>Уян диск, CDROM болон &iomegazip; төхөөрөмжүүдийг сүлжээний
бусад машинууд хэрэглэх боломжтой болно.
Ингэснээр сүлжээнд хэрэглэгдэх зөөвөрлөх боломжтой
хадгалах төхөөрөмжүүдийн тоог багасгана.</para>
</listitem>
</itemizedlist>
<sect2>
<title><acronym>NFS</acronym> хэрхэн ажилладаг вэ</title>
<para><acronym>NFS</acronym> нь үндсэн хоёр хэсгээс бүрдэнэ:
сервер болон нэг ба түүнээс дээш тооны харилцагч. Сервер машин дээр
хадгалагдаж байгаа өгөгдөл рүү харилцагч алсаас хандана.
Дээрх үйлдлийг зөв гүйцэтгэхийн тулд нилээд хэдэн процессийн
тохиргоог хийж, ажиллуулсан байх ёстой.</para>
<para>Сервер дээр дараах дэмонууд ажиллаж байх ёстой:</para>
<indexterm>
<primary>NFS</primary>
<secondary>сервер</secondary>
</indexterm>
<indexterm>
<primary>файл сервер</primary>
<secondary>UNIX харилцагчид</secondary>
</indexterm>
<indexterm>
<primary><application>rpcbind</application></primary>
</indexterm>
<indexterm>
<primary><application>mountd</application></primary>
</indexterm>
<indexterm>
<primary><application>nfsd</application></primary>
</indexterm>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<colspec colwidth="1*">
<colspec colwidth="3*">
<thead>
<row>
<entry>Дэмон</entry>
<entry>Тайлбар</entry>
</row>
</thead>
<tbody>
<row>
<entry><application>nfsd</application></entry>
<entry><acronym>NFS</acronym> харилцагчдаас ирэх
хүсэлтийг хүлээн авах <acronym>NFS</acronym> дэмон.</entry>
</row>
<row>
<entry><application>mountd</application></entry>
<entry>&man.nfsd.8;-с дамжиж ирсэн хүсэлтийг гүйцэтгэгч
<acronym>NFS</acronym> холбох дэмон.</entry>
</row>
<row>
<entry><application>rpcbind</application></entry>
<entry>Энэ дэмоны тусламжтай <acronym>NFS</acronym>
харилцагчид <acronym>NFS</acronym> сервер аль портон дээр
ажиллаж байгааг олж мэднэ.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Харилцагч <application>nfsiod</application> гэсэн дэмонг мөн
ажиллуулж болно. <application>nfsiod</application> дэмон
<acronym>NFS</acronym> серверээс ирэх хүсэлтийг гүйцэтгэнэ.
Ингэх нь системийг хэвийн, алдаагүй ажиллуулахад зайлшгүй
шаардлагагүй боловч зарим үзүүлэлтүүдийг сайжруулдаг тул нэмэлт
байдлаар хэрэглэж болно. Дэлгэрэнгүй мэдээллийг
&man.nfsiod.8; хуудаснаас үзнэ үү.</para>
</sect2>
<sect2 id="network-configuring-nfs">
<title><acronym>NFS</acronym>-н тохиргоог хийх</title>
<indexterm>
<primary>NFS</primary>
<secondary>тохиргоо</secondary>
</indexterm>
<para><acronym>NFS</acronym>-н тохиргоог хийх нь харьцангуй
амархан. Ажиллах ёстой процессуудыг системтэй хамт автоматаар
асдаг болгохын тулд <filename>/etc/rc.conf</filename> файлыг бага зэрэг
өөрчлөхөд хангалттай.</para>
<para><acronym>NFS</acronym> сервер дээрх <filename>/etc/rc.conf</filename> файл дотор
дараах тохируулгууд идэвхжсэн байгаа эсэхийг шалгана уу:</para>
<programlisting>rpcbind_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"</programlisting>
<para><application>mountd</application> нь <acronym>NFS</acronym> серверийг
идэвхжүүлсэн тохиолдолд өөрөө автоматаар ажиллана.</para>
<para>Харилцагч талд, <filename>/etc/rc.conf</filename> файл дотор
дараах тохируулга идэвхтэй байгаа эсэхийг шалгана уу:</para>
<programlisting>nfs_client_enable="YES"</programlisting>
<para><filename>/etc/exports</filename> файл дотор
<acronym>NFS</acronym> ямар файл системүүдийг экспорт
хийхийг (заримдаа <quote>хуваалцах</quote> гэж мөн нэрлэнэ) зааж өгнө.
<filename>/etc/exports</filename> файлын мөр бүр нь нэг файл системд харгалзана.
Энэ файл системд хандах эрхтэй машинуудыг заахаас гадна,
ямар тохируулгаар хандахыг мөн зааж өгч болно. Энэ файл дотор бичигдэж
болох нилээд олон ийм тохируулгууд байгаа хэдий ч, бид тэдгээрээс
зөвхөн заримыг нь энд авч үзэх болно. Та бусад тохируулгуудын
талаар &man.exports.5; заавар хуудаснаас уншиж мэднэ үү.</para>
<para>Доор <filename>/etc/exports</filename> файлаас хэдэн жишээ мөрийг үзүүлэв:</para>
<indexterm>
<primary>NFS</primary>
<secondary>экспортлох жишээ</secondary>
</indexterm>
<para>Дараах жишээн дээрээс файл системийг
хэрхэн экспортлох санааг олж авах болно. Тохируулгууд нь
таны сүлжээний тохиргоо, нөхцөл байдлаас шалтгаалан
өөр байхыг анхаарна уу. Жишээ нь, <filename>/cdrom</filename> гэсэн санг
3 машин руу экспортлохын тулд дараах байдалтай бичнэ. Жишээн дээрх
3 машин сервертэй адил домэйн нэртэй, эсвэл таны <filename>/etc/hosts</filename>
файл дотор тодорхойлогдсон гэж үзсэн болно. <option>-ro</option> туг нь
экспортлогдож буй файл системийг зөвхөн унших боломжтой
болохыг заана. Энэ тугийг тавьснаар алсаас хандаж буй машин
энэ файл систем дээр ямар нэг өөрчлөлт хийх боломжгүй болно.</para>
<programlisting>/cdrom -ro host1 host2 host3</programlisting>
<para>Дараах жишээн дээр <filename>/home</filename> санг
IP хаягаар нь зааж өгсөн 3 машин руу экспортолж байна.
Ингэж IP хаягаар нь зааж өгөх нь дотоод сүлжээндээ
<acronym>DNS</acronym> сервер ажиллуулаагүй үед их хэрэгтэй байдаг.
Эсвэл <filename>/etc/hosts</filename> файл дотор дотоод хостуудын
нэрийг тохируулж болно; &man.hosts.5; хэсгийг дахин үзнэ үү.
<option>-alldirs</option> гэсэн туг нь дэд сангуудыг
холболтын цэг байхыг зөвшөөрч өгдөг. Өөрөөр хэлбэл,
дэд сангуудыг холболгүй орхиж, харилцагч зөвхөн өөрийн
хэрэгцээтэй байгаа сангаа холбохыг зөвшөөрнө гэсэн үг юм.</para>
<programlisting>/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4</programlisting>
<para>Дараах жишээн дээр <filename>/a</filename> санг
хоёр өөр домэйноос 2 харилцагч хандаж болохоор
экспортолж байна. <option>-maproot=root</option> гэсэн туг нь
алслагдсан систем дээрх <username>root</username> хэрэглэгч
экспортлогдсон файл систем дээр <username>root</username> эрхээр
бичихийг зөвшөөрнө. Хэрэв <literal>-maproot=root</literal> тугийг тусгайлан зааж өгөөгүй бол,
хэдий алслагдсан систем дээрх хэрэглэгч <username>root</username> эрхтэй ч
экспортлогдсон файл систем дээр бичих эрхгүй болно.</para>
<programlisting>/a -maproot=root host.example.com box.example.org</programlisting>
<para>Харилцагч экспортлогдсон файл систем рүү хандахын
тулд эрх нь байх ёстой. Тухайн харилцагч <filename>/etc/exports</filename>
файл дотор бүртгэлтэй эсэхийг шалгаарай.</para>
<para><filename>/etc/exports</filename> файл дотор мөр болгон нь
нэг файл системийг нэг хост руу экспортлох мэдээллийг
төлөөлнө. Алслагдсан хост аль нэг файл системийн хувьд
зөвхөн ганц удаа л тодорхойлогдсон байх ёстой ба үүнд харгалзах
ганцхан анхдагч бичлэг байж болно. Жишээ нь, <filename>/usr</filename> нь
нэг файл систем гэж бодъё. <filename>/etc/exports</filename> файл доторх
дараах бичлэгүүд нь буруу юм:</para>
<programlisting># Invalid when /usr is one file system
/usr/src client
/usr/ports client</programlisting>
<para>Учир нь <filename>/usr</filename> гэсэн файл системийг <hostid>client</hostid>
гэсэн хост руу экспортолсон хоёр бичлэг байна. Энэ тохиолдолд
дараах форматаар бичвэл зөв болно:</para>
<programlisting>/usr/src /usr/ports client</programlisting>
<para>Нэг хост руу экспортлогдож байгаа файл системийн хувьд
шинжүүдийг бүгдийг нэг мөрөнд жагсаан бичих ёстой.
Харилцагчийг зааж өгөөгүй мөрүүдийг энгийн хост гэж үзнэ.
Энэ нь файл системийг экспортлох боломжийг хязгаарлана,
гэвч энэ нь ихэнх хүмүүст хүнд асуудал биш байдаг.</para>
<para>Дараагийн жишээн дээр <filename>/usr</filename> ба <filename>/exports</filename>
гэсэн дотоод файл системийг экспортолсон байна:</para>
<programlisting># Export src and ports to client01 and client02, but only
# client01 has root privileges on it
/usr/src /usr/ports -maproot=root client01
/usr/src /usr/ports client02
# The client machines have root and can mount anywhere
# on /exports. Anyone in the world can mount /exports/obj read-only
/exports -alldirs -maproot=root client01 client02
/exports/obj -ro</programlisting>
<para><filename>/etc/exports</filename> файл дотор гарсан
өөрчлөлтүүдийг хүчинтэй болгохын тулд,
өөрчлөлт орсон тухай бүрд <application>mountd</application> дэмонг
албадан <filename>/etc/exports</filename>-г дахин уншуулах хэрэгтэй болдог.
Үүний тулд эсвэл HUP дохиог ажиллаж байгаа дэмонд өгөх хэрэгтэй:</para>
<screen>&prompt.root; <userinput>kill -HUP `cat /var/run/mountd.pid`</userinput></screen>
<para>эсвэл <command>mountd</command> &man.rc.8; скриптийг зохих параметрийн
хамт ажиллуулах хэрэгтэй:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/mountd onereload</userinput></screen>
<para>rc скриптийг хэрэглэх зааврыг <xref linkend="configtuning-rcd"> хэсгээс
үзнэ үү.</para>
<para>Бас нэг боломж нь, FreeBSD-г эхнээс нь ачаалж, бүх процессийг дахин
эхлүүлэх юм. Гэвч үүний тулд заавал системийг дахин ачаалах шаардлага байхгүй.
<username>root</username> эрхээр дараах тушаалуудыг өгснөөр зөвхөн хэрэгтэй процессуудаа
дахин эхлүүлэх боломжтой.</para>
<para><acronym>NFS</acronym> сервер дээр:</para>
<screen>&prompt.root; <userinput>rpcbind</userinput>
&prompt.root; <userinput>nfsd -u -t -n 4</userinput>
&prompt.root; <userinput>mountd -r</userinput></screen>
<para><acronym>NFS</acronym> харилцагч дээр:</para>
<screen>&prompt.root; <userinput>nfsiod -n 4</userinput></screen>
<para>Одоо алсын файл системийг холбоход бэлэн боллоо.
Доорх жишээнүүд дээр серверийн нэрийг <hostid>server</hostid>,
харилцагчийн нэрийг <hostid>client</hostid> гэж авсан болно.
Хэрэв та алсын файл системийг зөвхөн түр хугацаагаар холбох гэж байгаа
эсвэл тохиргоогоо шалгах гэж байгаа бол, харилцагч талд
<username>root</username> эрхээр дараах тушаалыг өгөхөд хангалттай:</para>
<indexterm>
<primary>NFS</primary>
<secondary>холболт</secondary>
</indexterm>
<screen>&prompt.root; <userinput>mount server:/home /mnt</userinput></screen>
<para>Энэ тушаалыг өгснөөр та сервер талд байгаа <filename>/home</filename>
гэсэн санг харилцагч талд байгаа <filename>/mnt</filename> сантай
холбох болно. Хэрэв бүх зүйл зөв тохируулагдсан бол, та харилцагч талын
<filename>/mnt</filename> сан дотор орж сервер дээр байгаа файлуудыг
харж чадах ёстой.</para>
<para>Хэрэв систем шинээр ачаалах бүрд ямар нэг алсын
файл системийг холбох хүсэлтэй байгаа бол,
түүнийгээ <filename>/etc/fstab</filename> файл дотор нэмж бичих хэрэгтэй.
Жишээ нь:</para>
<programlisting>server:/home /mnt nfs rw 0 0</programlisting>
<para>Боломжит бүх сонголтуудын талаар &man.fstab.5; заавар хуудаснаас үзнэ үү.</para>
</sect2>
<sect2>
<title>Цоожлолт</title>
<para>Зарим програмууд (ж.н. <application>mutt</application>)
зөв ажиллахын тулд файл цоожлолтыг шаарддаг.
<acronym>NFS</acronym>-н хувьд, <application>rpc.lockd</application>-г
файл цоожлолтонд хэрэглэж болно. Түүнийг идэвхжүүлэхийн тулд,
сервер болон харилцагч талд хоёуланд нь <filename>/etc/rc.conf</filename>
файл дотор дараах мөрүүдийг нэмж өгөх хэрэгтэй
(<acronym>NFS</acronym> сервер болон харилцагч талуудыг аль хэдийн тохируулчихсан
гэж үзэв):</para>
<programlisting>rpc_lockd_enable="YES"
rpc_statd_enable="YES"</programlisting>
<para>Програмыг дараах байдалтай эхлүүлнэ:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/lockd start</userinput>
&prompt.root; <userinput>/etc/rc.d/statd start</userinput></screen>
<para>Хэрэв <acronym>NFS</acronym> харилцагч болон <acronym>NFS</acronym>
сервер талуудын хооронд жинхэнэ файл цоожлолт хийгдэх
шаардлагагүй бол, <acronym>NFS</acronym> харилцагч талд &man.mount.nfs.8;-д
<option>-L</option> тохируулгыг өгөн дотоод цоожлолт хийлгэж болно.
Дэлгэрэнгүй мэдээллийг &man.mount.nfs.8; заавар хуудаснаас үзнэ үү.</para>
</sect2>
<sect2>
<title>Практик хэрэглээ</title>
<para><acronym>NFS</acronym> нь олон практик хэрэглээтэй. Хамгийн элбэг
тохиолддог хэрэглээг доор жагсаав:</para>
<indexterm>
<primary>NFS</primary>
<secondary>хэрэглээ</secondary>
</indexterm>
<itemizedlist>
<listitem>
<para>Олон машиныг нэг CDROM эсвэл төхөөрөмжийг дундаа
хэрэглэдэг байхаар зохион байгуулах. Энэ нь нэг програмыг
олон машин дээр суулгах хамгийн хямд, хялбар арга юм.</para>
</listitem>
<listitem>
<para>Том сүлжээний хувьд, бүх хэрэглэгчдийн гэрийн санг хадгалдаг
төвлөрсөн <acronym>NFS</acronym> серверийг тохируулах. Эдгээр гэрийн сангуудыг
дараа нь сүлжээний орчинд экспортолсноор хэрэглэгчид аль машин дээр
ажиллаж буйгаас үл хамааран өөрийн нэг л сан дотор ажиллах боломжтой
болно.</para>
</listitem>
<listitem>
<para>Олон машин дундаа нэг <filename>/usr/ports/distfiles</filename>
сантай байх. Ийм замаар, нэг портыг олон машин дээр суулгах
хэрэгтэй үед машин бүр дээр эх файлыг татаж авалгүйгээр хурдан суулгах
боломжтой болно.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="network-amd">
<sect2info>
<authorgroup>
<author>
<firstname>Вылий</firstname>
<surname>Стилвэл</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Шерн</firstname>
<surname>Лий</surname>
<contrib>Дахин эмхтгэсэн </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын </firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect2info>
<title><application>amd</application>-р автоматаар холбох нь</title>
<indexterm><primary>amd</primary></indexterm>
<indexterm><primary>автоматаар холбогч дэмон</primary></indexterm>
<para>&man.amd.8; (автоматаар холбогч дэмон)
нь алсын файл системийн файл эсвэл санд хэрэглэгч
хандах тухай бүрт уг файл системийг автоматаар холбодог.
Хэсэг хугацааны туршид идэвхгүй байгаа файл системийг
<application>amd</application> мөн автоматаар салгана. <application>amd</application>-г
хэрэглэснээр <filename>/etc/fstab</filename> дотор бичигддэг байнгын
холболтоос гадна, холболт хийх боломжийг олгодог.</para>
<para><application>amd</application> нь өөрийгөө, <filename>/host</filename> ба <filename>/net</filename>
сангууд дээр NFS сервер байдлаар холбож ажиллах бөгөөд эдгээр
сангууд доторх файлд хандах үед, <application>amd</application>
харгалзах алсын холболтыг хайж олоод автоматаар холбох болно.
<filename>/net</filename> нь экспортлогдсон файл системийг
IP хаягаар нь холбоход, харин <filename>/host</filename> нь
хост нэрээр нь холбоход хэрэглэгдэнэ.</para>
<para><filename>/host/foobar/usr</filename> сан доторх
файлд хандана гэдэг нь <application>amd</application>-г
<hostid>foobar</hostid> гэсэн хост дээр экспортлогдсон <filename>/usr</filename>
санг холбохын зааж өгнө.</para>
<example>
<title>Экспортыг <application>amd</application>-р холбох</title>
<para>Алсын хост дээр байгаа боломжит холболтуудын
жагсаалтыг <command>showmount</command> тушаалын тусламжтай харж болно.
Жишээлбэл, <hostid>foobar</hostid> нэртэй хостын экспортыг харахын тулд:</para>
<screen>&prompt.user; <userinput>showmount -e foobar</userinput>
Exports list on foobar:
/usr 10.10.10.0
/a 10.10.10.0
&prompt.user; <userinput>cd /host/foobar/usr</userinput></screen>
</example>
<para>Жишээн дээр үзүүлснээр <command>showmount</command> нь <filename>/usr</filename>-г
экспортлогдсон болохыг харуулж байна. <filename>/host/foobar/usr</filename> сан
дотор ороход, <application>amd</application> нь <hostid>foobar</hostid> гэсэн хост нэрийг
тайлахыг оролдох ба заасан санг холбоно.</para>
<para><application>amd</application>-г эхлэл скриптүүдээр эхлүүлж болох ба
үүний тулд <filename>/etc/rc.conf</filename> файл дотор дараах мөрийг нэмэх хэрэгтэй:</para>
<programlisting>amd_enable="YES"</programlisting>
<para>Мөн, <application>amd</application> програмд <varname>amd_flags</varname> тохируулгын
тусламжтай тугуудыг өгч болно. <varname>amd_flags</varname>-н анхдагч утга нь:</para>
<programlisting>amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"</programlisting>
<para><filename>/etc/amd.map</filename> файл дотор экспортуудыг холбох анхдагч
тохируулгуудыг зааж өгсөн байна. <filename>/etc/amd.conf</filename> файл дотор
<application>amd</application>-н илүү дээд түвшний чанаруудыг тодорхойлж өгнө.</para>
<para>Дэлгэрэнгүй мэдээллийг &man.amd.8; ба &man.amd.conf.5; заавар хуудаснаас
үзнэ үү.</para>
</sect2>
<sect2 id="network-nfs-integration">
<sect2info>
<authorgroup>
<author>
<firstname>Жон</firstname>
<surname>Линд</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect2info>
<title>Бусад системтэй нэгтгэхэд тохиолдох асуудлууд</title>
<para>ISA PC системд зориулсан зарим Ethernet адаптерууд
учир дутагдалтай байдгаас сүлжээний орчинд ажиллахад, тэр дундаа
NFS-тэй ажиллахад нилээд асуудалтай байдаг.
Энэ асуудал зөвхөн FreeBSD-д тохиолддоггүй боловч FreeBSD систем үүнд нилээд
өртөмтгий байдаг.</para>
<para>Энэ асуудал нь (FreeBSD) PC системийг өндөр үзүүлэлттэй машинуудтай (жишээлбэл,
Silicon Graphics, Inc., ба Sun Microsystems, Inc компаниудын хийсэн)
сүлжээнд холбох үед бараг үргэлж тохиолддог. NFS холболт хийхэд асуудалгүй,
зарим үйлдлүүдийг хийхэд амжилттай байх боловч, гаднаас ирж явж байгаа
хүсэлтүүдийг боловсруулж чадаж байгаа хэдий ч сервер гэнэт харилцагчид
хариу өгөхгүй болдог. Энэ асуудал мөн харилцагчийн хувьд, харилцагч
FreeBSD систем эсвэл ажлын машин байхаас үл шалтгаалан тохиолдоно.
Ихэнх системийн хувьд, нэгэнт ийм асуудалд орсон бол харилцагч талыг
ном ёсных нь дагуу унтраах боломжгүй болдог. Ганц авдаг арга хэмжээ бол системийг
хүчээр унтрааж асаах юм. Учир нь, NFS-н энэ асуудал одоо хир нь шийдэгдээгүй
байна.</para>
<para>Хэдийгээр <quote>зөв</quote> шийдэл бол
FreeBSD системд тохирох илүү өндөр үзүүлэлттэй, илүү багтаамжтай
Ethernet адаптерийг олж авах боловч,
боломжит ажиллагааг хангахын тулд нэг арга байна.
Хэрэв FreeBSD систем нь <emphasis>сервер</emphasis> бол, харилцагч талаас
холболт хийхдээ <option>-w=1024</option> тохируулгыг оруулж өгөх явдал юм.
Хэрэв FreeBSD систем нь <emphasis>харилцагч</emphasis> бол, NFS файл системтэй
холбогдохдоо <option>-r=1024</option> тохируулгыг хэрэглэх юм.
Эдгээр тохируулгуудыг автомат холболтын хувьд
<filename>fstab</filename> бичлэгийн дөрөв дэх талбарыг ашиглан,
гар аргаар холболт хийх бол &man.mount.8; тушаалын <option>-o</option>
параметрыг ашиглан зааж өгч болно.</para>
<para>NFS сервер болон харилцагчид өөр өөр сүлжээнд
байхад гардаг өөр нэг асуудлыг энэ асуудалтай
хольж хутгах тохиолдол байдгийг энд дурдах нь зүйтэй болов уу.
Хэрэв тийм бол, чиглүүлэгчид шаардлагатай <acronym>UDP</acronym>
мэдээллийг дамжуулж чадаж байгаа эсэхийг
<emphasis>нягталж</emphasis> үзээрэй. Үгүй бол, өөр юу ч хийлээ гээд
та үр дүнд хүрч чадахгүй.</para>
<para>Дараах жишээн дээр, <hostid>fastws</hostid> нь өндөр үзүүлэлттэй
ажлын машины хост (интерфэйс) нэр, <hostid>freebox</hostid> нь
бага үзүүлэлттэй Ethernet адаптертай FreeBSD системийн
нэр юм. Мөн, <filename>/sharedfs</filename> нь экспортлогдох гэж байгаа NFS
файл систем (&man.exports.5;-г үз), ба <filename>/project</filename> нь
харилцагч талын экспортлогдсон файл системийг холбох цэг байх болно.
Аль ч тохиолдолд, <option>hard</option> эсвэл <option>soft</option> ба <option>bg</option>
зэрэг нэмэлт тохируулгууд таны хувьд хэрэгтэй байж болох юм.</para>
<para>FreeBSD системийг (<hostid>freebox</hostid>) <hostid>freebox</hostid> дээр
<filename>/etc/fstab</filename> дотор харилцагч байдлаар зааж өгөх жишээ:</para>
<programlisting>fastws:/sharedfs /project nfs rw,-r=1024 0 0</programlisting>
<para><hostid>freebox</hostid> дээр гараар холбохдоо:</para>
<screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen>
<para>FreeBSD системийг (<hostid>freebox</hostid>) <hostid>fastws</hostid> дээр
<filename>/etc/fstab</filename> дотор сервер байдлаар зааж өгөх жишээ:</para>
<programlisting>freebox:/sharedfs /project nfs rw,-w=1024 0 0</programlisting>
<para><hostid>fastws</hostid> дээр гараар холбохдоо:</para>
<screen>&prompt.root; <userinput>mount -t nfs -o -w=1024 freebox:/sharedfs /project</userinput></screen>
<para>Бараг бүх 16-битийн Ethernet адаптерийн хувьд
унших ба бичих хэмжээн дээр дээрх байдлаар хязгаарлалт
хийлгүйгээр ажиллах боломжтой байдаг.</para>
<para>Сонирхсон улсуудад толилуулахад, дээрх алдаа гарахад
чухам юу тохиолддог, яагаад засагдах боломжгүй болох талаар
дор тайлбарлав. NFS нь голчлон 8&nbsp;K (хэдийгээр илүү бага хэмжээтэй
хэсэг дээр ажиллаж чадах боловч) хэмжээтэй <quote>блок</quote>ууд дээр
ажилладаг. Хамгийн урт Ethernet пакет 1500&nbsp;байт орчим байх ба,
NFS <quote>блок</quote> нь хэд хэдэн Ethernet пакетуудад хуваагдах
хэрэгтэй болдог. Дээд түвшний програмын хувьд
энэ нь нэг нэгж хэвээр байх ба хүлээж аваад, нийлүүлээд, бататгал
хийхэд ч мөн нэг нэгж хэвээр байдаг. Өндөр үзүүлэлттэй ажлын машинууд
NFS нэгжийг бүрдүүлж байгаа тэдгээр пакетуудыг стандартад
заасны дагуу аль болох ойрхон ойрхон, нэг нэгээр нь цувуулж
гаргана. Жижиг, бага багтаамжтай картууд дээр, дээд түвшний програмд
дамжуулахаас өмнө сүүлийн пакет нь өмнөх пакетаа дарснаар
тухайн нэгжийг буцааж нийлүүлж, бататгах боломжгүй болно.
Үүнээс болж, ажлын машины болзоот хугацаа дуусаж бүхэл бүтэн 8&nbsp;K
нэгжийг дахин дамжуулах болно. Энэ үйл ажиллагаа дахин дахин хязгааргүй
давтагдах болно.</para>
<para>Нэгжийн хэмжээг Ethernet пакетийн хэмжээнээс бага
байлгаснаар, бид Ethernet пакет тус бүрийг бататгаж
мухардалд орохоос сэргийлж чадна.</para>
<para>Өндөр үзүүлэлттэй ажлын машинууд PC систем рүү өгөгдлийг
цацсаар байх үед давхцал үүссээр байх боловч, илүү сайн карт
ашигласнаар NFS <quote>нэгж</quote>ийн хувьд заавал тийм давхцал үүсэх
албагүй болно. Давхцал үүссэн тохиолдолд, түүнд өртсөн нэгжийг
дахин дамжуулах ба түүнийг хүлээн авч, нийлүүлж, бататгах боломж өндөртэй.</para>
</sect2>
</sect1>
<sect1 id="network-nis">
<sect1info>
<authorgroup>
<author>
<firstname>Билл</firstname>
<surname>Свингл</surname>
<contrib>Бичсэн </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Эрик</firstname>
<surname>Огрен</surname>
<contrib>Сайжруулсан </contrib>
</author>
<author>
<firstname>Удо</firstname>
<surname>Эрделхофф</surname>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title>Сүлжээний Мэдээллийн Систем (NIS/YP)</title>
<sect2>
<title>Энэ юу вэ?</title>
<indexterm><primary>NIS</primary></indexterm>
<indexterm><primary>Solaris</primary></indexterm>
<indexterm><primary>HP-UX</primary></indexterm>
<indexterm><primary>AIX</primary></indexterm>
<indexterm><primary>Linux</primary></indexterm>
<indexterm><primary>NetBSD</primary></indexterm>
<indexterm><primary>OpenBSD</primary></indexterm>
<para><acronym role="Network Information System">NIS</acronym>,
нь Network Information Services буюу Сүлжээний Мэдээллийн Үйлчилгээнүүд
гэсэн үгийн товчлол бөгөөд &unix; (анхандаа &sunos;) системүүдийн
удирдлагыг төвлөрүүлэх зорилгоор Sun Microsystems анх хөгжүүлсэн.
Одоо энэ салбарын үндсэн стандарт болжээ; бүх гол &unix; төрлийн системүүд
(&solaris;, HP-UX, &aix;, Линукс, NetBSD, OpenBSD, FreeBSD, гэх мэт) <acronym role="Network Information
System">NIS</acronym>-г дэмждэг.</para>
<indexterm><primary>шар хуудас</primary><see>NIS</see></indexterm>
<para><acronym role="Network Information System">NIS</acronym> анх Yellow Pages буюу Шар Хуудас
гэсэн нэртэй байсан боловч худалдааны тэмдгийн асуудлаас болж
Sun нэрийг нь сольсон. Хуучин нэр (ба yp) нь одоо хир нь хэрэглэгдсээр байдаг.</para>
<indexterm>
<primary>NIS</primary>
<secondary>домэйнууд</secondary>
</indexterm>
<para>Энэ нь RPC дээр үндэслэсэн, нэг NIS домэйнд байгаа
бүлэг машинууд дундаа адилхан тохиргооны файлтай боломжийг
олгодог харилцагч/сервер систем юм. Үүний тусламжтай
системийн администратор NIS харилцагч системийг
зайлшгүй байх үндсэн тохиргоотойгоор үүсгэх, тохиргооны өгөгдлийг
нэг дор нэмэх, хасах, өөрчлөх зэрэг үйлдлүүдийг хийх
боломжтой болдог.</para>
<indexterm><primary>Windows NT</primary></indexterm>
<para>Энэ нь &windowsnt;-н домэйн системтэй төстэй.
Хэдийгээр тэдгээрийн дотоод ажиллагаа нь ердөө ч адилхан биш боловч
үндсэн үүргийг нь адилтгаж болох юм.</para>
</sect2>
<sect2>
<title>Таны мэдэж байх ёстой Нэр томъёо/Процессууд</title>
<para>NIS сервер эсвэл NIS харилцагч байдлаар ажилладаг NIS-г FreeBSD дээр
зохион байгуулахын тулд нилээд хэдэн нэр томъёо, чухал хэрэглэгчийн
процессуудтай та тааралдах болно:</para>
<indexterm>
<primary><application>rpcbind</application></primary>
</indexterm>
<indexterm>
<primary><application>portmap</application></primary>
</indexterm>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<colspec colwidth="1*">
<colspec colwidth="3*">
<thead>
<row>
<entry>Нэр томъёо</entry>
<entry>Тайлбар</entry>
</row>
</thead>
<tbody>
<row>
<entry>NIS домэйн нэр</entry>
<entry>NIS мастер сервер болон түүний бүх харилцагчид
(түүний зарц серверийг оруулаад) бүгд NIS домэйн нэртэй байна.
&windowsnt;-н домэйн нэртэй адилаар, NIS домэйн нэр <acronym>DNS</acronym>-тэй
ямар ч хамаагүй.</entry>
</row>
<row>
<entry><application>rpcbind</application></entry>
<entry><acronym>RPC</acronym>-г (Remote Procedure Call буюу Алсын Процедур Дуудах, NIS-н
ашигладаг сүлжээний протокол) идэвхтэй байлгахын тулд заавал ажиллаж
байх ёстой. Хэрэв <application>rpcbind</application> ажиллахгүй бол,
NIS сервер ажиллуулах, NIS харилцагч болох боломжгүй.</entry>
</row>
<row>
<entry><application>ypbind</application></entry>
<entry>NIS харилцагчийг NIS сервертэй <quote>холбоно</quote>.
NIS домэйн нэрийг системээс авч, <acronym>RPC</acronym> ашиглан сервертэй холбоно.
<application>ypbind</application> нь NIS орчны харилцагч-серверийн харилцааны цөм нь болж
өгдөг; Хэрэв харилцагчийн машин дээр <application>ypbind</application> үхвэл,
NIS сервер рүү хандах боломжгүй болно.</entry>
</row>
<row>
<entry><application>ypserv</application></entry>
<entry>Зөвхөн NIS сервер дээр ажиллаж байх ёстой;
энэ бол NIS сервер процесс өөрөө юм. Хэрэв &man.ypserv.8; үхвэл,
сервер NIS хүсэлтэд хариу өгөх боломжгүй болно (магадгүй,
түүний үүргийг үргэлжлүүлэх зарц сервер байгаа байх). Зарим
NIS-н хувьд (FreeBSD-гийх биш), анх холбогдож байсан сервер байхгүй болбол
өөр сервертэй холбоо тогтоохыг оролддоггүй хувилбарууд байдаг.
Ихэнхдээ, ийм үед ганц тус болох зүйл бол сервер процессийг
дахин эхлүүлэх (эсвэл серверийг бүхлээр нь), эсвэл харилцагч талын
<application>ypbind</application> процессийг дахин эхлүүлэх юм.</entry>
</row>
<row>
<entry><application>rpc.yppasswdd</application></entry>
<entry>Зөвхөн NIS эзэн сервер дээр ажиллаж байх ёстой өөр
нэг процесс; Энэ дэмон NIS харилцагч нарыг өөрсдийн нэвтрэх үгийг
солих боломжийг олгоно. Хэрэв энэ дэмон ажиллахгүй бол,
хэрэглэгчид NIS эзэн сервер рүү нэвтэрч орон тэнд нэвтрэх үгээ солих
хэрэгтэй болно.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<!-- XXX Missing: rpc.ypxfrd (not important, though) May only run
on the master -->
</sect2>
<sect2>
<title>Хэрхэн ажилладаг вэ?</title>
<para>NIS орчинд гурван төрлийн хост байна:
эзэн сервер, зарц сервер, ба харилцагч. Серверүүд нь
хостуудын тохиргооны мэдээллийг хадгалсан агуулахын үүргийг
гүйцэтгэнэ. Эзэн сервер энэ мэдээллийн бүрэн эрхтэй хуулбарыг
хадгалж байдаг бол, зарц сервер нь энэ мэдээллийн хуулбарыг
нөөцөнд хадгалж байдаг. Серверүүд харилцагчдыг эдгээр мэдээллээр
хангана.</para>
<para>Олон файлд байгаа мэдээллийг энэ маягаар хуваалцаж хэрэглэнэ.
<filename>master.passwd</filename>, <filename>group</filename>, ба <filename>hosts</filename> гэсэн файлуудыг
ихэвчлэн NIS тусламжтай хуваалцана. Эдгээр файлд байдаг мэдээлэл
харилцагч талын нэг процессод хэрэгтэй боллоо гэхэд түүнийг өөрийн дотоодоос
хайхын оронд түүнд оноогдсон NIS серверээс асуулга хийнэ.</para>
<sect3>
<title>Машины төрөл</title>
<itemizedlist>
<indexterm>
<primary>NIS</primary>
<secondary>эзэн сервер</secondary>
</indexterm>
<listitem>
<para><emphasis>NIS эзэн сервер</emphasis>. Энэ сервер, &windowsnt;-н анхдагч
домэйн сервер хянагчийн нэг адил, NIS харилцагчдын хэрэгцээний бүх файлуудыг
агуулсан байна. <filename>passwd</filename>, <filename>group</filename> ба NIS харилцагчийн хэрэглэх
бусад олон файлууд эзэн сервер дээр байна.</para>
<note><para>Нэг машин нэгээс олон NIS домэйны хувьд NIS эзэн
сервер байж болно. Гэхдээ, энд бид бага хэмжээний NIS орчны талаар
ярилцах тул энэ талаар энд үзэхгүй.</para></note>
</listitem>
<indexterm>
<primary>NIS</primary>
<secondary>зарц сервер</secondary>
</indexterm>
<listitem>
<para><emphasis>NIS зарц сервер</emphasis>. &windowsnt;-н нөөц домэйн хянагчтай адилаар,
NIS зарц сервер нь NIS эзэн серверийн өгөгдлийн файлын хуулбарыг хадгална.
NIS зарц серверүүд нь нөөцөнд байдаг. Тэдгээр нь мөн эзэн серверийн
ачааллыг хуваалцаж байдаг: NIS Харилцагчид нь хамгийн түрүүнд хариу өгсөн
серверт холбогдох ба үүний тоонд зарц серверүүд ч бас орно.</para>
</listitem>
<indexterm>
<primary>NIS</primary>
<secondary>харилцагч</secondary>
</indexterm>
<listitem>
<para><emphasis>NIS харилцагч</emphasis>. NIS харилцагч нь ихэнх
&windowsnt; ажлын машины адилаар, NIS серверт шалгуулж (эсвэл &windowsnt; ажлын
машины хувьд &windowsnt; домэйн хянагчид) нэвтэрнэ.</para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
<sect2>
<title>NIS/YP-г хэрэглэх нь</title>
<para>Энэ хэсэгт жишээ NIS орчныг үүсгэх болно.</para>
<sect3>
<title>Төлөвлөх</title>
<para>Та өөрийгөө нэгэн их сургуулийн жижигхэн лабораторын
администратор гэж бод. Энэ лаб 15 FreeBSD машинаас бүрдэх ба
одоогоор төвлөрсөн удирдлага байхгүй; машин бүр өөрийн
<filename>/etc/passwd</filename> ба <filename>/etc/master.passwd</filename> файлуудтай. Эдгээр файлуудыг
адилхан байлгахын тулд гараараа зөөж тавьдаг; одоогийн байдлаар лабораторид шинэ
хэрэглэгч нэмэхийн тулд, бүх 15 машин дээр нэг бүрчлэн <command>adduser</command>
тушаалыг оруулах хэрэгтэй байгаа. Мэдээж үүнийг өөрчлөх хэрэгтэй,
иймээс та лабораторидоо NIS хэрэглэхээр боллоо. Машинуудаасаа хоёрыг
нь сервер болгохоор сонгож авлаа.</para>
<para>Тиймээс, лабораторын тохиргоо дараах байдалтай байна:</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="3">
<thead>
<row>
<entry>Машины нэр</entry>
<entry>IP хаяг</entry>
<entry>Машины үүрэг</entry>
</row>
</thead>
<tbody>
<row>
<entry><hostid>ellington</hostid></entry>
<entry><hostid role="ipaddr">10.0.0.2</hostid></entry>
<entry>NIS эзэн</entry>
</row>
<row>
<entry><hostid>coltrane</hostid></entry>
<entry><hostid role="ipaddr">10.0.0.3</hostid></entry>
<entry>NIS зарц</entry>
</row>
<row>
<entry><hostid>basie</hostid></entry>
<entry><hostid role="ipaddr">10.0.0.4</hostid></entry>
<entry>Факультетийн ажлын машин</entry>
</row>
<row>
<entry><hostid>bird</hostid></entry>
<entry><hostid role="ipaddr">10.0.0.5</hostid></entry>
<entry>Харилцагч машин</entry>
</row>
<row>
<entry><hostid>cli[1-11]</hostid></entry>
<entry><hostid role="ipaddr">10.0.0.[6-17]</hostid></entry>
<entry>Бусад харилцагч машинууд</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Хэрэв та NIS зураглалыг анх удаа хийж байгаа бол,
хаанаас эхлэхээ эхлээд сайн бодох хэрэгтэй. Сүлжээ чинь ямар ч
хэмжээтэй байж болно, гол нь хэд хэдэн сонголт хийх хэрэгтэй.</para>
<sect4>
<title>NIS Домэйн Нэрийг сонгох нь</title>
<indexterm>
<primary>NIS</primary>
<secondary>домэйннэр</secondary>
</indexterm>
<para>Өөрийн тань байнга хэрэглэдэг <quote>домэйн нэр</quote> байж болохгүй.
Залруулж хэлбэл <quote>NIS домэйн нэр</quote> байх ёстой. Харилцагч мэдээлэл
олж авахын тулд хүсэлтээ цацах үед NIS домэйн нэрийг хэрэглэнэ.
Үүгээр нэг сүлжээнд байгаа олон серверүүд хэн нь хэний асуултанд хариулах
ёстойгоо мэдэж авна. NIS домэйн нэрийг хоорондоо ямар нэг байдлаар
хамаатай бүлэг хостын нэр гэж ойлгож болно.</para>
<para>Зарим байгууллагууд өөрийн Интернэтийн домэйн нэрийг
NIS домэйн нэрээр хэрэглэх нь байдаг. Энэ нь сүлжээний ямар нэг асуудлыг
задлан шинжлэх явцад түвэг удах тул энэ аргыг зөвлөдөггүй. NIS домэйн нэр нь
сүлжээний орчинд цор ганц байх ёстой бөгөөд төлөөлж байгаа бүлэг машинаа онцолсон
нэр байвал дөхөм байдаг. Жишээлбэл, Acme Inc. компаний Урлагийн хэлтэс <quote>acme-art</quote>
гэсэн NIS домэйнтой байж болох юм. Бид өөрсдийн жишээндээ <literal>test-domain</literal> гэсэн
домэйн нэрийг авлаа.</para>
<indexterm><primary>SunOS</primary></indexterm>
<para>Гэвч, зарим үйлдлийн системүүд (цохон дурдвал &sunos;)
өөрийн NIS домэйн нэрийг Интернэт домэйн нэрээр хэрэглэдэг.
Хэрэв таны сүлжээний нэг болон түүнээс дээш тооны машин
ийм асуудалтай бол, та Интернэт домэйн нэрээ NIS домэйндоо хэрэглэх
<emphasis>ёстой</emphasis>.</para>
</sect4>
<sect4>
<title>Серверт тавигдах шаардлагууд</title>
<para>NIS серверт зориулсан машин сонгон авахдаа
анхаарах хэд хэдэн зүйлс бий. NIS-тэй холбоотой нэг учир дутагдалтай
зүйл бол харилцагчдын серверээс хамаарах хамаарал юм. Хэрэв
харилцагч өөрийн NIS домэйныг асуухаар сервертэй холбогдож чадахгүй бол,
тэр машин ашиглагдах боломжгүй болдог. Хэрэглэгч болон бүлгийн мэдээлэл
дутуугаас ихэнх системүүд түр хугацаанд зогсдог. Тиймээс, дахин дахин
асааж унтраалгаад байхааргүй, эсвэл туршилтад хэрэглэгдэхээр
машиныг сонгох хэрэгтэй. NIS сервер нь тусдаа, зөвхөн NIS серверт зориулагдсан
машин байх ёстой. Хэрэв ачаалал багатай сүлжээнд ажиллаж байгаа бол,
NIS серверийг өөр үйлчилгээ ажиллаж байгаа машин дээр тавьж болох талтай.
Хамгийн гол нь NIS сервер чинь ажиллахгүй болбол, <emphasis>бүх</emphasis> NIS харилцагчид чинь
мөн ажиллахгүй болохыг санаарай.</para>
</sect4>
</sect3>
<sect3>
<title>NIS Серверүүд</title>
<para>Бүх NIS мэдээлэл он цагийн дарааллаараа
NIS эзэн сервер дээр хадгалагдаж байдаг.
Энэ мэдээллийг хадгалж байгаа өгөгдлийн санг NIS буулгалт гэж нэрлэнэ.
FreeBSD-д, эдгээр буулгалтууд <filename>/var/yp/[domainname]</filename> файл дотор байрлана.
<filename>[domainname]</filename> нь NIS домэйн нэр болно. Нэг NIS сервер хэд хэдэн
домэйныг зэрэг агуулж чадах тул домэйн тус бүрт зориулсан хэд хэдэн
ийм сан байж болно. Домэйн бүр өөрийн гэсэн буулгалтуудтай байна.</para>
<para>NIS эзэн болон зарц серверүүд бүх NIS хүсэлтийг <command>ypserv</command> дэмоны
тусламжтай удирдаж явуулна. <command>ypserv</command> нь NIS харилцагч нараас
ирж буй хүсэлтийг хүлээн авч, домэйныг хөрвүүлэн, уг домэйн нэрд харгалзах
өгөгдлийн файлын замыг хайж олоод, өгөгдлийг буцаан харилцагчид дамжуулах үүрэгтэй.</para>
<sect4>
<title>NIS Эзэн Серверийг зохион байгуулах нь</title>
<indexterm>
<primary>NIS</primary>
<secondary>серверийн тохиргоо</secondary>
</indexterm>
<para>Эзэн NIS серверийг зохион байгуулах нь харьцангуй
ойлгомжтой. FreeBSD нь бэлэн NIS суучихсан ирдэг. Зөвхөн <filename>/etc/rc.conf</filename>
файл дотор дараах мөрүүдийг нэмэхэд л хангалттай, үлдсэнийг нь
FreeBSD таны өмнөөс хийгээд өгөх болно.</para>
<procedure>
<step>
<para><programlisting>nisdomainname="test-domain"</programlisting>
Энэ мөр сүлжээ асахад (жишээ нь, систем дахин ачаалсны дараа)
NIS домэйн нэрийг <literal>test-domain</literal> болгоно.</para>
</step>
<step>
<para><programlisting>nis_server_enable="YES"</programlisting>
Энэ мөр нь сүлжээ асахад NIS сервер процессуудыг
асаахыг хэлж өгнө.</para>
</step>
<step>
<para><programlisting>nis_yppasswdd_enable="YES"</programlisting>
Энэ мөр нь <command>rpc.yppasswdd</command> дэмонг идэвхжүүлнэ. Дээр хэлсэнчлэн,
энэ дэмон нь харилцагч машин дээрээс хэрэглэгч өөрийн NIS нэвтрэх
үгийг солих боломжтой болгодог.</para>
</step>
</procedure>
<note>
<para>Таны NIS тохиргооноос хамааран, нэмэлт мөрүүдийг оруулах
хэрэгтэй болж магадгүй. <link
linkend="network-nis-server-is-client">NIS сервер мөртлөө давхар NIS
харилцагч серверийн тухай хэсгээс</link>, доор, дэлгэрэнгүй
мэдээллийг авна уу.</para>
</note>
<para>Одоо, супер хэрэглэгчийн эрхээр <command>/etc/netstart</command>
тушаалыг өгөх л үлдлээ. Энэ нь таны <filename>/etc/rc.conf</filename> файл дотор
тодорхойлж өгсөн утгуудыг ашиглан бүх зүйлсийг таны өмнөөс
хийх болно.</para>
</sect4>
<sect4>
<title>NIS Буулгалтуудыг эхлүүлэх нь</title>
<indexterm>
<primary>NIS</primary>
<secondary>буулгалтууд</secondary>
</indexterm>
<para><emphasis>NIS буулгалтууд</emphasis> нь өгөгдлийн сангийн
файлууд бөгөөд <filename>/var/yp</filename> сан дотор хадгалагдана.
Тэдгээрийг NIS эзэн серверийн <filename>/etc</filename> сан дотор байгаа
<filename>/etc/master.passwd</filename> файлаас бусад тохиргооны файлуудаас үүсгэдэг.
Энэ нь их учиртай. Мэдээж та өөрийн <username>root</username> болон удирдах
эрхтэй дансуудынхаа нэвтрэх үгийг NIS домэйн дахь бүх сервер дээр
тарааж тавих хүсэлгүй байгаа биз дээ. Тиймээс,
NIS буулгалтуудыг эхлүүлэхийн өмнө, дараах зүйлсийг хийх хэрэгтэй:</para>
<screen>&prompt.root; <userinput>cp /etc/master.passwd /var/yp/master.passwd</userinput>
&prompt.root; <userinput>cd /var/yp</userinput>
&prompt.root; <userinput>vi master.passwd</userinput></screen>
<para>Системийн дансуудад хамаарах мөрүүдийг (<username>bin</username>,
<username>tty</username>, <username>kmem</username>,
<username>games</username>, гэх мэт), мөн NIS харилцагч дээр тарааж
тавих хүсэлгүй байгаа дансуудад хамаарах мөрүүдийг (жишээлбэл
<username>root</username> ба бусад UID 0 (супер хэрэглэгчийн) дансууд) бүгдийг
устгах хэрэгтэй.</para>
<note><para><filename>/var/yp/master.passwd</filename> файл бүлгийн болон нийтийн хувьд
унших эрхгүй (600 төлөв) байгааг нягтална уу! Шаардлагатай бол
<command>chmod</command> тушаалыг хэрэглээрэй.</para></note>
<indexterm><primary>Tru64 UNIX</primary></indexterm>
<para>Дээр дурдсаныг гүйцэтгэж дууссаны дараа,
сая NIS буулгалтуудыг эхлүүлнэ! FreeBSD нь танд үүнийг хийж өгөх
<command>ypinit</command> нэртэй скриптийг (холбогдох заавар хуудаснаас
дэлгэрэнгүй мэдээллийг авна уу) агуулж байдаг.
Энэ скрипт ихэнх &unix; үйлдлийн системд байдаг боловч,
заримд нь байхгүй байх тохиолдол бий.
Digital UNIX/Compaq Tru64 UNIX дээр энэ скрипт <command>ypsetup</command> гэсэн
нэртэй байдаг. Бид NIS эзэн серверийн хувьд буулгалтуудыг
үүсгэж байгаа тул <command>ypinit</command> тушаалыг <option>-m</option>
тохируулгын хамт өгнө. Дээрх алхмуудыг бүгдийг хийсний дараа,
NIS буулгалтуудыг үүсгэхдээ дараах тушаалыг өгнө:</para>
<screen>ellington&prompt.root; <userinput>ypinit -m test-domain</userinput>
Server Type: MASTER Domain: test-domain
Creating an YP server will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.
Do you want this procedure to quit on non-fatal errors? [y/n: n] <userinput>n</userinput>
Ok, please remember to go back and redo manually whatever fails.
If you don't, something might not work.
At this point, we have to construct a list of this domains YP servers.
rod.darktech.org is already known as master server.
Please continue to add any slave servers, one per line. When you are
done with the list, type a &lt;control D&gt;.
master server : ellington
next host to add: <userinput>coltrane</userinput>
next host to add: <userinput>^D</userinput>
The current list of NIS servers looks like this:
ellington
coltrane
Is this correct? [y/n: y] <userinput>y</userinput>
[..output from map generation..]
NIS Map update completed.
ellington has been setup as an YP master server without any errors.</screen>
<para><command>ypinit</command> нь <filename>/var/yp/Makefile.dist</filename>-с
<filename>/var/yp/Makefile</filename>-г үүсгэсэн байх ёстой.
Үүсэхдээ, энэ файл таныг ганц NIS сервертэй орчинд
зөвхөн FreeBSD машинуудтай ажиллаж байна гэж үзнэ.
<literal>test-domain</literal> нь зарц сервертэй тул,
та <filename>/var/yp/Makefile</filename> файлыг засах хэрэгтэй:</para>
<screen>ellington&prompt.root; <userinput>vi /var/yp/Makefile</userinput></screen>
<para>Доорх мөрийг далдлах хэрэгтэй</para>
<programlisting>NOPUSH = "True"</programlisting>
<para>(хэрэв далдлагдаагүй бол).</para>
</sect4>
<sect4>
<title>NIS Зарц Серверийг зохион байгуулах нь</title>
<indexterm>
<primary>NIS</primary>
<secondary>зарц сервер</secondary>
</indexterm>
<para>NIS зарц серверийг зохион байгуулах нь
эзэн серверийг зохион байгуулахаас ч хялбар байдаг.
Зарц сервер рүү нэвтэрч ороод түрүүн хийсэн шигээ
<filename>/etc/rc.conf</filename> файлыг засах хэрэгтэй.
Ганц ялгаа нь <command>ypinit</command> тушаалыг өгөхдөө
<option>-s</option> тохируулгыг өгнө. <option>-s</option> тохируулга нь
NIS эзэн серверийн нэрийг хамт оруулахыг шаардах тул бидний
тушаалын мөр дараах байдалтай байна:</para>
<screen>coltrane&prompt.root; <userinput>ypinit -s ellington test-domain</userinput>
Server Type: SLAVE Domain: test-domain Master: ellington
Creating an YP server will require that you answer a few questions.
Questions will all be asked at the beginning of the procedure.
Do you want this procedure to quit on non-fatal errors? [y/n: n] <userinput>n</userinput>
Ok, please remember to go back and redo manually whatever fails.
If you don't, something might not work.
There will be no further questions. The remainder of the procedure
should take a few minutes, to copy the databases from ellington.
Transferring netgroup...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byuser...
ypxfr: Exiting: Map successfully transferred
Transferring netgroup.byhost...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byuid...
ypxfr: Exiting: Map successfully transferred
Transferring passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring group.bygid...
ypxfr: Exiting: Map successfully transferred
Transferring group.byname...
ypxfr: Exiting: Map successfully transferred
Transferring services.byname...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring rpc.byname...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.byname...
ypxfr: Exiting: Map successfully transferred
Transferring master.passwd.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byname...
ypxfr: Exiting: Map successfully transferred
Transferring networks.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring netid.byname...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byaddr...
ypxfr: Exiting: Map successfully transferred
Transferring protocols.bynumber...
ypxfr: Exiting: Map successfully transferred
Transferring ypservers...
ypxfr: Exiting: Map successfully transferred
Transferring hosts.byname...
ypxfr: Exiting: Map successfully transferred
coltrane has been setup as an YP slave server without any errors.
Don't forget to update map ypservers on ellington.</screen>
<para>Одоо <filename>/var/yp/test-domain</filename> нэртэй сан
үүссэн байх ёстой. NIS эзэн серверийн буулгалтуудын хуулбарууд
энэ сан дотор байх ёстой. Эдгээр файлууд шинэчлэгдэж
байгаа эсэхийг нягтлаж байх хэрэгтэй.
Таны зарц серверийн <filename>/etc/crontab</filename> доторх дараах мөрүүд
үүнийг хийх болно:</para>
<programlisting>20 * * * * root /usr/libexec/ypxfr passwd.byname
21 * * * * root /usr/libexec/ypxfr passwd.byuid</programlisting>
<para>Энэ хоёр мөр нь зарц сервер өөрийн буулгалтуудыг
эзэн сервертэй ижилхэн байлгахыг хүчилнэ. Хэдийгээр
эдгээр мөрүүдийг заавал хэрэглэх шаардлагагүй боловч,
эзэн сервер өөрийх нь NIS буулгалтад гарсан өөрчлөлтүүд
зарц серверүүдийн хувьд дамжигдсан эсэхийг шалгадаг,
нэвтрэх үгийн тухай мэдээлэл нь системийн хувьд амин чухал зэргээс
дээрх шинэчлэлтийг хүчлэх нь зүгээр.</para>
<para>Одоо, зарц сервер талд мөн <command>/etc/netstart</command> тушаалыг өгч
NIS серверийг ажиллуулна.</para>
</sect4>
</sect3>
<sect3>
<title>NIS Харилцагчид</title>
<para>NIS харилцагч нь <command>ypbind</command> дэмоны тусламжтай
тодорхой нэг NIS сервертэй холбоо тогтооно. <command>ypbind</command>
системийн анхдагч домэйныг шалгах ба (<command>domainname</command> тушаалаар
өгөгдсөн), дотоод сүлжээнд RPC хүсэлтийг цацаж эхлэнэ.
Эдгээр хүсэлтүүд нь <command>ypbind</command>-н холбоо тогтоох гэж байгаа
домэйн нэрийг зааж өгнө. Хэрэв тухайн домэйнд
үйлчлэхээр тохируулагдсан сервер дээрх хүсэлтийг
хүлээн авбал, <command>ypbind</command>-д хариу өгөх ба хариуг хүлээж авсан
тал серверийн хаягийг тэмдэглэж авна. Хэрэв хэд хэдэн сервер
хариу өгсөн бол (нэг эзэн ба хэд хэдэн зарц), <command>ypbind</command>
хамгийн түрүүнд хариу өгсөн серверийг сонгон авна. Түүнээс хойш,
харилцагч өөрийн бүх NIS хүсэлтүүдээ тэр сервер рүү явуулна.
<command>ypbind</command> нь хааяа сервер амьд байгаа эсэхийг нягтлахын тулд
<quote>ping</quote> хийж үзнэ. Хэрэв хангалттай хугацааны дотор хариу хүлээж
аваагүй бол, <command>ypbind</command> энэ домэйнтой холбоо тасарлаа гэж үзээд
өөр сервер олохын тулд хүсэлтээ цацаж эхэлнэ.</para>
<sect4>
<title>NIS Харилцагчийг зохион байгуулах</title>
<indexterm>
<primary>NIS</primary>
<secondary>харилцагчийг тохируулах нь</secondary>
</indexterm>
<para>FreeBSD машин дээр NIS харилцагчийг зохион байгуулах нь
нилээд хялбар байдаг.</para>
<procedure>
<step>
<para><filename>/etc/rc.conf</filename> файлыг нээгээд, NIS
домэйн нэрийг зааж өгөх ба сүлжээ асах үед <command>ypbind</command>-г
ажиллуулдаг болгохын тулд дараах мөрүүдийг нэмж бичнэ:</para>
<programlisting>nisdomainname="test-domain"
nis_client_enable="YES"</programlisting>
</step>
<step>
<para>NIS серверээс хэрэгтэй нэвтрэх үгүүдийг импортолж
авахын тулд <filename>/etc/master.passwd</filename> файл дотор байгаа
бүх хэрэглэгчийн дансыг устгаад, файлын төгсгөлд
дараах мөрийг нэмэхийн тулд <command>vipw</command> тушаалыг
ашиглана:</para>
<programlisting>+:::::::::</programlisting>
<note>
<para>Энэ мөр нь NIS серверийн нэвтрэх үгийн буулгалтад
байгаа хүчинтэй хэрэглэгчид данс олгоно. Энэ мөрийг өөрчлөх замаар
NIS харилцагчийг хэд хэдэн янзаар тохируулж болно. Дэлгэрэнгүй
мэдээллийг доорх <link linkend="network-netgroups">netgroups
section</link> хэсгээс үзнэ үү. Цааш гүнзгийрүүлэн судлах хүсэлтэй бол
<literal>NFS ба NIS-г удирдах нь</literal> тухай O'Reilly-н номыг үзнэ үү.</para>
</note>
<note>
<para>Дор хаяж нэг дотоод эрхийг (өөрөөр хэлбэл NIS-с импортолж аваагүй)
<filename>/etc/master.passwd</filename> файл дотор авч үлдэх хэрэгтэй.
Энэ данс <groupname>wheel</groupname> бүлгийн гишүүн байх ёстой. Хэрэв NIS дээр ямар нэг
асуудал гарлаа гэхэд энэ эрхээр алсаас нэвтрэн орж, <username>root</username> болоод
асуудлыг шийдвэрлэх болно.</para>
</note>
</step>
<step>
<para>NIS серверээс бүх бүлгүүдийг импортолж авахын тулд
дараах мөрийг <filename>/etc/group</filename> файлд нэмнэ:</para>
<programlisting>+:*::</programlisting>
</step>
</procedure>
<para>Үүний дараа, <command>ypcat passwd</command> тушаалыг өгч
NIS серверийн passwd буулгалтыг харж чадаж байх ёстой.</para>
</sect4>
</sect3>
</sect2>
<sect2>
<title>NIS-н Аюулгүй байдал</title>
<para>Ер нь ямар ч алсын хэрэглэгчийн хувьд өөрийн чинь
домэйн нэрийг мэдэж байвал RPC хүсэлтийг &man.ypserv.8;-д явуулж
NIS буулгалтыг харах боломжтой. Ийм төрлийн зөвшөөрөгдөөгүй
үйлдлээс сэргийлэхийн тулд &man.ypserv.8; нь зөвхөн зааж өгсөн хостуудаас
ирсэн хандалтыг зөвшөөрдөг <quote>securenets</quote> гэсэн функцыг агуулж
байдаг. Систем анх ачаалахад, &man.ypserv.8; нь securenets-н мэдээллийг
<filename>/var/yp/securenets</filename> гэсэн файлаас ачаална.</para>
<note>
<para>Энэ замыг <option>-p</option> тохируулгаар зааж өгөх ба янз бүр байж болно.
Энэ файлд сүлжээг сүлжээний багийн хамт зайгаар тусгаарлан
оруулж өгсөн байна. <quote>#</quote> тэмдгээр эхэлсэн мөрүүд нь тайлбар болно.
Жишээ securenets файл дараах байдалтай байна:</para>
</note>
<programlisting># allow connections from local host -- mandatory
127.0.0.1 255.255.255.255
# allow connections from any host
# on the 192.168.128.0 network
192.168.128.0 255.255.255.0
# allow connections from any host
# between 10.0.0.0 to 10.0.15.255
# this includes the machines in the testlab
10.0.0.0 255.255.240.0</programlisting>
<para>Хэрэв &man.ypserv.8;-н хүсэлт хүлээж авсан хаяг
эдгээр дүрмүүдийн аль нэгэнд тохирч байвал хүсэлтийг
ердийн байдлаар боловсруулна. Хэрэв энэ хаяг ямар ч дүрмэнд
тохирохгүй байвал, хүсэлтийг үл анхаарах бөгөөд
анхааруулах бичлэгийг бүртгэлд нэмнэ. Хэрэв
<filename>/var/yp/securenets</filename> гэсэн файл байхгүй бол,
<command>ypserv</command> нь гаднаас ирсэн бүх хүсэлтийг хүлээн авна.</para>
<para><command>ypserv</command> програм нь Wietse Venema-н <application>TCP Wrapper</application> багцыг
дэмждэг. Энэ нь администраторуудын хувьд <filename>/var/yp/securenets</filename>-ны оронд
<application>TCP Wrapper</application>-н тохиргооны файлыг хандалтыг хянахад хэрэглэх
боломжтой болгодог.</para>
<note>
<para>Хэдийгээр эдгээр хандалтыг хянах механизмууд нь
аюулгүй байдлыг адил түвшинд хангах боловч,
хоёул <quote>IP залилах</quote> халдлагад өртөмтгий байдаг. NIS-тэй холбоотой
бүх урсгалыг галт хана дээрээ хааж өгөх хэрэгтэй.</para>
<para><filename>/var/yp/securenets</filename> хэрэглэж байгаа серверүүд
хуучин TCP/IP дээр ажиллаж байгаа зүй ёсны NIS харилцагчид үйлчилж
чадахгүй байж магадгүй. Учир нь, тэдгээр нь өргөн цацалт хийхдээ
хост битүүдийг бүгдийг тэглэдэг ба өргөн цацалтын хаягийг тооцоолохдоо
дэд сүлжээний багийг таньж чаддаггүй болно. Хэдийгээр эдгээр асуудлуудыг
харилцагчийн тохиргоог өөрчилснөөр шийдэж болох боловч,
бусад асуудлууд нь харилцагчийн системийг цааш ашиглах боломжгүй эсвэл
<filename>/var/yp/securenets</filename>-г болиулах шаардлагатай болдог.</para>
<para>Ийм хуучин TCP/IP дээр ажилладаг сервер дээр
<filename>/var/yp/securenets</filename>-г хэрэглэх нь үнэхээр хэрэггүй бөгөөд
сүлжээний ихэнх хэсэгт NIS-г ашиглах боломжгүй байдаг.</para>
<indexterm><primary>TCP Wrapper-ууд</primary></indexterm>
<para><application>TCP Wrapper</application> багцыг ашиглах нь
NIS серверийн хоцролтыг ихэсгэдэг. Энэ нэмэлт саатал нь
харилцагчийн програм дээр ялангуяа ачаалал ихтэй сүлжээнд,
эсвэл удаан NIS сервертэй бол хүлээх хугацаа дуусахад хүргэх талтай.
Хэрэв таны харилцагч систем чинь дээрх шинж тэмдгүүдийн аль нэгийг
агуулж байгаа бол та энэ харилцагч системээ NIS зарц сервер болгож өөрчлөн
хүчээр өөрөөсөө өөртөө холбогдохоор тохируулах хэрэгтэй.</para>
</note>
</sect2>
<sect2>
<title>Зарим хэрэглэгчдийн нэвтрэхийг хаах</title>
<para>Манай лабораторын жишээн дээр, <hostid>basie</hostid> нэртэй нэг
машин байгаа. Энэ машиныг зөвхөн багш нар хэрэглэх ёстой.
Бид энэ машиныг NIS домэйн дотроос гаргахыг хүсэхгүй байгаа, дээр нь
эзэн NIS сервер дээр байгаа <filename>passwd</filename> файл нь
багш нар болон оюутнуудын дансыг хоёуланг агуулж байгаа.
Бид одоо яах ёстой вэ?</para>
<para>NIS өгөгдлийн сан дотор бүртгэл нь байгаа ч, зарим
хэрэглэгчдийг тухайн машин руу нэвтрэхийг хаах нэг арга байна.
Үүний тулд <literal>-<replaceable>username</replaceable></literal> гэсэн мөрийг
харилцагч машин дээр <filename>/etc/master.passwd</filename> файлын төгсгөлд нэмэх
хэрэгтэй. Энд <replaceable>username</replaceable> гэдэг нь
нэвтрэхийг нь хаах гэж байгаа хэрэглэгчийн нэр юм.
Дээрх үйлдлийг хийхдээ <command>vipw</command>-г ашиглахыг зөвлөж байна.
<command>vipw</command> нь <filename>/etc/master.passwd</filename> файл дотор хийгдсэн өөрчлөлтийг
хянах бөгөөд өөрчлөлт хийж дууссаны дараа нэвтрэх үгийн санг автоматаар
дахин үүсгэж өгдөг. Жишээ нь, хэрэв бид <username>bill</username> гэсэн хэрэглэгчийг
<hostid>basie</hostid> хост дээр нэвтрэхийг хаахыг хүсэж байгаа бол:</para>
<screen>basie&prompt.root; <userinput>vipw</userinput>
<userinput>[add -bill to the end, exit]</userinput>
vipw: rebuilding the database...
vipw: done
basie&prompt.root; <userinput>cat /etc/master.passwd</userinput>
root:[password]:0:0::0:0:The super-user:/root:/bin/csh
toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
operator:*:2:5::0:0:System &:/:/sbin/nologin
bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
+:::::::::
-bill
basie&prompt.root;</screen>
</sect2>
<sect2 id="network-netgroups">
<sect2info>
<authorgroup>
<author>
<firstname>Удо</firstname>
<surname>Эрделхофф</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect2info>
<title>Netgroups-г Хэрэглэх нь</title>
<indexterm><primary>netgroups</primary></indexterm>
<para>Цөөхөн тооны машин эсвэл хэрэглэгчийн хувьд
тусгай дүрэм хэрэгтэй үед өмнөх хэсэгт дурдсан аргыг
хэрэглэх нь илүү тохиромжтой. Харин том сүлжээний хувьд
зарим хэрэглэгчийн чухал машин руу нэвтрэх эрхийг хаахаа мартах,
эсвэл бүх машиныг нэг бүрчлэн гараараа тохируулж өгөх, өөрөөр хэлбэл
NIS-н <emphasis>төвлөрсөн</emphasis> удирдлага гэсэн гол санааг ашиглаж чадахгүй байх
тохиолдлууд <emphasis>гарах болно</emphasis>.</para>
<para>NIS-г хөгжүүлэгчид энэ асуудлыг шийдэхийн тулд
<emphasis>netgroups</emphasis> буюу сүлжээний бүлгүүд гэсэн шинэ зүйлийг бий болгожээ.
Түүний зорилго болон семантикийг &unix; файл системийн
жирийн бүлэгтэй дүйцүүлж болох юм. Гол ялгаанууд нь гэвэл
тоон дугаар байхгүй, мөн сүлжээний бүлгийг тодорхойлж өгөхдөө
хэрэглэгч болон өөр сүлжээний бүлгийг оруулж болдог.</para>
<para>Сүлжээний бүлэг нь хэдэн зуун хэрэглэгч болон машинтай
том, төвөгтэй сүлжээтэй ажиллахад зориулж бүтээгдсэн юм.
Нэг талаар, хэрэв та үнэхээр тийм том сүлжээнд ажиллаж байгаа бол
энэ нь Сайн Зүйл юм. Харин нөгөө талаас, энэ байдал нь
жижигхэн сүлжээнд хялбар жишээн дээр сүлжээний бүлгийг тайлбарлах
бараг боломжгүй болгож байна. Энэ хэсгийн үлдсэн хэсэгт хэрэглэж
байгаа жишээн дээр энэ асуудлыг харуулахыг оролдлоо.</para>
<para>NIS-г лабораторидоо нэвтрүүлсэн тань танай удирдлагуудын
анхаарлыг татсан гэж бодьё. Одоо оюутны хотхон дотор байгаа
бусад машиныг NIS домэйнд оруулж өргөтгөх ажлыг хийхийг танд
даалгажээ. Дараах хоёр хүснэгтэнд шинээр нэмэх хэрэглэгч болон
машины нэрийг товч тайлбарын хамт үзүүллээ.</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Хэрэглэгчийн нэр</entry>
<entry>Тайлбар</entry>
</row>
</thead>
<tbody>
<row>
<entry><username>alpha</username>, <username>beta</username></entry>
<entry>IT хэлтсийн ердийн ажилчид</entry>
</row>
<row>
<entry><username>charlie</username>, <username>delta</username></entry>
<entry>IT хэлтсийн шинэ дагалдан</entry>
</row>
<row>
<entry><username>echo</username>, <username>foxtrott</username>, <username>golf</username>, ...</entry>
<entry>бусад ердийн ажилчид</entry>
</row>
<row>
<entry><username>able</username>, <username>baker</username>, ...</entry>
<entry>дадлагажигчид</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Машины нэр</entry>
<entry>Тайлбар</entry>
</row>
</thead>
<tbody>
<row>
<!-- Names taken from "Good Omens" by Neil Gaiman and Terry
Pratchett. Many thanks for a brilliant book. -->
<entry><hostid>war</hostid>, <hostid>death</hostid>,
<hostid>famine</hostid>,
<hostid>pollution</hostid></entry>
<entry>Таны хамгийн чухал серверүүд. Зөвхөн IT хэлтсийн
ажилчид л нэвтрэх эрхтэй.</entry>
</row>
<row>
<!-- gluttony was omitted because it was too fat -->
<entry><hostid>pride</hostid>, <hostid>greed</hostid>,
<hostid>envy</hostid>, <hostid>wrath</hostid>,
<hostid>lust</hostid>, <hostid>sloth</hostid></entry>
<entry>Харьцангуй чухал биш серверүүд. IT хэлтэст харъяалагддаг бүх
хүмүүс нэвтрэх эрхтэй.</entry>
</row>
<row>
<entry><hostid>one</hostid>, <hostid>two</hostid>,
<hostid>three</hostid>, <hostid>four</hostid>,
...</entry>
<entry>Ердийн ажлын машинууд. Зөвхөн <emphasis>үндсэн</emphasis> ажилчид
нэвтрэх эрхтэй.</entry>
</row>
<row>
<entry><hostid>trashcan</hostid></entry>
<entry>Чухал зүйл байхгүй маш хуучин машин.
Дадлагажигчид хүртэл нэвтрэх эрхтэй.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Хэрэв та дээрх хязгаарлалтуудыг
тус бүрд нь хэрэглэгчийг хаах замаар хийх гэж оролдвол
бүх машин дээр хаах хэрэглэгч тус бүрийн хувьд
<literal>-<replaceable>user</replaceable></literal> мөрийг <filename>passwd</filename>
файл дотор нэмж өгөх ёстой болно. Хэрэв нэг л мөрийг
нэмэхээ мартвал асуудалд орно гэсэн үг.</para>
<para>Энэ байдалд сүлжээний бүлгийг ашиглах нь
нилээд олон давуу талтай. Хэрэглэгч бүрийг тус тусад нь
авч үзнэ; нэг хэрэглэгчийг нэг болон түүнээс дээш тооны
сүлжээний бүлэгт оноож, тухайн сүлжээний бүлгийн бүх гишүүдийн хувьд
нэвтрэхийг эсвэл зөвшөөрч эсвэл хаана. Хэрэв та шинэ машин нэмбэл,
зөвхөн сүлжээний бүлгүүдийн хувьд л нэвтрэх эрхийг зааж өгнө. Хэрэв шинэ
хэрэглэгч нэмбэл, тухайн хэрэглэгчийг нэг болон түүнээс дээш
тооны сүлжээний бүлэгт нэмэхэд л хангалттай. Эдгээр өөрчлөлтүүд нь нэг
нэгнээсээ хамааралгүй: <quote>хэрэглэгч ба машины бүх хувилбарт нэмэх...</quote>
шаардлагагүй болно. Хэрэв та NIS-г анхнаас нь бодлоготой хийх юм бол,
машинууд руу нэвтрэх эрхийг хянахдаа
зөвхөн ганцхан тохиргооны файлыг өөрчлөхөд хангалттай.</para>
<para>Хамгийн эхний алхам бол NIS сүлжээний бүлгийн буулгалтыг
эхлүүлэх юм. FreeBSD-н &man.ypinit.8; нь энэ буулгалтыг анхдагч байдлаар
үүсгэдэггүй, гэвч хэрэв нэгэнт үүсгэчихвэл түүний NIS-тэй ажиллах хэсэг нь
энэ буулгалт дээр ажиллах чадвартай. Хоосон буулгалт үүсгэхийн тулд:</para>
<screen>ellington&prompt.root; <userinput>vi /var/yp/netgroup</userinput></screen>
<para>гэж бичээд дараах зүйлсийг нэмж бичнэ. Манай жишээний хувьд,
бидэнд дор хаяж дөрвөн сүлжээний бүлэг хэрэгтэй: IT ажилчид,
IT дагалдангууд, ердийн ажилчид болон дадлагажигчид.</para>
<programlisting>IT_EMP (,alpha,test-domain) (,beta,test-domain)
IT_APP (,charlie,test-domain) (,delta,test-domain)
USERS (,echo,test-domain) (,foxtrott,test-domain) \
(,golf,test-domain)
INTERNS (,able,test-domain) (,baker,test-domain)</programlisting>
<para><literal>IT_EMP</literal>, <literal>IT_APP</literal> гэх мэт нь сүлжээний бүлгийн
нэр. Хаалтан дотор байгаа бүлэг нь хэрэглэгч нэмж байгаа нь. Бүлэг доторх
гурван талбар нь:</para>
<orderedlist>
<listitem>
<para>Дараах зүйлүүд хүчинтэй байх хостын нэр. Хэрэв хостын нэр зааж өгөхгүй бол,
бүх хостын хувьд хүчинтэй гэсэн үг. Хэрэв хостын нэр зааж өгвөл,
та үл ойлгогдох, толгой эргүүлсэн хачин зүйлстэй тулгарах болно.</para>
</listitem>
<listitem>
<para>Энэ сүлжээний бүлэгт хамаарах дансны нэр.</para>
</listitem>
<listitem>
<para>Тухайн дансны NIS домэйн. Хэрэв та нэгээс олон NIS
домэйнд харъяалагддаг азгүй залуусын нэг бол,
өөрийн сүлжээний бүлэгт өөр NIS домэйноос данс импортолж болно.</para>
</listitem>
</orderedlist>
<para>Эдгээр талбаруудын алинд ч орлуулагддаг тэмдэгт ашиглаж болно.
Дэлгэрэнгүй мэдээллийг &man.netgroup.5; заавар хуудаснаас үзнэ үү.</para>
<note>
<indexterm><primary>сүлжээний бүлгүүд</primary></indexterm>
<para>Сүлжээний бүлгүүдийн нэр 8-с дээш тэмдэгт байж
болохгүй, ялангуяа тухайн NIS домэйнд өөр үйлдлийн системтэй
машинууд ажиллаж байгаа бол. Нэрүүд нь том жижиг үсгийн ялгаатай;
сүлжээний бүлгийн нэрийг том үсгээр бичих нь
хэрэглэгчийн нэр, машины нэр болон сүлжээний бүлгийн нэрийг
хооронд нь ялгахад хялбар болгодог.</para>
<para>Зарим NIS харилцагчид (FreeBSD-с бусад) олон тооны гишүүдтэй
сүлжээний бүлэгтэй ажиллаж чаддаггүй. Жишээлбэл,
&sunos;-н зарим хуучин хувилбарууд сүлжээний бүлэг
15-с дээш тооны <emphasis>гишүүн</emphasis>-тэй бол асуудалтай байдаг.
Энэ хязгаарыг давахын тулд 15 ба түүнээс доош тооны хэрэглэгчтэй
дэд сүлжээний бүлгүүд үүсгээд, дараа нь эдгээр дэд сүлжээний бүлгүүдээс
тогтсон жинхэнэ сүлжээний бүлэг үүсгэх замаар үүсгэж болно:</para>
<programlisting>BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...]
BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
BIGGRP3 (,joe31,domain) (,joe32,domain)
BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3</programlisting>
<para>Хэрэв танд нэг сүлжээний бүлэгт 225-с дээш хэрэглэгч хэрэгтэй
бол, дээрх үйлдлийг давтах маягаар цааш үргэлжлүүлж болно.</para>
</note>
<para>Шинээр үүсгэсэн NIS буулгалтаа идэвхжүүлэх болон тараах нь амархан:</para>
<screen>ellington&prompt.root; <userinput>cd /var/yp</userinput>
ellington&prompt.root; <userinput>make</userinput></screen>
<para>Ингэснээр <filename>netgroup</filename>,
<filename>netgroup.byhost</filename> ба
<filename>netgroup.byuser</filename> гэсэн гурван NIS буулгалт үүсэх болно.
Дээрх шинэ буулгалтууд идэвхтэй болсон эсэхийг &man.ypcat.1; ашиглан
шалгаарай:</para>
<screen>ellington&prompt.user; <userinput>ypcat -k netgroup</userinput>
ellington&prompt.user; <userinput>ypcat -k netgroup.byhost</userinput>
ellington&prompt.user; <userinput>ypcat -k netgroup.byuser</userinput></screen>
<para>Эхний тушаалын үр дүн <filename>/var/yp/netgroup</filename> файл доторхтой
төстэй байх ёстой. Хэрэв та хостоор тусгайлан сүлжээний бүлэг үүсгээгүй бол
хоёр дахь тушаалын үр дүнд юу ч гарах ёсгүй. Гурав дахь тушаалын
тусламжтай тухайн хэрэглэгчийн сүлжээний бүлгүүдийн жагсаалтыг
харахад хэрэглэгдэнэ.</para>
<para>Харилцагчийг тохируулахад нилээд хялбар.
<hostid>war</hostid> нэртэй серверийг тохируулахын тулд, &man.vipw.8;-г
ажиллуулаад</para>
<programlisting>+:::::::::</programlisting>
<para>гэсэн мөрийг</para>
<programlisting>+@IT_EMP:::::::::</programlisting>
<para>гэсэн мөрөөр сольж бичих хэрэгтэй.
Ингэснээр, зөвхөн <literal>IT_EMP</literal> сүлжээний бүлэгт заагдсан
хэрэглэгчдийн мэдээлэл <hostid>war</hostid>-н нэвтрэх үгийн санд импортлогдож,
зөвхөн эдгээр хэрэглэгчид л энэ машин руу нэвтрэх эрхтэй боллоо.</para>
<para>Харамсалтай нь, энэ хязгаарлалт нь
бүрхүүлийн <literal>~</literal> функцад, мөн хэрэглэгчийн нэр ба тоон дугаарыг
хооронд нь хөрвүүлдэг бүх дэд програмуудад хамаатай. Өөрөөр хэлбэл,
<command>cd ~<replaceable>user</replaceable></command> тушаал ажиллахгүй,
<command>ls -l</command> тушаал хэрэглэгчийн нэрийн оронд
түүний тоон дугаарыг харуулах ба <command>find . -user joe -print</command> тушаал
<errorname>Тийм хэрэглэгч байхгүй</errorname> гэсэн алдааны мэдээлэл өгч амжилтгүй
болох болно. Үүнийг засахын тулд, бүх хэрэглэгчдийн бүртгэлийг
<emphasis>сервер рүү нэвтрэх эрхгүйгээр</emphasis> импортлох хэрэгтэй болно.</para>
<para>Үүний тулд өөр нэг мөрийг <filename>/etc/master.passwd</filename> файлд нэмж өгөх хэрэгтэй.
Энэ мөр нь:</para>
<para><literal>+:::::::::/sbin/nologin</literal> гэсэн бичлэгийг агуулж байх ёстой бөгөөд,
энэ нь <quote>бүх бүртгэлийг импортол, гэхдээ импортлогдож байгаа бүртгэлүүдийн
бүрхүүлийг <filename>/sbin/nologin</filename>-р соль</quote> гэсэн утгатай. Үүнтэй адилаар
<literal>passwd</literal> файлын ямар ч талбарыг <filename>/etc/master.passwd</filename> файл дахь анхдагч
утгыг сольж бичсэнээр өөрчилж болно.</para>
<!-- Been there, done that, got the scars to prove it - ue -->
<warning>
<para><literal>+:::::::::/sbin/nologin</literal> гэсэн мөр <literal>+@IT_EMP:::::::::</literal> гэсэн мөрийн
дараа бичигдсэн эсэхийг сайтар нягтлаарай. Үгүй бол, NIS-с импортлогдсон бүх
хэрэглэгчдийн бүрхүүл <filename>/sbin/nologin</filename> болчихно шүү.</para>
</warning>
<para>Дээрх өөрчлөлтийг хийсний дараа,
хэрэв IT хэлтэст шинэ ажилчин орвол,
зөвхөн ганцхан NIS буулгалтыг өөрчлөх боллоо. Чухал бус бусад серверийн хувьд
ижилхэн арга хэрэглэж, тэдгээрийн өөрийн <filename>/etc/master.passwd</filename> файл дотор байгаа
хуучин <literal>+:::::::::</literal> мөрийг:</para>
<programlisting>+@IT_EMP:::::::::
+@IT_APP:::::::::
+:::::::::/sbin/nologin</programlisting>
<para>гэсэн мөрөөр сольж бичих хэрэгтэй. Ердийн ажлын машины хувьд:</para>
<programlisting>+@IT_EMP:::::::::
+@USERS:::::::::
+:::::::::/sbin/nologin</programlisting>
<para>байх ёстой. Ингээд бүх зүйл асуудалгүй ажиллах болно.
Гэтэл хэдэн долоо хоногийн дараа дүрэм, журманд өөрчлөлт орлоо:
IT хэлтэс дадлагажигч авч эхэллээ. IT хэлтсийн дадлагажигчид
ердийн ажлын машин болон чухал бус серверүүдэд нэвтрэх эрхтэй;
IT дагалдангууд гол сервер рүү нэвтрэх эрхтэй болжээ. Одоо <literal>IT_INTERN</literal>
гэсэн шинэ сүлжээний бүлэг нэмж, энэ бүлэгт шинэ IT дадлагажигчдийг
нэмээд, энэ өөрчлөлтийг бүх машины тохиргоонд оруулж эхлэх хэрэгтэй...
Бидний хэлж заншсанаар: <quote>Төвлөрсөн төлөвлөгөөн дээрх алдаа,
бүх юмыг орвонгоор нь эргүүлнэ</quote>.</para>
<para>Энэ мэт тохиолдолуудад NIS-н
өөр сүлжээний бүлгээс шинэ сүлжээний бүлэг үүсгэх боломж нь тус болно.
Нэг боломж нь үүрэг дээр үндэслэсэн сүлжээний бүлэг юм.
Жишээ нь, чухал серверүүд рүү нэвтрэх эрхийг хянахын тулд
<literal>BIGSRV</literal> гэсэн нэртэй сүлжээний бүлэг үүсгэж болох ба,
чухал бус серверүүдийн хувьд өөр <literal>SMALLSRV</literal> гэсэн бүрэг үүсгэж,
<literal>USERBOX</literal> гэсэн гурав дахь бүлгийг ердийн ажлын машинуудад зориулж
үүсгэж болох юм. Эдгээр сүлжээний бүлэг тус бүр
дээрх гурван төрлийн машинд нэвтрэх эрхтэй
сүлжээний бүлгүүдийг агуулна. NIS сүлжээний бүлгийн буулгалт
дараах байдалтай байна:</para>
<programlisting>BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERS</programlisting>
<para>Нэвтрэх эрхийг хязгаарлах энэ арга нь
ижил төрлийн хязгаарлалттай машинуудыг нэг бүлэг болговол илүү
үр дүнтэй ажиллана. Харамсалтай нь, заавал тийм байх албагүй.
Ихэнх тохиолдолд, машин тус бүрээр нэвтрэх эрхийг хязгаарлах
боломжтой байх шаардлага зайлшгүй тулгардаг.</para>
<para>Машин дээр үндэслэсэн сүлжээний бүлэг тодорхойлох нь
дээрх мэтийн дүрэм журамд өөрчлөлт ороход хэрэглэж болох
хоёр дахь боломж юм. Энэ тохиолдолд, машин бүрийн
<filename>/etc/master.passwd</filename> файл дотор <quote>+</quote>-р эхэлсэн хоёр
мөр бичлэг байна. Эхнийх нь энэ машин руу нэвтрэх эрхтэй дансуудаас бүрдсэн
сүлжээний бүлгийг нэмж өгнө, хоёр дахь нь бусад дансуудыг
<filename>/sbin/nologin</filename> бүрхүүлтэйгээр нэмнэ. Сүлжээний бүлгийн нэрийг
машины нэрийг <quote>БҮХ ҮСГИЙГ ТОМООР</quote> байхаар сонгож авах нь
тохиромжтой. Өөрөөр хэлбэл, мөрүүд дараах байдалтай харагдах ёстой:</para>
<programlisting>+@<replaceable>BOXNAME</replaceable>:::::::::
+:::::::::/sbin/nologin</programlisting>
<para>Бүх машины хувьд дээрх үйлдлийг хийж дууссаны дараа,
өөрийн <filename>/etc/master.passwd</filename> файлыг дахин өөрчлөх шаардлагагүй болно.
Бусад бүх өөрчлөлтүүдийг NIS буулгалтыг өөрчилснөөр шийдэх болно. Дээрх асуудалд
тохирох сүлжээний бүлгийн буулгалтыг зарим нэмэлт өөрчлөлтүүдийн хамт
дор жишээ болгож үзүүлэв:</para>
<programlisting># Define groups of users first
IT_EMP (,alpha,test-domain) (,beta,test-domain)
IT_APP (,charlie,test-domain) (,delta,test-domain)
DEPT1 (,echo,test-domain) (,foxtrott,test-domain)
DEPT2 (,golf,test-domain) (,hotel,test-domain)
DEPT3 (,india,test-domain) (,juliet,test-domain)
ITINTERN (,kilo,test-domain) (,lima,test-domain)
D_INTERNS (,able,test-domain) (,baker,test-domain)
#
# Now, define some groups based on roles
USERS DEPT1 DEPT2 DEPT3
BIGSRV IT_EMP IT_APP
SMALLSRV IT_EMP IT_APP ITINTERN
USERBOX IT_EMP ITINTERN USERS
#
# And a groups for a special tasks
# Allow echo and golf to access our anti-virus-machine
SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain)
#
# machine-based netgroups
# Our main servers
WAR BIGSRV
FAMINE BIGSRV
# User india needs access to this server
POLLUTION BIGSRV (,india,test-domain)
#
# This one is really important and needs more access restrictions
DEATH IT_EMP
#
# The anti-virus-machine mentioned above
ONE SECURITY
#
# Restrict a machine to a single user
TWO (,hotel,test-domain)
# [...more groups to follow]</programlisting>
<para>Хэрэв та хэрэглэгчдийнхээ дансыг удирдахын тулд
ямар нэг өгөгдлийн санг ашигладаг бол, дээрх буулгалтын эхний
хэсгийг өгөгдлийн сангийнхаа тайлан бэлтгэх багажуудыг
ашиглах үүсгэх боломжтой. Энэ замаар, шинэ хэрэглэгчид машинуудад
хандах эрхийг автоматаар олж авах болно.</para>
<para>Эцэст нь анхааруулж хэлэх нэг зүйл байна: Машин дээр үндэслэсэн
сүлжээний бүлгийг хэрэглэхийг байнга зөвлөхгүй. Хэрэв
оюутны лабораторид зориулсан, хэдэн арван эсвэл хэдэн зуун
нэг ижил машинтай ажиллаж байгаа бол, NIS буулгалтыг тодорхой хэмжээнд барьж
байхын тулд машин дээр үндэслэсэн сүлжээний бүлгийн оронд үүрэг дээр үндэслэсэн
сүлжээний бүлгийг хэрэглэх хэрэгтэй.</para>
</sect2>
<sect2>
<title>Санаж явах чухал зүйлс</title>
<para>NIS орчинд ороод, өөрөөр хийх ёстой хэд хэдэн зүйлс байна.</para>
<itemizedlist>
<listitem>
<para>Лабораторид шинэ хэрэглэгч нэмэх бүрдээ
<emphasis>зөвхөн</emphasis> эзэн NIS серверт нэмэх ёстой,
ба <emphasis>NIS буулгалтыг заавал дахин үүсгэх ёстой</emphasis>.
Хэрэв ингэхээ мартвал, шинэ хэрэглэгч эзэн NIS серверээс
өөр хаашаа ч нэвтэрч чадахгүй болно. Жишээ нь,
бид <username>jsmith</username> гэсэн шинэ хэрэглэгчийг лабораторид нэмэх боллоо:</para>
<screen>&prompt.root; <userinput>pw useradd jsmith</userinput>
&prompt.root; <userinput>cd /var/yp</userinput>
&prompt.root; <userinput>make test-domain</userinput></screen>
<para><command>pw useradd jsmith</command>-н оронд <command>adduser jsmith</command>-г мөн хэрэглэж болно.</para>
</listitem>
<listitem>
<para><emphasis>Администратор эрхтэй дансуудыг NIS буулгалтад оруулах ёсгүй</emphasis>.
Администратор эрхээр орох ёсгүй хэрэглэгчдийн машин дээр администратор эрхтэй
дансууд болон нэвтрэх үгүүдийг тараах хүсэлгүй байгаа биз дээ.</para>
</listitem>
<listitem>
<para><emphasis>NIS эзэн болон зарц серверийн аюулгүй байдлыг хангаж,
ажиллахгүй байх хугацааг багасгах хэрэгтэй</emphasis>. Хэрэв хэн нэг нь
серверт нууцаар нэвтэрч, эсвэл унтрааж орхивол хүмүүсийг лабораторын машинууд руу
нэвтрэх боломжгүй болгож, саад болох болно.</para>
<para>Энэ нь ямар ч төвлөрсөн удирдах системийн
гол сул тал юм. Хэрэв та өөрийн NIS серверийг хамгаалахгүй бол,
та маш олон ууртай хэрэглэгчидтэй таарах болно шүү!</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>NIS v1 нийцтэй байдал</title>
<para> FreeBSD-н <application>ypserv</application> нь NIS v1 харилцагчдад үйлчлэх
зарим дэмжигчтэй ирдэг. FreeBSD-н NIS нь зөвхөн NIS v2 протоколыг хэрэглэдэг,
гэхдээ бусад нь хуучин системүүдтэй нийцтэй ажиллахын тулд
v1 протоколыг дэмждэг байхаар бүтээгдсэн байдаг.
Эдгээр системтэй хамт ирсэн <application>ypbind</application> дэмонууд
хэдийгээр үнэн хэрэг дээрээ хэзээ ч хэрэглэхгүй боловч
NIS v1 сервертэй холболт үүсгэхийг оролддог (ба
v2 серверээс хариу хүлээж авсан ч өргөн цацалт хийж
хайлтаа үргэлжлүүлдэг талтай). Хэдийгээр
ердийн харилцагчийн хүсэлтийг дэмждэг боловч,
<application>ypserv</application>-н энэ хувилбар v1 буулгалтыг зөөх хүсэлттэй ажиллаж чадахгүй;
иймээс, зөвхөн v1 протоколыг дэмждэг хуучин NIS серверүүдтэй
холбоотойгоор эзэн эсвэл зарц байдлаар ажиллаж чадахгүй.
Аз болоход, ийм серверийг одоо хэрэглэж байгаа газар байхгүй.</para>
</sect2>
<sect2 id="network-nis-server-is-client">
<title>NIS Сервер мөртлөө NIS Харилцагч</title>
<para> Сервер машин нь мөн NIS харилцагч байдлаар ажилладаг
олон сервертэй домэйнд <application>ypserv</application>-г ажиллуулахдаа
анхааралтай байх хэрэгтэй. Ийм серверийг өргөн цацалт хийлгэж,
өөр нэг сервертэй холбоо тогтоохыг зөвшөөрөхийн оронд өөрөө өөртэй нь
хүчээр холбох нь ихэвчлэн дээр байдаг. Хэрэв нэг сервер унтарч, бусад
серверүүд түүнээс хамааралтай байх юм бол хачин алдаанууд гарч болзошгүй.
Эцэст нь бүх харилцагчдын хүлээх хугацаа дуусаж,
бүгд өөр сервертэй холбогдохыг оролдох болно. Хэдийгээр бүх серверүүд
холболтуудаа сэргээж буцаад хэвийн байдалдаа орсон ч, саатлаас болж
харилцагчид холбогдож чадахгүй хэвээр байх болно.</para>
<para>Хостыг ямар нэг сервертэй холбогдохыг
<command>ypbind</command> тушаалыг <option>-S</option> тугийн хамт ажиллуулж,
урдаас зааж өгч болно. Хэрэв NIS серверийг дахин ачаалах тоолонд энэ
тушаалыг гараар оруулах хүсэлгүй байгаа бол, дараах мөрүүдийг
өөрийн <filename>/etc/rc.conf</filename> файл дотор нэмээрэй:</para>
<programlisting>nis_client_enable="YES" # run client stuff as well
nis_client_flags="-S <replaceable>NIS domain</replaceable>,<replaceable>server</replaceable>"</programlisting>
<para>Дэлгэрэнгүй мэдээллийг &man.ypbind.8; заавар хуудаснаас үзнэ үү.</para>
</sect2>
<sect2>
<title>Нэвтрэх үгийн хэлбэр</title>
<indexterm>
<primary>NIS</primary>
<secondary>нэвтрэх үгийн хэлбэр</secondary>
</indexterm>
<para>NIS-г зохион байгуулах явцад ихэвчлэн тохиолддог асуудлуудын нэг бол
нэвтрэх үгийн хэлбэрийн нийцгүй байдал юм. Хэрэв таны NIS
сервер DES хувиргалттай нэвтрэх үгийг хэрэглэдэг бол,
зөвхөн DES хэрэглэдэг харилцагчид үйлчлэх чадвартай. Жишээлбэл,
хэрэв сүлжээнд чинь &solaris; NIS харилцагчид байгаа бол,
та бараг л DES хувиргалттай нэвтрэх үг хэрэглэх шаардлагатай гэсэн үг.</para>
<para>Таны сервер болон харилцагчид ямар хэлбэрийн нэвтрэх үг хэрэглэдгийг
шалгахдаа <filename>/etc/login.conf</filename> файлыг үзээрэй. Хэрэв тухайн хост
DES хувиргалттай нэвтрэх үг хэрэглэдэг бол, <literal>default</literal> буюу анхдагч ангилал
нь дараах мөрүүдийг агуулсан байх болно:</para>
<programlisting>default:\
:passwd_format=des:\
:copyright=/etc/COPYRIGHT:\
[Further entries elided]</programlisting>
<para><literal>passwd_format</literal> нь өөр <literal>blf</literal> ба <literal>md5</literal> гэсэн
утгуудыг авч болно (Blowfish болон MD5 хувиргалттай нэвтрэх үгийн хувьд).</para>
<para>Хэрэв та <filename>/etc/login.conf</filename> файлд өөрчлөлт хийсэн бол,
нэвтрэх чадварын санг дахин үүсгэх шаардлагатай. Үүний тулд дараах тушаалыг
<username>root</username> эрхээр өгөх хэрэгтэй:</para>
<screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>
<note><para><filename>/etc/master.passwd</filename> файл дотор аль хэдийн үүссэн нэвтрэх үгийн
хэлбэр нь хэрэглэгч нэвтрэх чадварын сан дахин үүссэнээс хойш анх удаа нэвтрэх
үгээ солих хүртэл өөрчлөгдөхгүй.</para></note>
<para>Мөн, таны сонгосон хэлбэрээр нэвтрэх үгүүдэд
хувиргалт хийгддэг болгохын тулд,
<filename>/etc/auth.conf</filename> файл доторх <literal>crypt_default</literal> утга
таны сонгосон хэлбэрийг хамгийн түрүүнд оруулсан байгаа эсэхийг
шалгах хэрэгтэй. Жишээ нь, DES хувиргалттай нэвтрэх үгийг хэрэглэх үед:</para>
<programlisting>crypt_default = des blf md5</programlisting>
<para>&os; дээр тулгуурласан NIS сервер болон харилцагч бүр дээр дээрх
үйлдлүүдийг хийснээр, нэвтрэх үгийн хэлбэр бүгд таарч байгаа гэдэгт
санаа амар байж болно. Хэрэв NIS харилцагч дээр нэвтэрч ороход асуудал
гарвал, асуудлыг тодруулах нэг газар байна.
Хэрэв та холимог сүлжээний хувьд NIS сервер босгох гэж байгаа бол,
ихэнх систем дээр зайлшгүй байх хамгийн бага стандарт тул,
бүх системүүд дээрээ DES ашиглах хэрэгтэйг санаарай.</para>
</sect2>
</sect1>
<sect1 id="network-dhcp">
<sect1info>
<authorgroup>
<author>
<firstname>Грег</firstname>
<surname>Саттер</surname>
<contrib>Бичсэн </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title>Автомат Сүлжээний Тохиргоо (DHCP)</title>
<sect2>
<title>DHCP гэж юу вэ?</title>
<indexterm>
<primary>Динамик Хостын Тохиргооны Протокол</primary>
<see>DHCP</see>
</indexterm>
<indexterm>
<primary>Internet Systems Consortium (ISC)</primary>
</indexterm>
<para>DHCP, Dynamic Host Configuration Protocol буюу Динамик Хостын Тохиргооны Протокол нь
систем ямар байдлаар сүлжээнд холбогдох,
тухайн сүлжээнд харилцаанд орохын тулд шаардагдах
мэдээллийг хэрхэн олж авахыг зааж өгдөг. FreeBSD-н
6.0-с өмнөх хувилбарууд ISC (Internet Systems Consortium) DHCP харилцагчийг
(&man.dhclient.8;) хэрэглэдэг.
Хамгийн сүүлийн хувилбар дээр OpenBSD&nbsp;3.7-с авсан
OpenBSD-н <command>dhclient</command>-г хэрэглэдэг. Энэ бүлэгт гарах
<command>dhclient</command>-р ISC ба OpenBSD DHCP харилцагчийг хоёуланг
нь төлөөлүүлсэн болно. DHCP серверийн хувьд ISC тархацын
серверийг авч үзэх болно.</para>
</sect2>
<sect2>
<title>Энэ хэсэгт авч үзэх зүйлс</title>
<para>Энэ хэсэгт ISC ба OpenBSD DHCP харилцагчийн харилцагч талыг бүтээж байгаа элементүүд,
болон ISC DHCP системийн сервер талыг бүтээж байгаа элементүүдийг хоёуланг нь
авч үзэх болно. Харилцагч талын програм, <command>dhclient</command>, нь
FreeBSD-тэй нэгдмэл байдлаар ирдэг бол, сервер талын хэсэг нь
<filename role="package">net/isc-dhcp3-server</filename> портоос суулгах боломжтой байдлаар ирдэг.
&man.dhclient.8;, &man.dhcp-options.5;, ба &man.dhclient.conf.5; заавар хуудсууд болон доор өгөгдсөн зөвлөмжүүд
нь хэрэг болно.</para>
</sect2>
<sect2>
<title>Хэрхэн ажилладаг вэ?</title>
<indexterm><primary>UDP</primary></indexterm>
<para>Харилцагч машин дээр <command>dhclient</command> DHCP харилцагчийг
ажиллуулахад, тохиргооны мэдээллийг хүссэн хүсэлтийг цацаж эхэлнэ.
Анхдагч байдлаар, эдгээр хүсэлтүүд нь UDP 68-р портоос гарч, серверийн
UDP 67 порт руу илгээгдэнэ. Сервер харилцагчид IP хаяг болон сүлжээний баг,
чиглүүлэгч, DNS серверийн хаяг зэрэг хэрэгтэй мэдээллийг хариу илгээнэ.
Энэ бүх мэдээллийг DHCP <quote>түрээслэх</quote> хэлбэрээр өгөх ба зөвхөн тодорхой
хугацааны туршид хүчинтэй байна (DHCP серверийг хариуцагч тохируулж өгсөн байна).
Ийм байдлаар, сүлжээнд холбогдохоо больсон харилцагчийн ашиглагдаагүй
IP хаягуудыг автоматаар буцааж авах боломжтой болно.</para>
<para>DHCP харилцагч серверээс өргөн мэдээллийг
авч чадна. Бүрэн жагсаалтыг &man.dhcp-options.5;-с олж үзэж болно.</para>
</sect2>
<sect2>
<title>FreeBSD-тэй нэгдмэл байдал</title>
<para>&os; нь ISC эсвэл OpenBSD DHCP харилцагч,
<command>dhclient</command>-г өөртэйгөө бүрэн нэгтгэсэн байдаг (&os; хувилбараас хамааран).
DHCP сервер ажиллаж байгаа сүлжээнд сүлжээний тохиргоог хийх нарийн
чимхлүүр ажлаас хөнгөвчлөх үүднээс, DHCP харилцагчийг систем суулгагч
болон үндсэн системийн аль алинд хамт оруулж өгсөн байдаг.
<command>dhclient</command> нь FreeBSD-н 3.2-с хойших бүх тархацуудад нэгтгэгдсэн байгаа.</para>
<indexterm>
<primary><application>sysinstall</application></primary>
</indexterm>
<para><application>sysinstall</application> нь DHCP-г дэмждэг. <application>sysinstall</application>-р
сүлжээний интерфэйсийг тохируулахад асуудаг хоёр дахь асуулт бол:
<quote>Та энэ интерфэйсийг DHCP-р тохируулахыг хүсэж байна уу?</quote>.
Зөвшөөрсөн хариулт өгсөн тохиолдолд <command>dhclient</command>-г ажиллуулах бөгөөд,
хэрэв амжилттай бол сүлжээний тохиргоо автоматаар хийгдэнэ.</para>
<para>Систем ачаалах үед DHCP ашигладаг болгохын тулд,
хоёр зүйлийг хийх хэрэгтэй:</para>
<indexterm>
<primary>DHCP</primary>
<secondary>шаардлагууд</secondary>
</indexterm>
<itemizedlist>
<listitem>
<para><devicename>bpf</devicename> төхөөрөмж цөмтэй хамт эмхэтгэгдсэн байх ёстой.
Үүний тулд, <literal>device bpf</literal> мөрийг цөмийн
тохиргооны файлд нэмж бичээд цөмийг дахин бүтээх
хэрэгтэй. Цөмийг бүтээх талаар дэлгэрэнгүй мэдээллийг <xref linkend="kernelconfig">
хэсгээс авна уу.</para>
<para><devicename>bpf</devicename> төхөөрөмж нь FreeBSD-н <filename>GENERAL</filename> цөмийн нэг хэсэг
бөгөөд, DHCP-г ажиллуулахын тулд тусгайлан шинээр цөм бүтээх шаардлагагүй.</para>
<note>
<para>Аюулгүй байдлын талаар сэтгэл зовнидог хүмүүст зөвлөхөд,
<devicename>bpf</devicename> нь пакет шиншлэгчдийг зөв ажиллах боломжийг олгодог
төхөөрөмж болохыг анхааралдаа авна уу (хэдийгээр тэдгээр програм ажиллахын
тулд <username>root</username> эрх хэрэгтэй боловч). DHCP-г ашиглахын тулд
<devicename>bpf</devicename> <emphasis>заавал</emphasis> хэрэгтэй, гэвч хэрэв та аюулгүй байдлыг
маш ихээр анхааралдаа авдаг бол, зөвхөн хэзээ нэгэн цагт DHCP-г
ашиглахын тулд <devicename>bpf</devicename>-г цөмд нэмэх хэрэггүй.</para>
</note>
</listitem>
<listitem>
<para><filename>/etc/rc.conf</filename> файлыг нээгээд дараах мөрийг нэмж бичнэ:</para>
<programlisting>ifconfig_fxp0="DHCP"</programlisting>
<note>
<para><xref linkend="config-network-setup">-д тайлбарласан ёсоор,
<literal>fxp0</literal>-г динамикаар тохируулах гэж байгаа
интерфэйсийн нэрээр сольж бичнэ.</para>
</note>
<para>Хэрэв таны <command>dhclient</command> өөр газар байгаа бол, эсвэл
хэрэв та <command>dhclient</command>-г нэмэлт тугуудын хамт ажиллуулах хүсэлтэй бол,
дараах мөрүүдийг нэмж бичнэ үү (эсвэл шаардлагатай хэсгийг засаж бичнэ үү):</para>
<programlisting>dhclient_program="/sbin/dhclient"
dhclient_flags=""</programlisting>
</listitem>
</itemizedlist>
<indexterm>
<primary>DHCP</primary>
<secondary>сервер</secondary>
</indexterm>
<para>DHCP сервер <application>dhcpd</application> нь портуудын цуглуулгад байгаа
<filename role="package">net/isc-dhcp3-server</filename> портын нэг хэсэг байдлаар ирдэг. Энэ порт нь
ISC DHCP сервер болон түүний баримтуудыг агуулсан байдаг.</para>
</sect2>
<sect2>
<title>Файлууд</title>
<indexterm>
<primary>DHCP</primary>
<secondary>тохиргооны файлууд</secondary>
</indexterm>
<itemizedlist>
<listitem><para><filename>/etc/dhclient.conf</filename></para>
<para><command>dhclient</command> нь <filename>/etc/dhclient.conf</filename> гэсэн тохиргооны
файлыг шаарддаг. Ихэвчлэн энэ файл зөвхөн тайлбаруудаас бүрдэх ба
анхдагч утгууд нь харьцангуй өөрчлөх шаардлагагүйгээр өгөгдсөн байдаг.
Энэ тохиргооны файлыг &man.dhclient.conf.5; заавар хуудсанд тайлбарласан байгаа.</para>
</listitem>
<listitem><para><filename>/sbin/dhclient</filename></para>
<para><command>dhclient</command> нь статикаар холбогдсон байх ба
<filename>/sbin</filename> дотор байрлана. &man.dhclient.8; хуудаснаас
<command>dhclient</command>-н талаар дэлгэрэнгүй мэдээллийг авна уу.</para>
</listitem>
<listitem><para><filename>/sbin/dhclient-script</filename></para>
<para><command>dhclient-script</command> нь зөвхөн FreeBSD-д байдаг, DHCP харилцагчийг
тохируулах зориулалттай тусгай скрипт юм. Энэ скриптийг
&man.dhclient-script.8; заавар хуудсанд тайлбарласан байх ба, ажиллуулахын
тулд хэрэглэгч ямар нэг засвар хийх шаардлагагүй.</para>
</listitem>
<listitem><para><filename>/var/db/dhclient.leases</filename></para>
<para>DHCP харилцагч нь түрээсэлж авсан хаягуудаа агуулсан өгөгдлийн
санг энэ файлд хадгалах бөгөөд бүртгэл маягаар бичдэг. &man.dhclient.leases.5; хэсэгт
илүү дэлгэрэнгүй тайлбар бий.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Гүнзгийрүүлэн унших</title>
<para>DHCP протокол нь бүрэн хэмжээгээр <ulink url="http://www.freesoft.org/CIE/RFC/2131/">RFC 2131</ulink>-д
тодорхойлогдсон байдаг. Нэмэлт эх үүсвэрүүд <ulink url="http://www.dhcp.org/"></ulink>-д мөн бий.</para>
</sect2>
<sect2 id="network-dhcp-server">
<title>DHCP Серверийг Суулгах болон Тохируулах</title>
<sect3>
<title>Энэ хэсэгт авч үзэх зүйлс</title>
<para>Энэ хэсэгт ISC (Internet Systems Consortium) DHCP серверийг
ашиглан FreeBSD системийг хэрхэн DHCP сервер байдлаар ажиллуулах
талаар авч үзэх болно.</para>
<para>Сервер нь FreeBSD-н нэг хэсэг байдлаар ирдэггүй бөгөөд
ийм үйлчилгээ үзүүлэхийн тулд <filename role="package">net/isc-dhcp3-server</filename> портыг
суулгах хэрэгтэй болдог. Портуудын цуглуулгын хэрхэн ашиглах талаар
<xref linkend="ports"> хэсгээс дэлгэрэнгүй мэдээллийг авна уу.</para>
</sect3>
<sect3>
<title>DHCP Серверийг суулгах нь</title>
<indexterm>
<primary>DHCP</primary>
<secondary>суулгах</secondary>
</indexterm>
<para>FreeBSD системийг DHCP сервер байдлаар тохируулахын тулд,
&man.bpf.4; төхөөрөмж цөмд эмхэтгэгдсэн байх ёстой. Үүний тулд,
цөмийн тохиргооны файл дотор <literal>bpf төхөөрөмж</literal>ийг нэмээд цөмийг дахин
бүтээх хэрэгтэй. Цөмийг бүтээх талаар дэлгэрэнгүй мэдээллийг
<xref linkend="kernelconfig"> хэсгээс үзнэ үү.</para>
<para><devicename>bpf</devicename> төхөөрөмж нь FreeBSD-н <filename>GENERAL</filename> цөмийн нэг хэсэг бөгөөд,
DHCP-г ажиллуулахын тулд
тусгайлан шинээр цөм бүтээх шаардлагагүй.</para>
<note>
<para>Аюулгүй байдлын талаар сэтгэл зовнидог хүмүүст зөвлөхөд,
<devicename>bpf</devicename> нь пакет шиншлэгчдийг зөв ажиллах боломжийг олгодог
төхөөрөмж болохыг анхааралдаа авна уу (хэдийгээр тэдгээр програм ажиллахын
тулд <username>root</username> эрх хэрэгтэй боловч). DHCP-г ашиглахын тулд
<devicename>bpf</devicename> <emphasis>заавал</emphasis> хэрэгтэй, гэвч хэрэв та аюулгүй байдлыг
маш ихээр анхааралдаа авдаг бол, зөвхөн хэзээ нэгэн цагт DHCP-г
ашиглахын тулд <devicename>bpf</devicename>-г цөмд нэмэх хэрэггүй.</para>
</note>
<para>Үүний дараа <filename role="package">net/isc-dhcp3-server</filename>
порттой хамт ирсэн жишээ <filename>dhcpd.conf</filename> файлыг засах хэрэгтэй.
Анхдагч байдлаар, <filename>/usr/local/etc/dhcpd.conf.sample</filename> гэсэн файл байх ба
өөрчлөлт хийхийнхээ өмнө энэ файлыг <filename>/usr/local/etc/dhcpd.conf</filename>
нэртэйгээр хуулж тавих хэрэгтэй.</para>
</sect3>
<sect3>
<title>DHCP Серверийг тохируулах</title>
<indexterm>
<primary>DHCP</primary>
<secondary>dhcpd.conf</secondary>
</indexterm>
<para><filename>dhcpd.conf</filename> нь
дэд сүлжээ болон хостуудтай холбоотой өгөгдөл зарлалтаас
бүрдэх ба жишээн дээр тайлбарлавал илүү амархан байх болов уу:</para>
<programlisting>option domain-name "example.com";<co id="domain-name">
option domain-name-servers 192.168.4.100;<co id="domain-name-servers">
option subnet-mask 255.255.255.0;<co id="subnet-mask">
default-lease-time 3600;<co id="default-lease-time">
max-lease-time 86400;<co id="max-lease-time">
ddns-update-style none;<co id="ddns-update-style">
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.129 192.168.4.254;<co id="range">
option routers 192.168.4.1;<co id="routers">
}
host mailhost {
hardware ethernet 02:03:04:05:06:07;<co id="hardware">
fixed-address mailhost.example.com;<co id="fixed-address">
}</programlisting>
<calloutlist>
<callout arearefs="domain-name">
<para>Энэ тохируулга нь анхдагч хайлтын домэйн байдлаар
харилцагчид өгөх домэйныг заана. Энэ талаар дэлгэрэнгүй мэдээллийг
&man.resolv.conf.5; хэсгээс үзнэ үү.</para>
</callout>
<callout arearefs="domain-name-servers">
<para>Энэ тохируулга нь харилцагчийн хэрэглэх ёстой
DNS серверүүдийг таслалаар холбосон жагсаалт байна.</para>
</callout>
<callout arearefs="subnet-mask">
<para>Хэрэглэгчид өгөх сүлжээний багийг заана.</para>
</callout>
<callout arearefs="default-lease-time">
<para>Түрээслэлт (lease) хүчинтэй байх тийм тусгай хугацааг
харилцагч хүсэж болох юм. Хэрэв харилцагч хүсээгүй бол сервер энд заасан дуусах
хугацаагаар (секундээр) түрээс хийх болно.</para>
</callout>
<callout arearefs="max-lease-time">
<para>Серверийн түрээслүүлэх хамгийн дээд хугацааг заана.
Харилцагч үүнээс урт хугацаагаар түрээслэх хүсэлт тавибал
хүсэлтийг хүлээж авах боловч зөвхөн <literal>max-lease-time</literal> секундын туршид
хүчинтэй байна.</para>
</callout>
<callout arearefs="ddns-update-style">
<para>Түрээслэх болон эргүүлж авахад DHCP сервер
DNS-г шинэчлэхийг оролдох шаардлагатай эсэхийг зааж өгнө.
ISC шийдлийн хувьд, энэ тохируулга <emphasis>заавал</emphasis> байх ёстой.</para>
</callout>
<callout arearefs="range">
<para>Харилцагчид оноох IP хаягуудын хүрээг заана. Энэ хүрээнд багтах
IP хаягуудыг харилцагчид өгөх болно.</para>
</callout>
<callout arearefs="routers">
<para>Харилцагчид өгөх анхдагч гарцыг заана.</para>
</callout>
<callout arearefs="hardware">
<para>Хостын MAC хаягийг заана (ингэснээр DHCP сервер тухайн хостыг
хүсэлт тавихад таньж чадна).</para>
</callout>
<callout arearefs="fixed-address">
<para>Хостод тогтмол IP хаяг оноохыг заана.
Энд хостын нэрийг хэрэглэж болохыг тэмдэглэх хэрэгтэй.
DHCP сервер IP хаяг түрээслүүлэх
хариуг өгөхөөс өмнө хост нэрийг тайлах болно.</para>
</callout>
</calloutlist>
<para><filename>dhcpd.conf</filename> файлыг бичиж дууссаны дараа,
<filename>/etc/rc.conf</filename> файл дотор DHCP серверийг идэвхжүүлэх хэрэгтэй,
өөрөөр хэлбэл доорх мөрүүдийг нэмж бичих хэрэгтэй:</para>
<programlisting>dhcpd_enable="YES"
dhcpd_ifaces="dc0"</programlisting>
<para><literal>dc0</literal>-г өөрийн тань DHCP сервер DHCP харилцагчдын хүсэлтийг
хүлээж авах ёстой интерфэйсийн нэрээр (эсвэл интерфэйсүүдийг зайгаар
тусгаарлан) сольж бичих хэрэгтэй.</para>
<para>Дараа нь, доорх тушаалыг өгөн серверийг ажиллуулах хэрэгтэй:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/isc-dhcpd.sh start</userinput></screen>
<para>Серверийнхээ тохиргооны файлд өөрчлөлт оруулах бүрдээ,
<literal>SIGHUP</literal> дохиог <application>dhcpd</application>-д өгөх нь бусад дэмонуудын
хувьд тохиргоог дахин дууддаг шиг биш харин тохиргоог дахин
ачаалах<emphasis>гүй</emphasis> болохыг анхаарах хэрэгтэй. Процессийг зогсоохын
тулд <literal>SIGTERM</literal> дохиог өгөх хэрэгтэй ба дээрх тушаалыг өгөн дахин эхлүүлэх хэрэгтэй.</para>
</sect3>
<sect3>
<title>Файлууд</title>
<indexterm>
<primary>DHCP</primary>
<secondary>тохиргооны файлууд</secondary>
</indexterm>
<itemizedlist>
<listitem><para><filename>/usr/local/sbin/dhcpd</filename></para>
<para><application>dhcpd</application> нь статикаар холбогдсон байх ба
<filename>/usr/local/sbin</filename> дотор байрлана. Порттой хамт суусан
&man.dhcpd.8; заавар хуудаснаас <application>dhcpd</application>-н талаар дэлгэрэнгүй мэдээллийг
авна уу.</para>
</listitem>
<listitem><para><filename>/usr/local/etc/dhcpd.conf</filename></para>
<para><application>dhcpd</application> нь <filename>/usr/local/etc/dhcpd.conf</filename> гэсэн тохиргооны
файлыг шаарддаг. Энэ файл дотор харилцагчид өгөх бүх мэдээллээс гадна
серверийн өөрийн үйл ажиллагаатай холбоотой мэдээлэл байх ёстой. Энэ
тохиргооны файлыг портоос суусан &man.dhcpd.conf.5; заавар хуудсанд тайлбарласан байгаа.</para>
</listitem>
<listitem><para><filename>/var/db/dhcpd.leases</filename></para>
<para>DHCP сервер нь түрээслүүлсэн хаягуудаа агуулсан
өгөгдлийн санг энэ файлд хадгалах бөгөөд бүртгэл маягаар бичдэг.
Портоос суусан &man.dhcpd.leases.5; заавар хуудсанд илүү дэлгэрэнгүй
тайлбар бий.</para>
</listitem>
<listitem><para><filename>/usr/local/sbin/dhcrelay</filename></para>
<para><application>dhcrelay</application>-г нэг DHCP сервер
харилцагчаас хүлээн авсан хүсэлтийг өөр сүлжээнд байгаа
нөгөө DHCP сервер рүү дамжуулдаг, нарийн бүтэцтэй орчинд хэрэглэнэ.
Хэрэв энэ функцыг ашиглах шаардлагатай бол,
<filename role="package">net/isc-dhcp3-relay</filename> портыг суулгаарай.
Порттой хамт ирэх &man.dhcrelay.8; заавар хуудаснаас дэлгэрэнгүй
мэдээллийг авна уу.</para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
</sect1>
<sect1 id="network-dns">
<sect1info>
<authorgroup>
<author>
<firstname>Шерн</firstname>
<surname>Лий</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
<author>
<firstname>Том</firstname>
<surname>Родес</surname>
</author>
<author>
<firstname>Даниэл</firstname>
<surname>Гэрзо</surname>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын </firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title>Домэйн Нэрийн Систем (<acronym>DNS</acronym>)</title>
<sect2>
<title>Удиртгал</title>
<indexterm><primary>BIND</primary></indexterm>
<para>&os; анхдагч байдлаар <acronym>DNS</acronym> протоколын
хамгийн өргөн хэрэглэгддэг хэрэгжүүлэлт болох BIND (Berkeley
Internet Name Domain)-н аль нэг хувилбарыг агуулсан байдаг.
<acronym>DNS</acronym> нь нэрүүдийг <acronym>IP</acronym> хаягууд руу, мөн
эсрэгээр нь буулгахад хэрэглэгддэг протокол юм.
Жишээ нь, <hostid role="fqdn">www.FreeBSD.org</hostid>-г асуусан DNS асуулга явуулахад,
хариуд нь &os; Төсөлийн вэб серверийн <acronym>IP</acronym> хаяг ирэх бол,
<hostid role="fqdn">ftp.FreeBSD.org</hostid>-н хувьд асуулга явуулахад,
хариуд нь харгалзах <acronym>FTP</acronym> машины <acronym>IP</acronym> хаяг ирэх болно.
Яг үүнтэй адилаар эсрэгээр нь хийж болно. Ямар нэг <acronym>IP</acronym>-р асуулга
явуулахад түүний хост нэрийг олж болно. <acronym>DNS</acronym> хайлт хийхийн тулд
тухайн системд домэйн нэрийн сервер ажиллаж байх ёстой.</para>
<para>&os; нь одоо <acronym>BIND</acronym>9
<acronym>DNS</acronym> сервер програмын хамт ирдэг болсон.
Бидний суулгац нь файл системийн шинэчилсэн зохион байгуулалт,
автомат &man.chroot.8; тохиргоо зэрэг аюулгүй байдлыг дээд зэргээр
хангах функцүүдтэй ирдэг.</para>
<indexterm><primary>DNS</primary></indexterm>
<para><acronym>DNS</acronym> бол Интернэт дээр тулгуурласан,
бүрэн эрхт root буюу эх сервер, Top Level Domain буюу Дээд Түвшний Домэйн (<acronym>TLD</acronym>)
сервер, болон домэйн тус бүрийн мэдээллийг агуулж байдаг
бусад жижиг нэрийн серверүүдээс бүтсэн нарийн төвөгтэй
систем юм.</para>
<para>BIND одоо
Internet Systems Consortium
<ulink url="http://www.isc.org/"></ulink>-н мэдэлд байдаг.</para>
</sect2>
<sect2>
<title>Нэр Томъёо</title>
<para>Энэ баримтыг ойлгохын тулд, <acronym>DNS</acronym>-тэй холбоотой
зарим нэр томъёог ойлгосон байх шаардлагатай.</para>
<indexterm><primary>resolver</primary></indexterm>
<indexterm><primary>reverse DNS</primary></indexterm>
<indexterm><primary>root zone</primary></indexterm>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<colspec colwidth="1*">
<colspec colwidth="3*">
<thead>
<row>
<entry>Нэр</entry>
<entry>Тайлбар</entry>
</row>
</thead>
<tbody>
<row>
<entry>Forward буюу Ердийн <acronym>DNS</acronym></entry>
<entry>Хост нэрийг IP хаяг руу буулгана.</entry>
</row>
<row>
<entry>Origin буюу Үүсэл</entry>
<entry>Тухайн бүсийн файлд хамрагдаж байгаа домэйныг заана.</entry>
</row>
<row>
<entry><application>named</application>, BIND</entry>
<entry>&os;-н BIND нэрийн серверийг нэрлэх түгээмэл нэршил.</entry>
</row>
<row>
<entry>Resolver буюу Тайлагч</entry>
<entry>Машин, бүсийн мэдээллийн талаар нэрийн серверээс асуулга
явуулахын тулд ашигладаг системийн процесс.</entry>
</row>
<row>
<entry>Reverse буюу Урвуу <acronym>DNS</acronym></entry>
<entry><acronym>IP</acronym>
хаягийг хост нэр рүү буулгана.</entry>
</row>
<row>
<entry>Root zone буюу Эх бүс</entry>
<entry>Интернэт бүсийн шатлалын эхлэл.
Файл системийн бүх файлууд эх санд харъяалагддаг шиг,
бүх бүсүүд эх бүсэд харъяалагдана.</entry>
</row>
<row>
<entry>Zone буюу Бүс</entry>
<entry>Нэг бүрэн эрхт газраар удирдуулж байгаа
домэйн, дэд домэйн, эсвэл <acronym>DNS</acronym>-н нэг хэсэг.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<indexterm>
<primary>бүсүүд</primary>
<secondary>жишээнүүд</secondary>
</indexterm>
<para>Бүсүүдийн жишээ:</para>
<itemizedlist>
<listitem>
<para><hostid>.</hostid> нь баримтад ихэвчлэн эх бүс гэж заагддаг.</para>
</listitem>
<listitem>
<para><hostid>org.</hostid> бол эх бүсийн доорх Top Level Domain буюу
Дээд Түвшний Домэйн (<acronym>TLD</acronym>).</para>
</listitem>
<listitem>
<para><hostid role="domainname">example.org.</hostid> бол <hostid>org.</hostid> <acronym>TLD</acronym>-н
доорх бүс.</para>
</listitem>
<listitem>
<para><hostid>1.168.192.in-addr.arpa</hostid> бол <hostid role="ipaddr">192.168.1.*</hostid>
<acronym>IP</acronym> хаягийн хүрээнд багтаж байгаа бүх <acronym>IP</acronym>
хаягуудыг агуулсан бүс.</para>
</listitem>
</itemizedlist>
<para>Хост нэр зүүн тал руугаа явах тусам илүү тодорхой
болж байгааг та бүхэн анзаарсан байх. Жишээлбэл, <hostid role="domainname">example.org.</hostid>
нь <hostid>org.</hostid>-с илүү тодорхой, харин <hostid>org.</hostid> нь эх бүсээс
илүү тодорхой байна. Хост нэрийн зохион байгуулалт нь
файл системийнхтэй төстэй: <filename class="directory">/dev</filename> директор нь
эх директорт харъяалагдана, гэх мэт.</para>
</sect2>
<sect2>
<title>Нэрийн Сервер ажиллуулах Шалтгаанууд</title>
<para>Нэрийн Серверүүд ихэвчлэн хоёр янз байна: authoritative буюу бүрэн эрхт нэрийн сервер,
ба caching буюу түр тогтоогч нэрийн сервер.</para>
<para>Бүрэн эрхт нэрийн сервер нь дараах тохиолдлуудад хэрэгтэй:</para>
<itemizedlist>
<listitem>
<para><acronym>DNS</acronym> мэдээллийг өөртөө агуулж, энэ мэдээллийг нийтэд зарлан,
ирсэн асуулгуудад бүрэн эрхтэйгээр хариулах хүсэлтэй үед.</para>
</listitem>
<listitem>
<para>Бүртгэлтэй домэйны хувьд, жишээлбэл <hostid role="domainname">example.org</hostid>,
түүний дор орших хост нэрүүдэд <acronym>IP</acronym> хаяг оноож өгөх хэрэгтэй үед.</para>
</listitem>
<listitem>
<para>Бүлэг <acronym>IP</acronym> хаягуудад урвуу <acronym>DNS</acronym> мэдээлэл хэрэгтэй үед
(<acronym>IP</acronym>-с хост нэр рүү).</para>
</listitem>
<listitem>
<para>Нөөц эсвэл хоёрдогч нэрийн сервер, зарц гэж нэрлэнэ,
асуулгуудад хариулуулах шаардлагатай үед.</para>
</listitem>
</itemizedlist>
<para>Түр тогтоогч нэрийн сервер дараах тохиолдлуудад хэрэгтэй:</para>
<itemizedlist>
<listitem>
<para>Дотоод <acronym>DNS</acronym> сервер нь асуулгын хариуг
түр тогтоосноор гадаад нэрийн серверээс илүү хурдан хариу өгч
байгаа үед.</para>
</listitem>
</itemizedlist>
<para><hostid role="fqdn">www.FreeBSD.org</hostid>-р асуулга явуулсан үед, тайлагч ихэвчлэн
үйлчилгээ авдаг <acronym>ISP</acronym>-нхаа нэрийн серверээс асуугаад хариуг олж авна.
Дотоод, түр тогтоогч <acronym>DNS</acronym> сервер ажиллуулснаар,
асуулгыг гадаад интернэтээс зөвхөн ганц удаа явуулах бөгөөд,
хариуг тогтоож авна. Түүнээс хойших асуулгуудад түр тогтоогч нэрийн сервер
хариулах ба гадагшаа дахин асуулга явуулах шаардлага байхгүй.</para>
</sect2>
<sect2>
<title>Хэрхэн ажилладаг вэ?</title>
<para>&os;-д BIND дэмонг <application>named</application> гэж нэрлэнэ.</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>Файл</entry>
<entry>Тайлбар</entry>
</row>
</thead>
<tbody>
<row>
<entry>&man.named.8;</entry>
<entry>BIND дэмон.</entry>
</row>
<row>
<entry>&man.rndc.8;</entry>
<entry>Нэрийн серверийг хянах хэрэгсэл.</entry>
</row>
<row>
<entry><filename class="directory">/etc/namedb</filename></entry>
<entry>BIND-н бүсийн мэдээлэл хадгалагдаж байгаа сан.</entry>
</row>
<row>
<entry><filename>/etc/namedb/named.conf</filename></entry>
<entry>дэмоны тохиргооны файл.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Тухайн бүс сервер дээр хэрхэн тохируулагдсанаас хамаарч
энэ бүстэй хамааралтай файлууд <filename class="directory">/etc/namedb</filename>
директорын <filename class="directory">master</filename>,
<filename class="directory">slave</filename>, эсвэл <filename class="directory">dynamic</filename>
гэсэн дэд сангуудад байрлана. Эдгээр файлуудад
гадны асуулгад хариу болгон өгөх <acronym>DNS</acronym> мэдээллүүд
байрлана.</para>
</sect2>
<sect2>
<title>BIND-г ажиллуулах нь</title>
<indexterm>
<primary>BIND</primary>
<secondary>ажиллуулах</secondary>
</indexterm>
<para>BIND нь анхдагч байдлаар суучихсан ирдэг тул тохируулахад
хялбар байдаг.</para>
<para><application>named</application>-н анхдагч тохиргоо нь
&man.chroot.8; орчинд ажиллах, тайлагч нэрийн сервер байдлаар хийгдсэн байдаг
бөгөөд локал IPv4 loopback хаяг (127.0.0.1) дээр ажиллахаар
хязгаарлагдсан байдаг.
Энэ тохиргоогоор серверийг ажиллуулахын тулд дараах тушаалыг өгөх хэрэгтэй:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/named onestart</userinput></screen>
<para><application>named</application> дэмонг систем ачаалах үед
ажиллуулдаг болгохын тулд <filename>/etc/rc.conf</filename> дотор дараах мөрүүдийг нэмэх
хэрэгтэй:</para>
<programlisting>named_enable="YES"</programlisting>
<para>Мэдээж <filename>/etc/namedb/named.conf</filename> файл дотор
өөр олон тохируулгууд байгаа боловч энэ баримтын мэдлээс халих
тул энд дурдсангүй. Хэрэв &os; дээрх <application>named</application>-н эхлэл
тохируулгуудын талаар сонирхож байгаа бол <filename>/etc/defaults/rc.conf</filename>
дотор байгаа <literal>named_<replaceable>*</replaceable></literal> тугуудыг нэг ороод үзээрэй.
Мөн &man.rc.conf.5; заавар хуудаснаас тусламж авч болно. <xref linkend="configtuning-rcd">
хэсгийг уншихад илүүдэхгүй.</para>
</sect2>
<sect2>
<title>Тохиргооны файлууд</title>
<indexterm>
<primary>BIND</primary>
<secondary>тохиргооны файлууд</secondary>
</indexterm>
<para><application>named</application>-н тохиргооны файлууд нь
<filename class="directory">/etc/namedb</filename> директор дотор байрлах ба
хэрэв хялбар тайлагчаас өөр түвшинд ажиллах хэрэгтэй бол
ажиллуулахаасаа өмнө тохиргооны файлд засвар хийх хэрэгтэй.
Ихэнх тохиргоог энэ сан дотор гүйцэтгэнэ.</para>
<sect3>
<title><filename>/etc/namedb/named.conf</filename></title>
<programlisting>// &dollar;FreeBSD&dollar;
//
// Refer to the named.conf(5) and named(8) man pages, and the documentation
// in /usr/share/doc/bind9 for more details.
//
// If you are going to set up an authoritative server, make sure you
// understand the hairy details of how DNS works. Even with
// simple mistakes, you can break connectivity for affected parties,
// or cause huge amounts of useless Internet traffic.
options {
// Relative to the chroot directory, if any
directory "/etc/namedb";
pid-file "/var/run/named/pid";
dump-file "/var/dump/named_dump.db";
statistics-file "/var/stats/named.stats";
// If named is being used only as a local resolver, this is a safe default.
// For named to be accessible to the network, comment this option, specify
// the proper IP address, or delete this option.
listen-on { 127.0.0.1; };
// If you have IPv6 enabled on this system, uncomment this option for
// use as a local resolver. To give access to the network, specify
// an IPv6 address, or the keyword "any".
// listen-on-v6 { ::1; };
// These zones are already covered by the empty zones listed below.
// If you remove the related empty zones below, comment these lines out.
disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below. This will make you
// benefit from its cache, thus reduce overall DNS traffic in the Internet.
/*
forwarders {
127.0.0.1;
};
*/
// If the 'forwarders' clause is not empty the default is to 'forward first'
// which will fall back to sending a query from your local server if the name
// servers in 'forwarders' do not have the answer. Alternatively you can
// force your name server to never initiate queries of its own by enabling the
// following line:
// forward only;
// If you wish to have forwarding configured automatically based on
// the entries in /etc/resolv.conf, uncomment the following line and
// set named_auto_forward=yes in /etc/rc.conf. You can also enable
// named_auto_forward_only (the effect of which is described above).
// include "/etc/namedb/auto_forward.conf";</programlisting>
<para>Тайлбар дээр хэлсэнчлэн
дээд гарцын түр тогтоогчоос хүртэхийн тулд
<literal>forwarders</literal>-г идэвхжүүлж болох юм.
Энгийн үед, нэрийн сервер нь хариултыг олтлоо давталттай байдлаар
хэд хэдэн нэрийн серверүүдээр дамжин асууна.
Энэ тохируулгыг идэвхжүүлснээр, дээд гарцынхаа нэрийн серверээс
(эсвэл зааж өгсөн нэрийн сервер) хамгийн түрүүнд асууж, энэ серверийн
түр санах ойд байгаа мэдээллээс хүртэхийг эрмэлзэнэ.
Хэрэв дээд гарцын нэрийн сервер нь олон асуулгад хариулдаг, хурдан үйлчилдэг
сервер байвал дээрх тохируулгыг идэвхжүүлсний үр ашиг гарна.</para>
<warning>
<para><hostid role="ipaddr">127.0.0.1</hostid> энд ажиллах<emphasis>гүй</emphasis>. Энэ
<acronym>IP</acronym> хаягийг өөрийн дээд гарцын нэрийн серверээр сольж бичнэ үү.</para>
</warning>
<programlisting> /*
Modern versions of BIND use a random UDP port for each outgoing
query by default in order to dramatically reduce the possibility
of cache poisoning. All users are strongly encouraged to utilize
this feature, and to configure their firewalls to accommodate it.
AS A LAST RESORT in order to get around a restrictive firewall
policy you can try enabling the option below. Use of this option
will significantly reduce your ability to withstand cache poisoning
attacks, and should be avoided if at all possible.
Replace NNNNN in the example with a number between 49160 and 65530.
*/
// query-source address * port NNNNN;
};
// If you enable a local name server, don't forget to enter 127.0.0.1
// first in your /etc/resolv.conf so this server will be queried.
// Also, make sure to enable it in /etc/rc.conf.
// The traditional root hints mechanism. Use this, OR the slave zones below.
zone "." { type hint; file "named.root"; };
/* Slaving the following zones from the root name servers has some
significant advantages:
1. Faster local resolution for your users
2. No spurious traffic will be sent from your network to the roots
3. Greater resilience to any potential root server failure/DDoS
On the other hand, this method requires more monitoring than the
hints file to be sure that an unexpected failure mode has not
incapacitated your server. Name servers that are serving a lot
of clients will benefit more from this approach than individual
hosts. Use with caution.
To use this mechanism, uncomment the entries below, and comment
the hint zone above.
*/
/*
zone "." {
type slave;
file "slave/root.slave";
masters {
192.5.5.241; // F.ROOT-SERVERS.NET.
};
notify no;
};
zone "arpa" {
type slave;
file "slave/arpa.slave";
masters {
192.5.5.241; // F.ROOT-SERVERS.NET.
};
notify no;
};
zone "in-addr.arpa" {
type slave;
file "slave/in-addr.arpa.slave";
masters {
192.5.5.241; // F.ROOT-SERVERS.NET.
};
notify no;
};
*/
/* Serving the following zones locally will prevent any queries
for these zones leaving your network and going to the root
name servers. This has two significant advantages:
1. Faster local resolution for your users
2. No spurious traffic will be sent from your network to the roots
*/
// RFC 1912
zone "localhost" { type master; file "master/localhost-forward.db"; };
zone "127.in-addr.arpa" { type master; file "master/localhost-reverse.db"; };
zone "255.in-addr.arpa" { type master; file "master/empty.db"; };
// RFC 1912-style zone for IPv6 localhost address
zone "0.ip6.arpa" { type master; file "master/localhost-reverse.db"; };
// "This" Network (RFCs 1912 and 3330)
zone "0.in-addr.arpa" { type master; file "master/empty.db"; };
// Private Use Networks (RFC 1918)
zone "10.in-addr.arpa" { type master; file "master/empty.db"; };
zone "16.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "17.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "18.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "19.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "20.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "21.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "22.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "23.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "24.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "25.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "26.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "27.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "28.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "29.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "30.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "31.172.in-addr.arpa" { type master; file "master/empty.db"; };
zone "168.192.in-addr.arpa" { type master; file "master/empty.db"; };
// Link-local/APIPA (RFCs 3330 and 3927)
zone "254.169.in-addr.arpa" { type master; file "master/empty.db"; };
// TEST-NET for Documentation (RFC 3330)
zone "2.0.192.in-addr.arpa" { type master; file "master/empty.db"; };
// Router Benchmark Testing (RFC 3330)
zone "18.198.in-addr.arpa" { type master; file "master/empty.db"; };
zone "19.198.in-addr.arpa" { type master; file "master/empty.db"; };
// IANA Reserved - Old Class E Space
zone "240.in-addr.arpa" { type master; file "master/empty.db"; };
zone "241.in-addr.arpa" { type master; file "master/empty.db"; };
zone "242.in-addr.arpa" { type master; file "master/empty.db"; };
zone "243.in-addr.arpa" { type master; file "master/empty.db"; };
zone "244.in-addr.arpa" { type master; file "master/empty.db"; };
zone "245.in-addr.arpa" { type master; file "master/empty.db"; };
zone "246.in-addr.arpa" { type master; file "master/empty.db"; };
zone "247.in-addr.arpa" { type master; file "master/empty.db"; };
zone "248.in-addr.arpa" { type master; file "master/empty.db"; };
zone "249.in-addr.arpa" { type master; file "master/empty.db"; };
zone "250.in-addr.arpa" { type master; file "master/empty.db"; };
zone "251.in-addr.arpa" { type master; file "master/empty.db"; };
zone "252.in-addr.arpa" { type master; file "master/empty.db"; };
zone "253.in-addr.arpa" { type master; file "master/empty.db"; };
zone "254.in-addr.arpa" { type master; file "master/empty.db"; };
// IPv6 Unassigned Addresses (RFC 4291)
zone "1.ip6.arpa" { type master; file "master/empty.db"; };
zone "3.ip6.arpa" { type master; file "master/empty.db"; };
zone "4.ip6.arpa" { type master; file "master/empty.db"; };
zone "5.ip6.arpa" { type master; file "master/empty.db"; };
zone "6.ip6.arpa" { type master; file "master/empty.db"; };
zone "7.ip6.arpa" { type master; file "master/empty.db"; };
zone "8.ip6.arpa" { type master; file "master/empty.db"; };
zone "9.ip6.arpa" { type master; file "master/empty.db"; };
zone "a.ip6.arpa" { type master; file "master/empty.db"; };
zone "b.ip6.arpa" { type master; file "master/empty.db"; };
zone "c.ip6.arpa" { type master; file "master/empty.db"; };
zone "d.ip6.arpa" { type master; file "master/empty.db"; };
zone "e.ip6.arpa" { type master; file "master/empty.db"; };
zone "0.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "1.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "2.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "3.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "4.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "5.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "6.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "7.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "8.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "9.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "a.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "b.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "0.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "1.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "2.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "3.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "4.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "5.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "6.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "7.e.f.ip6.arpa" { type master; file "master/empty.db"; };
// IPv6 ULA (RFC 4193)
zone "c.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "d.f.ip6.arpa" { type master; file "master/empty.db"; };
// IPv6 Link Local (RFC 4291)
zone "8.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "9.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "a.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "b.e.f.ip6.arpa" { type master; file "master/empty.db"; };
// IPv6 Deprecated Site-Local Addresses (RFC 3879)
zone "c.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "d.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "e.e.f.ip6.arpa" { type master; file "master/empty.db"; };
zone "f.e.f.ip6.arpa" { type master; file "master/empty.db"; };
// IP6.INT is Deprecated (RFC 4159)
zone "ip6.int" { type master; file "master/empty.db"; };
// NB: Do not use the IP addresses below, they are faked, and only
// serve demonstration/documentation purposes!
//
// Example slave zone config entries. It can be convenient to become
// a slave at least for the zone your own domain is in. Ask
// your network administrator for the IP address of the responsible
// master name server.
//
// Do not forget to include the reverse lookup zone!
// This is named after the first bytes of the IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended, or ".IP6.ARPA" for IPv6.
//
// Before starting to set up a master zone, make sure you fully
// understand how DNS and BIND work. There are sometimes
// non-obvious pitfalls. Setting up a slave zone is usually simpler.
//
// NB: Don't blindly enable the examples below. :-) Use actual names
// and addresses instead.
/* An example dynamic zone
key "exampleorgkey" {
algorithm hmac-md5;
secret "sf87HJqjkqh8ac87a02lla==";
};
zone "example.org" {
type master;
allow-update {
key "exampleorgkey";
};
file "dynamic/example.org";
};
*/
/* Example of a slave reverse zone
zone "1.168.192.in-addr.arpa" {
type slave;
file "slave/1.168.192.in-addr.arpa";
masters {
192.168.1.1;
};
};
*/</programlisting>
<para><filename>named.conf</filename> доторх эдгээр жишээнүүд нь
ердийн болон урвуу бүсийн зарц бүртгэлүүд болно.</para>
<para>Шинэ бүс нэмэхдээ, <filename>named.conf</filename> файл дотор шинэ бүртгэл
оруулах хэрэгтэй.</para>
<para>Жишээ нь, <hostid role="domainname">example.org</hostid> домэйны хувьд
хамгийн хялбар бүртгэл дараах байдалтай байна:</para>
<programlisting>zone "example.org" {
type master;
file "master/example.org";
};</programlisting>
<para>Энэ бүс нь эзэн бүс болохыг <option>type</option> илэрхийллээс харж болно.
Мөн бүсийн мэдээллийг <filename>/etc/namedb/master/example.org</filename> файл дотор агуулж байгааг
<option>file</option> илэрхийллээс харж болно.</para>
<programlisting>zone "example.org" {
type slave;
file "slave/example.org";
};</programlisting>
<para>Зарц бүсийн хувьд, тухайн бүсийн хувьд бүсийн мэдээлэл
эзэн нэрийн серверээс зөөгдөж ирэх ба зааж өгсөн файлд хадгалагдана.
Эзэн сервер унтарсан эсвэл холбоо тогтоох боломжгүй болбол,
зарц нэрийн серверт бүсийн мэдээлэл байгаа тул асуулгуудад хариулах
чадвартай байна.</para>
</sect3>
<sect3>
<title>Бүсийн Файлууд</title>
<indexterm>
<primary>BIND</primary>
<secondary>бүсийн файлууд</secondary>
</indexterm>
<para><hostid role="domainname">example.org</hostid> домэйны хувьд жишээ эзэн бүсийн файлыг
дор үзүүлэв (<filename>/etc/namedb/master/example.org</filename> файл):</para>
<programlisting>&dollar;TTL 3600 ; 1 hour default TTL
example.org. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
300 ; Negative Reponse TTL
)
; DNS Servers
IN NS ns1.example.org.
IN NS ns2.example.org.
; MX Records
IN MX 10 mx.example.org.
IN MX 20 mail.example.org.
IN A 192.168.1.1
; Machine Names
localhost IN A 127.0.0.1
ns1 IN A 192.168.1.2
ns2 IN A 192.168.1.3
mx IN A 192.168.1.4
mail IN A 192.168.1.5
; Aliases
www IN CNAME example.org.</programlisting>
<para><quote>.</quote> тэмдэгтээр төгссөн хост нэрүүд нь жинхэнэ хост нэрүүд бөгөөд
<quote>.</quote> тэмдэгтээр төгсөөгүй нэрүүдэд үүсэл залгагдахыг анхаарна уу.
Жишээлбэл, <literal>ns1</literal> нь <literal>ns1.<replaceable>example.org.</replaceable></literal>-руу
хөрвүүлэгдэх болно.</para>
<para>Бүсийн файл дараах хэлбэртэй байна:</para>
<programlisting>recordname IN recordtype value</programlisting>
<indexterm>
<primary>DNS</primary>
<secondary>бичлэгүүд</secondary>
</indexterm>
<para>Хамгийн өргөн хэрэглэгддэг DNS бичлэгүүд:</para>
<variablelist>
<varlistentry>
<term>SOA</term>
<listitem><para>start of zone authority буюу бүсийн бүрэн эрхт мэдээллийн эхлэл</para></listitem>
</varlistentry>
<varlistentry>
<term>NS</term>
<listitem><para>бүрэн эрхт нэрийн сервер</para></listitem>
</varlistentry>
<varlistentry>
<term>A</term>
<listitem><para>хостын хаяг</para></listitem>
</varlistentry>
<varlistentry>
<term>CNAME</term>
<listitem><para>хуурамч дүрд өгөх хүлээн зөвшөөрөгдсөн нэр</para></listitem>
</varlistentry>
<varlistentry>
<term>MX</term>
<listitem><para>захидал солилцогч</para></listitem>
</varlistentry>
<varlistentry>
<term>PTR</term>
<listitem><para>домэйн нэрийг заагч (урвуу DNS-д хэрэглэнэ)
</para></listitem>
</varlistentry>
</variablelist>
<programlisting>example.org. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh after 3 hours
3600 ; Retry after 1 hour
604800 ; Expire after 1 week
300 ) ; Negative Reponse TTL</programlisting>
<variablelist>
<varlistentry>
<term><hostid role="domainname">example.org.</hostid></term>
<listitem>
<para>домэйн нэр, мөн энэ бүсийн файлын хувьд үүсэл
болно.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><hostid role="fqdn">ns1.example.org.</hostid></term>
<listitem>
<para>энэ бүсийн гол/бүрэн эрхт нэрийн
сервер.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>admin.example.org.</literal></term>
<listitem>
<para>энэ бүсийг хариуцагч хүн, <quote>@</quote> тэмдэгтийг нь
орлуулсан цахим захидлын хаяг.
(<email>admin@example.org</email> нь <literal>admin.example.org</literal> болно)</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>2006051501</literal></term>
<listitem>
<para>Файлын сериал дугаар. Бүсийн файлд өөрчлөлт оруулах болгонд
энэ дугаарыг нэмэгдүүлэх шаардлагатай. Одоо цагт ихэнх админууд энэ сериал дугаарыг
<literal>yyyymmddrr</literal> хэлбэрээр хэрэглэх болсон. <literal>2006051501</literal> гэдэг нь
хамгийн сүүлд 05/15/2006-нд засвар хийсэн, хамгийн сүүлийн <literal>01</literal> гэдэг нь
энэ өдөр хийгдсэн хамгийн анхны засвар гэдгийг илтгэнэ. Энэ сериал дугаар
нь зарц серверүүдэд бүсийн мэдээлэл өөрчлөгдсөн талаар мэдээлэл өгдөг тул их чухал зүйл
байгаа юм.</para>
</listitem>
</varlistentry>
</variablelist>
<programlisting> IN NS ns1.example.org.</programlisting>
<para>Энэ бол NS бичлэг. Тухайн бүсийн хувьд бүрэн эрхт хариултыг
өгч чадах сервер бүрийн хувьд энэ бичлэг байх ёстой.</para>
<programlisting>localhost IN A 127.0.0.1
ns1 IN A 192.168.1.2
ns2 IN A 192.168.1.3
mx IN A 192.168.1.4
mail IN A 192.168.1.5</programlisting>
<para>A бичлэг нь машины нэрийг заана. Дээр үзүүлсэнчлэн,
<hostid role="fqdn">ns1.example.org</hostid> нь <hostid role="ipaddr">192.168.1.2</hostid>-руу буулгагдана.
</para>
<programlisting> IN A 192.168.1.1</programlisting>
<para>Энэ мөр нь <hostid role="ipaddr">192.168.1.1</hostid> гэсэн IP хаягийг
үүсэлд оноож байна, бидний жишээн дээр <hostid role="domainname">example.org</hostid>.</para>
<programlisting>www IN CNAME @</programlisting>
<para>Хүлээн зөвшөөрөгдсөн нэрийн бичлэг нь машинд хуурамч дүр
өгөхөд хэрэглэгдэнэ. Энэ жишээн дээр, <hostid>www</hostid> нь
<hostid role="domainname">example.org</hostid> (<hostid role="ipaddr">192.168.1.1</hostid>) гэсэн домэйн нэртэй
<quote>master</quote> машины хуурамч дүрийн нэр юм. CNAME-г тухайн хостын нэрийн хувьд
өөр төрлийн бичлэгтэй хэзээ ч цуг хэрэглэж болохгүй.</para>
<indexterm>
<primary>MX бичлэг</primary>
</indexterm>
<programlisting> IN MX 10 mail.example.org.</programlisting>
<para>MX бичлэг нь аль захидлын серверүүд тухайн бүсийн захидлыг
хүлээж авах үүрэгтэй болохыг зааж өгнө. <hostid role="fqdn">mail.example.org</hostid>
нь захидлын серверийн хост нэр бөгөөд 10 нь энэ захидлын серверийн
зэрэглэлийг зааж байна.</para>
<para>Нэг бүсэд 10, 20 гэх мэт ялгаатай зэрэглэлтэй
хэд хэдэн захидлын сервер байж болно. <hostid role="domainname">example.org</hostid>
домэйн руу захидал явуулах гэж байгаа сервер эхлээд
хамгийн өндөр зэрэглэлтэй MX сервертэй (хамгийн бага зэрэглэлийн дугаартай), дараа нь дараагийн хамгийн өндөр зэрэглэлтэй
сервертэй гэх мэтчилэн захидлыг явуулж чадтал дарааллаар нь холбоо тогтооно.</para>
<para>in-addr.arpa бүсийн файл (урвуу DNS) нь ижил хэлбэртэй байна. Ганцхан ялгаа нь
A болон CNAME бичлэгийн оронд PTR бичлэгийг хэрэглэнэ.
</para>
<programlisting>$TTL 3600
1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
2006051501 ; Serial
10800 ; Refresh
3600 ; Retry
604800 ; Expire
300 ) ; Negative Reponse TTL
IN NS ns1.example.org.
IN NS ns2.example.org.
1 IN PTR example.org.
2 IN PTR ns1.example.org.
3 IN PTR ns2.example.org.
4 IN PTR mx.example.org.
5 IN PTR mail.example.org.</programlisting>
<para>Энэ файлд, жишээ домэйны IP-с хост нэр рүү буулгасан
зохих шаардлагатай буулгалтуудыг үзүүлсэн байна.</para>
<para>PTR бичлэгийн баруун талын бүх нэрс төгссөн байх
ёстой (өөрөөр хэлбэл <quote>.</quote>-ээр төгссөн
байна).</para>
</sect3>
</sect2>
<sect2>
<title>Түр тогтоогч Нэрийн Сервер (Caching Name Server)</title>
<indexterm>
<primary>BIND</primary>
<secondary>түр тогтоогч нэрийн сервер</secondary>
</indexterm>
<para>Түр тогтоогч нэрийн сервер гэдэг нь
рекурсив хүсэлтэд хариу өгөх гол үүрэгтэй нэрийн серверийг хэлнэ.
Ийм төрлийн сервер нь зөвхөн асуулга явуулах бөгөөд
хариултыг дараа хэрэглэхээр тогтоож авдаг.</para>
</sect2>
<sect2>
<title>Аюулгүй байдал</title>
<para>Хэдийгээр BIND нь хамгийн өргөн хэрэглэгддэг DNS сервер боловч,
аюулгүй байдалтай холбоотой асуудлууд байнга тулгардаг.
Гадны халдлагад өртөж болзошгүй аюулгүй байдлын цоорхой заримдаа
олддог.</para>
<para>Хэдийгээр &os; <application>named</application>-г автоматаар &man.chroot.8; орчинд
оруулдаг боловч; <acronym>DNS</acronym> халдлагад ашиглаж болохуйц
хэд хэдэн механизмууд байсаар байна.</para>
<para><ulink url="http://www.cert.org/">CERT</ulink>-с гаргадаг аюулгүй байдлын
санамжуудыг уншихыг зөвлөж байна. Мөн &a.security-notifications;-д бүртгүүлж,
шинээр гарч байгаа Интернэт болон &os;-н аюулгүй байдлын асуудлуудын
талаар мэдээлэлтэй байхыг зөвлөе.</para>
<tip>
<para>Хэрэв ямар нэгэн асуудал тулгарвал,
эхийг байнга шинэчилж, <application>named</application>-г шинээр бүтээх нь алдаа болохгүй.</para>
</tip>
</sect2>
<sect2>
<title>Гүнзгийрүүлэн унших</title>
<para>BIND/<application>named</application> заавар хуудсууд:
&man.rndc.8; &man.named.8; &man.named.conf.5;</para>
<itemizedlist>
<listitem>
<para><ulink
url="https://www.isc.org/software/bind">ISC BIND-н Албан ёсны Хуудас</ulink></para>
</listitem>
<listitem>
<para><ulink
url="https://www.isc.org/software/guild">ISC BIND-н Албан ёсны Хэлэлцүүлэг</ulink></para>
</listitem>
<listitem>
<para><ulink url="http://www.oreilly.com/catalog/dns5/">O'Reilly
"DNS ба BIND" 5 дахь Хэвлэлт</ulink></para>
</listitem>
<listitem>
<para><ulink
url="http://www.rfc-editor.org/rfc/rfc1034.txt">RFC1034
- Домэйн Нэрүүд - Зарчмууд болон Боломжууд</ulink></para>
</listitem>
<listitem>
<para><ulink
url="http://www.rfc-editor.org/rfc/rfc1035.txt">RFC1035
- Домэйн Нэрүүд - Хэрэгжүүлэлт болон Үзүүлэлтүүд</ulink></para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="network-apache">
<sect1info>
<authorgroup>
<author>
<firstname>Мюррей</firstname>
<surname>Стөүкли</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title>Apache HTTP Сервер</title>
<indexterm><primary>вэб серверүүд</primary>
<secondary>зохион байгуулах</secondary></indexterm>
<indexterm><primary>Apache</primary></indexterm>
<sect2>
<title>Удиртгал</title>
<para>Дэлхийн хамгийн их ачаалалтай ажилладаг
зарим вэб сайтууд &os; дээр ажилладаг. Интернэтэд ажиллаж байгаа
вэб серверүүдийн олонхи нь <application>Apache HTTP Сервер</application>ийг ашиглаж
байна. <application>Apache</application> програм хангамжийн багц таны FreeBSD суулгах дискэнд
орсон байгаа. Хэрэв та &os;-г анх суулгахдаа <application>Apache</application>-г хамт
суулгаагүй бол <filename role="package">www/apache13</filename> эсвэл <filename role="package">www/apache20</filename>
портоос суулгаж болно.</para>
<para><application>Apache</application> нэгэнт амжилттай суусан бол түүнийг тохируулах
шаардлагатай.</para>
<note><para><application>Apache HTTP Server</application>-н 1.3.X хувилбар нь
&os;-д хамгийн өргөн хэрэглэгддэг тул бид энэ хэсэгт энэ хувилбарыг үзэх болно.
<application>Apache</application>&nbsp;2.X-д олон шинэ технологи нэвтэрсэн боловч
бид энэ талаар энд үзэхгүй. <application>Apache</application>&nbsp;2.X-н талаар
дэлгэрэнгүй мэдээллийг <ulink url="http://httpd.apache.org/"></ulink> хаягаар орж үзнэ үү.</para></note>
</sect2>
<sect2>
<title>Тохиргоо</title>
<indexterm><primary>Apache</primary>
<secondary>тохиргооны файл</secondary></indexterm>
<para>&os; дээрх <application>Apache HTTP Сервер</application>ийн гол тохиргооны файл
бол <filename>/usr/local/etc/apache/httpd.conf</filename> юм. Энэ файлд,
&unix;-н текст тохиргооны файлын нэгэн адил тайлбар мөрүүдийн өмнө
<literal>#</literal> тэмдэгтийг хэрэглэдэг. Бүх боломжит тохируулгуудын
талаар дэлгэрүүлж тайлбарлах нь энэ номын хүрээнээс халих тул,
хамгийн их өөрчлөлт хийгддэг директивүүдийг энд авч үзье.</para>
<variablelist>
<varlistentry>
<term><literal>ServerRoot "/usr/local"</literal></term>
<listitem>
<para>Энэ директив <application>Apache</application> суулгацын
анхдагч директор шатлалын эхийг зааж өгнө. Хоёртын файлууд
серверийн эх директорын
<filename class="directory">bin</filename> ба <filename class="directory">sbin</filename> дэд директоруудад,
тохиргооны файлууд <filename class="directory">etc/apache</filename> дэд директорт байрлана.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ServerAdmin you@your.address</literal></term>
<listitem>
<para>Сервертэй холбоотой асуудлуудын талаар
илгээх цахим захидлын хаягийг заана. Энэ хаяг алдааны хуудсууд гэх зэрэг
сервер талаас автоматаар үүсгэгддэг зарим хуудсууд дээр
бичигдэх болно.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>ServerName www.example.com</literal></term>
<listitem>
<para><literal>ServerName</literal> нь хост дээр тохируулагдсан хост нэрээс
өөр нэрийг сервертээ өгөх боломжийг танд олгоно (өөрөөр хэлбэл, хостын жинхэнэ
хост нэрийн оронд <hostid>www</hostid>-г хэрэглэх). Энэ нэрээр таны сервер харилцагч
нартай харилцах болно.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>DocumentRoot "/usr/local/www/data"</literal></term>
<listitem>
<para><literal>DocumentRoot</literal>: Энэ директорт байгаа вэб баримтуудыг
харилцагч нарт үзүүлэх болно. Анхдагч байдлаар, бүх хүсэлтүүд энэ
директорт өгөгдөнө. Гэвч симбол холбоосууд болон хуурамч дүрүүдийг
ашиглан өөр газар руу зааж өгч болно.</para>
</listitem>
</varlistentry>
</variablelist>
<para><application>Apache</application>-н тохиргооны файлд ямар нэг
өөрчлөлт хийхээсээ өмнө нөөц хуулбарыг авч үлдэхээ мартуузай.
Тохиргоо хийж дууссан бол одоо <application>Apache</application>-г ажиллуулах
хэрэгтэй.</para>
<!-- sect3 for performance tuning directives? maxservers minservers -->
<!-- etc..?? -->
<!-- Advanced configuration section.
Performance tuning directives.
Log file format -->
</sect2>
<sect2>
<title><application>Apache</application>-г ажиллуулах нь</title>
<indexterm><primary>Apache</primary>
<secondary>эхлүүлэх ба зогсоох</secondary></indexterm>
<para>Бусад олон сүлжээний орчны серверүүд
<application>inetd</application> супер серверээс ажилладаг бол,
<application>Apache</application> тэгдэггүй. Харилцагч вэб хөтчүүдээс
ирэх HTTP хүсэлтүүдэд хариулахдаа илүү өндөр үзүүлэлттэй ажиллуулахын тулд
түүнийг бие даан ажилладаг байхаар тохируулсан байдаг.
Эхлүүлэх, зогсоох болон дахин эхлүүлэх зэрэг үйлдлийг
аль болох хялбар болгохын тулд бүрхүүлийн скрипт хялбаршуулагч
хамт ирдэг. <application>Apache</application>-г анх удаа эхлүүлэхийн тулд, дараах
тушаалыг өгнө:</para>
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl start</userinput></screen>
<para>Хүссэн үедээ серверийг дараах тушаалаар зогсооно:</para>
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl stop</userinput></screen>
<para>Тохиргооны файлд өөрчлөлт оруулсны дараа,
серверийг дахин эхлүүлэх шаардлагатай:</para>
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl restart</userinput></screen>
<para>Тогтсон холболтуудыг таслалгүйгээр <application>Apache</application>-г
дахин эхлүүлэхийн тулд дараах тушаалыг өгнө:</para>
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl graceful</userinput></screen>
<para>Нэмэлт мэдээллийг &man.apachectl.8; заавар хуудаснаас авна уу.</para>
<para>Систем ачаалах үед <application>Apache</application>-г эхлүүлэхийн тулд
дараах мөрүүдийг <filename>/etc/rc.conf</filename> файлд нэмж бичнэ:</para>
<programlisting>apache_enable="YES"</programlisting>
<para>буюу эсвэл <application>Apache</application> 2.2-ийн хувьд:</para>
<programlisting>apache22_enable="YES"</programlisting>
<para>Хэрэв систем ачаалах үед эхэлдэг <application>Apache</application>
<command>httpd</command> програмд нэмэлт тушаалын мөрний тохируулгуудыг
оруулах хүсэлтэй бол, дараах мөрийг мөн <filename>rc.conf</filename> файлд
нэмэх хэрэгтэй:</para>
<programlisting>apache_flags=""</programlisting>
<para>Одоо таны вэб сервер ажиллаж байна.
Та өөрийн вэб сайтыг вэб хөтөч дээрээ <literal>http://localhost/</literal>
хаягийг оруулан харж болно. Энд гарах анхдагч вэб хуудас бол
<filename>/usr/local/www/data/index.html</filename> юм.</para>
</sect2>
<sect2>
<title>Давхар байршуулалт</title>
<para><application>Apache</application> нь хоёр төрлийн давхар
байршуулах үйлчилгээг дэмждэг. Эхнийх нь
нэр дээр үндэслэсэн давхар байршуулалт юм.
Нэр дээр үндэслэсэн давхар байршуулалт дээр
хост нэрийг ялгаж мэдэхдээ харилцагчийн HTTP/1.1 толгойн хэсгийг ашигладаг.
Иим байдлаар олон өөр домэйнууд нэг IP хаягийг хуваан хэрэглэх
боломжтой болдог.</para>
<para><application>Apache</application> дээр, нэр дээр үндэслэсэн
давхар байршуулалтыг хэрэглэхийн тулд
доор дурдсантай төстэй бүртгэлийг <filename>httpd.conf</filename>
файл дотор нэмж бичих хэрэгтэй:</para>
<programlisting>NameVirtualHost *</programlisting>
<para>Таны вэб серверийн нэр <hostid role="fqdn">www.domain.tld</hostid>
бөгөөд <hostid role="fqdn">www.someotherdomain.tld</hostid> нэртэй домэйныг
давхар байршуулах хүсэлтэй бол, та дараах бүртгэлийг
<filename>httpd.conf</filename> файлд нэмэх хэрэгтэй болно:</para>
<screen>&lt;VirtualHost *&gt;
ServerName www.domain.tld
DocumentRoot /www/domain.tld
&lt;/VirtualHost&gt;
&lt;VirtualHost *&gt;
ServerName www.someotherdomain.tld
DocumentRoot /www/someotherdomain.tld
&lt;/VirtualHost&gt;</screen>
<para>Дээрх хаягуудын оронд хэрэгтэй хаягуудыг, замуудын оронд
баримтууд байгаа зохих замуудыг сольж бичнэ үү.</para>
<para>Давхар хостуудыг зохион байгуулах талаар
дэлгэрэнгүй мэдээллийг <application>Apache</application>-н албан ёсны баримтжуулалт:
<ulink url="http://httpd.apache.org/docs/vhosts/"></ulink>-с олж үзнэ үү.</para>
</sect2>
<sect2>
<title>Apache Модулиуд</title>
<indexterm><primary>Apache</primary>
<secondary>модулиуд</secondary></indexterm>
<para>Үндсэн серверийн үүрэг функцыг сайжруулахын
тулд бүтээгдсэн <application>Apache</application>-н олон модулиуд байдаг.
FreeBSD Портуудын Цуглуулга нь <application>Apache</application>-г түүний
өргөн хэрэглэгддэг зарим модулиудын хамт хялбар суулгах
боломжийг олгодог.</para>
<sect3>
<title>mod_ssl</title>
<indexterm><primary>вэб серверүүд</primary>
<secondary>аюулгүй</secondary></indexterm>
<indexterm><primary>SSL</primary></indexterm>
<indexterm><primary>криптограф</primary></indexterm>
<para><application>mod_ssl</application> модуль нь Secure Sockets Layer (SSL v2/v3) ба
Transport Layer Security (TLS v1) протоколоор дамжуулан өндөр
нууцлалыг хангахын тулд OpenSSL санг ашигладаг.
Энэ модуль нь батламж олгодог итгэмжлэгдсэн байгууллагаас
батламж авахын тулд шаардлагатай бүх зүйлсээр хангадаг тул
та үүнийг ашиглан &os; дээр аюулгүй вэб сервер ажиллуулж чадна.</para>
<para>Хэрэв та <application>Apache</application>-г суулгаж амжаагүй бол,
<application>mod_ssl</application> модулийг агуулдаг
<application>Apache</application>-н 1.3.X хувилбарыг <filename role="package">www/apache13-modssl</filename>
портоос суулгаж болох юм.
<application>Apache</application>&nbsp;2.X-н хувьд SSL дэмжлэгийг <filename role="package">www/apache22</filename>
портоос авч болно. SSL дэмжлэг автоматаар идэвхжсэн байдаг.</para>
<!-- XXX add more information about configuring mod_ssl here. -->
<!-- Generating keys, getting the key signed, setting up your secure -->
<!-- web server! -->
</sect3>
<sect3>
<title>Хэлний холболтууд</title>
<para>Ихэнх гол скрипт хэлнүүдэд зориулсан Apache-ийн
модулиуд байдаг. Эдгээр модулиуд нь
<application>Apache</application>-ийн модулиудыг
бүхэлд нь скрипт хэл дээр бичих боломжийг ихэвчлэн
бүрдүүлдэг. Эдгээр нь бас гадаад тайлбарлагчийг эхлүүлэх нэмэлт
зардал болон димамик вэб сайтуудын хувьд байдаг эхлүүлэх
хугацааны алдагдлыг тойрон гарах, серверт багтааж хийгдсэн
байнгын тайлбарлагч болон дараагийн хэсэгт тайлбарлагдсан
шигээр ихэвчлэн ашиглагддаг.</para>
</sect3>
</sect2>
<sect2>
<title>Динамик вэб сайтууд</title>
<indexterm><primary>web servers</primary>
<secondary>dynamic</secondary></indexterm>
<para>Сүүлийн 10 жилд, өөрийн ашиг орлогыг нэмэгдүүлэх,
хүмүүст хүрэх зорилгоор илүү олон компаниуд
бизнесээ Интернэтээр явуулах болжээ. Энэ нь
динамик агуулгатай вэб хуудсууд төрөн гарах
хэрэгцээ шаардлагыг улам нэмэгдүүлсэн. &microsoft; гэх мэт зарим компаниуд
ч өөрийн бүтээгдэхүүнүүдэд тэдгээрээс оруулах болсон хэдий ч,
нээлттэй эхийн нэгдэл энэ асуудалд хариу өгсөн юм. Динамик вэб агуулгыг
бий болгох орчин үеийн боломжууд бол Django, Ruby on Rails,
<application>mod_perl</application> болон
<application>mod_php</application> юм.</para>
<sect3>
<title>Django</title>
<indexterm><primary>Python</primary></indexterm>
<indexterm><primary>Django</primary></indexterm>
<para>Django нь өндөр ажиллагаатай, гоёмсог вэб програмыг
хурдан бичих боломжийг хөгжүүлэгчдэд олгохоор хийгдсэн,
BSD лицензтэй тогтолцоо юм. Энэ нь өгөгдлийн төрлүүд
Python обьект хэлбэрээр хөгжүүлэгддэг байхаар болгосон
обьектийн харилцааг оноогчтой бөгөөд тэдгээр обьектуудад зориулсан
хөгжүүлэгчдэд SQL бичих шаардлагагүй болгож өгдөг, баялаг
динамик өгөгдлийн сангийн хандалтын API-тай юм. Энэ нь бас
програмын логикийг HTML үзүүлбэрээс тусгаарлах боломжийг
бүрдүүлэх нэмэлт загварын системтэй байдаг.</para>
<para>Django нь <application>mod_python</application>,
<application>Apache</application>, болон таны сонгосон SQL өгөгдлийн
сангийн хөдөлгүүрээс хамаардаг. FreeBSD порт нь эдгээр бүх
хамаарлуудыг тохирсон сонголтуудтай нь танд суулгаж өгөх болно.</para>
<example id="network-www-django-install">
<title>Django-г Apache2, mod_python3, болон PostgreSQL-тэй суулгах нь</title>
<screen>&prompt.root; <userinput>cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL</userinput></screen>
</example>
<para>Django болон бусад хамаарлууд суулгагдсаны дараа та
Django төслийн санг үүсгэх хэрэгтэй бөгөөд өөрийн сайт дээрх
тухайн URL дээр өөрийн програмыг дуудахын тулд суулгагдсан
Python тайлбарлагчийг ашиглахаар болгож Apache-г тохируулах хэрэгтэй.</para>
<example id="network-www-django-apache-config">
<title>Django/mod_python-д зориулсан Apache-ийн тохиргоо</title>
<para>Та өөрийн вэб програм руу тодорхой URL-уудад зориулсан
хүсэлтүүдийг дамжуулахаар Apache-г тохируулахын тулд
apache-ийн <filename>httpd.conf</filename> файлд мөр
нэмэх шаардлагатай:</para>
<screen>&lt;Location "/"&gt;
SetHandler python-program
PythonPath "['/dir/to/your/django/packages/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonAutoReload On
PythonDebug On
&lt;/Location&gt;</screen>
</example>
</sect3>
<sect3>
<title>Ruby on Rails</title>
<indexterm><primary>Ruby on Rails</primary></indexterm>
<para>Ruby on Rails нь бүрэн гүйцэд хөгжүүлэлтийн стекийн
боломжийг олгодог бөгөөд вэб хөгжүүлэгчдийг хүчирхэг
програмыг хурдан шуурхай, илүү үр бүтээлтэй бичдэг байхаар
оновчлогдсон, нээлттэй эхийн вэб тогтолцоо юм. Үүнийг портын
системээс хялбараар суулгаж болно.</para>
<screen>&prompt.root; <userinput>cd /usr/ports/www/rubygem-rails; make all install clean</userinput></screen>
</sect3>
<sect3>
<title>mod_perl</title>
<indexterm>
<primary>mod_perl</primary>
<secondary>Perl</secondary>
</indexterm>
<para><application>Apache</application>/Perl нэгтгэх төсөл
Perl програмчлалын хэл ба <application>Apache HTTP Сервер</application>ийн
бүх хүч чадлыг нэгтгэсэн юм. <application>mod_perl</application> модулийн
тусламжтай <application>Apache</application> модулиудыг тэр чигээр нь
Perl дээр бичих боломжтой. Дээр нь, серверт суулгасан
шургуу хөрвүүлэгч, гадны хөрвүүлэгч ашиглах илүү ажил болон
Perl эхлүүлэх хугацааны алдагдлаас зайлсхийж чадсан юм.</para>
<para><application>mod_perl</application>-г хэд хэдэн янзаар хэрэглэж болно.
<application>mod_perl</application>-г хэрэглэж эхлэхээс өмнө
<application>mod_perl</application> 1.0 зөвхөн <application>Apache</application> 1.3-тай ажилладаг,
<application>mod_perl</application> 2.0 зөвхөн <application>Apache</application> 2.X-тэй ажилладаг гэдгийг
санаарай. <application>mod_perl</application> 1.0-г <filename role="package">www/mod_perl</filename> портоос,
түүний статикаар эмхэтгэсэн хувилбарыг <filename role="package">www/apache13-modperl</filename>
портоос суулгаж болно. <application>mod_perl</application> 2.0-г
<filename role="package">www/mod_perl2</filename> портоос суулгаж болно.</para>
</sect3>
<sect3>
<sect3info>
<authorgroup>
<author>
<firstname>Том</firstname>
<surname>Рөүдс</surname>
<contrib>Бичсэн </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect3info>
<title>mod_php</title>
<indexterm>
<primary>mod_php</primary>
<secondary>PHP</secondary>
</indexterm>
<para><acronym>PHP</acronym> буюу <quote>PHP:Hypertext Preprocessor</quote> бол
вэб хөгжүүлэлтэд тусгайлан тохируулсан, энгийн хэрэглээний
скрипт хэл юм. <acronym>HTML</acronym> дотор суулгах боломжтой түүний
синтакс C, &java;, ба Perl-с гаралтай. Энэ нь вэб хөгжүүлэгчдэд
динамикаар үүсгэгдэх вэб хуудсыг хурдан бичих боломжтой болгох
үүднээс тэгсэн хэрэг.</para>
<para><application>Apache</application> вэб серверийг
<acronym>PHP</acronym>5-г дэмждэг болгохын тулд, <filename role="package">lang/php5</filename>
портыг суулгаж эхлэх хэрэгтэй.</para>
<para>Хэрэв <filename role="package">lang/php5</filename> портыг
анх удаа суулгаж байгаа бол, боломжит
<literal>ТОХИРУУЛГУУД</literal> автоматаар дэлгэцэн дээр гарч ирнэ.
Хэрэв цэс гарч ирэхгүй бол, өөрөөр хэлбэл
<filename role="package">lang/php5</filename> портыг өмнө нь хэзээ нэгэн цагт
суулгаж байсан бол, тохируулгуудын харилцах цонхыг гаргаж ирэхийн тулд
дараах тушаалыг:</para>
<screen>&prompt.root; <userinput>make config</userinput></screen>
<para>порт директор дотор өгөх хэрэгтэй.</para>
<para>Тохируулгуудын харилцах цонхонд,
<application>mod_php5</application>-г <application>Apache</application>-н
ачаалах боломжтой модуль байдлаар бүтээхийн тулд
<literal>APACHE</literal> тохируулгыг идэвхжүүлнэ.</para>
<note>
<para>Олон сайтууд <acronym>PHP</acronym>4-г янз бүрийн шалтгааны улмаас
(өөрөөр хэлбэл, нийцтэй байдал эсвэл аль хэдийн үйлчилгээнд гаргачихсан
вэб програмууд) ашигласаар байна. Хэрэв
<application>mod_php4</application>-г <application>mod_php5</application>-н оронд ашиглах
шаардлагатай бол, <filename role="package">lang/php4</filename> портыг ашиглаарай.
<filename role="package">lang/php4</filename> порт нь <filename role="package">lang/php5</filename> портод
байдаг тохиргооны болон бүтээх үеийн олон тохируулгуудыг дэмждэг.</para>
</note>
<para>Энэ хэсэг код динамик <acronym>PHP</acronym> програмыг дэмждэг болгоход
шаардлагатай модулиудыг суулгаж тохируулах болно. Доорх мөрүүд
<filename>/usr/local/etc/apache/httpd.conf</filename> файл дотор нэмэгдсэн эсэхийг шалгаарай:</para>
<programlisting>LoadModule php5_module libexec/apache/libphp5.so</programlisting>
<programlisting>AddModule mod_php5.c
&lt;IfModule mod_php5.c&gt;
DirectoryIndex index.php index.html
&lt;/IfModule&gt;
&lt;IfModule mod_php5.c&gt;
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
&lt;/IfModule&gt;</programlisting>
<para>Үүний дараа, <acronym>PHP</acronym> модулийг ачаалахын тулд,
дараах тушаалыг өгч серверийг дахин ачаалах хэрэгтэй:</para>
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
<para>Дараа, <acronym>PHP</acronym>-н хувилбарыг дээшлүүлэх үедээ,
<command>make config</command> тушаалыг өгөх шаардлагагүй;
идэвхжүүлсэн <literal>ТОХИРУУЛГУУД</literal> &os; Портуудын
тогтолцоонд автоматаар хадгалагдсан байгаа.</para>
<para>&os;-н <acronym>PHP</acronym> дэмжлэг нь дээд зэргээр
модульчлагдсан тул үндсэн суулгац нь маш хязгаарлагдмал
байдаг. <filename role="package">lang/php5-extensions</filename> портыг ашиглан дэмжлэг
нэмэх нь үнэхээр амархан асуудал. <acronym>PHP</acronym> өргөтгөлийг суулгах явцад,
энэ порт танд цэсээс тогтсон интерфэйсийг санал болгоно. Өөрөөр,
өргөтгөлүүдийг нэг нэгээр нь харгалзах портуудаас суулгаж болно.</para>
<para>Жишээлбэл, <acronym>PHP</acronym>5-д <application>MySQL</application> өгөгдлийн
сангийн серверийн дэмжлэгийг нэмэхийн тулд,
<filename role="package">databases/php5-mysql</filename> портыг суулгахад хангалттай.</para>
<para>Ямар нэг өргөтгөл суулгасны дараа,
тохиргооны өөрчлөлтийг хүчин төгөлдөр болгохын тулд <application>Apache</application>
серверийг дахин ачаалах шаардлагатайг анхаарна уу:</para>
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
</sect3>
</sect2>
</sect1>
<sect1 id="network-ftp">
<sect1info>
<authorgroup>
<author>
<firstname>Мюррей</firstname>
<surname>Стөүкли</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title>Файл Дамжуулах Протокол (FTP)</title>
<indexterm><primary>FTP серверүүд</primary></indexterm>
<sect2>
<title>Удиртгал</title>
<para>File Transfer Protocol буюу Файл Дамжуулах Протокол (FTP) нь хэрэглэгчдэд
<acronym role="File Transfer Protocol">FTP</acronym> серверээс файлыг авах болон тавих хялбар
замыг бий болгодог. &os; үндсэн систем дотроо <acronym role="File Transfer Protocol">FTP</acronym>
сервер програм <application>ftpd</application>-г агуулж байдаг. Энэ нь FreeBSD дээр
<acronym role="File Transfer Protocol">FTP</acronym> серверийг босгох, удирдах ажлыг төвөггүй болгодог.</para>
</sect2>
<sect2>
<title>Тохиргоо</title>
<para>Тохиргоо хийхийн өмнөх хамгийн чухал алхам бол
ямар дансууд FTP серверт хандах эрхтэй байх вэ гэдгийг шийдэх байдаг.
Ердийн FreeBSD систем нь янз бүрийн дэмонуудад хэрэглэгддэг
олон тооны системийн дансуудтай байдаг ба гадны хэрэглэгчид
эдгээр дансыг ашиглан нэвтрэх ёсгүй. <filename>/etc/ftpusers</filename> файл дотор
FTP хандалт зөвшөөрөгдөөгүй хэрэглэгчдийн жагсаалтыг хадгална.
Анхдагч байдлаар, дээр дурдсан системийн дансууд энэ файлд байна.
FTP хандалтыг зөвшөөрөх ёсгүй өөр хэрэглэгчдийг ч мөн энэ файлд
нэмж болно.</para>
<para>Зарим хэрэглэгчдийн FTP хэрэглэхийг нь бүр болиулчихалгүйгээр,
зөвхөн зарим нэг эрхийг нь хязгаарлаж бас болно. Үүнийг
<filename>/etc/ftpchroot</filename> файлын тусламжтай гүйцэтгэж болно.
Энэ файл дотор FTP хандалтыг нь хязгаарлах хэрэглэгчид болон
бүлгүүдийн жагсаалт байна. &man.ftpchroot.5; заавар хуудсанд
бүх мэдээлэл байгаа тул энд дурдсангүй.</para>
<indexterm>
<primary>FTP</primary>
<secondary>нийтийн</secondary>
</indexterm>
<para>Хэрэв сервертээ нийтийн FTP хандалтыг зөвшөөрөх хүсэлтэй байгаа бол,
&os; систем дээрээ <username>ftp</username> нэртэй хэрэглэгч нэмэх хэрэгтэй.
Ингэснээр хэрэглэгчид таны FTP сервер рүү <username>ftp</username> эсвэл
<username>anonymous</username> гэсэн нэрээр ямар ч нэвтрэх үг шаардагдахгүйгээр
(тогтсон заншил ёсоор хэрэглэгч цахим шуудангийн хаягаа
нэвтрэх үгийн оронд хэрэглэх шаардлагатай) нэвтрэн орох болно.
Нийтийн хэрэглэгч системд орж ирэхэд FTP сервер түүний эрхийг
зөвхөн <username>ftp</username> хэрэглэгчийн гэрийн сан дотор
хязгаарлахын тулд &man.chroot.2;-г дуудна.</para>
<para>FTP харилцагчдад зориулсан мэндчилгээний үгнүүдийг
агуулсан хоёр текст файл байдаг. <filename>/etc/ftpwelcome</filename> файл
дотор байгааг нэвтрэлт хүлээх мөр гарахаас өмнө хэрэглэгчдэд дэлгэцэн дээр
хэвлэнэ. Амжилттай нэвтэрч орсны дараа <filename>/etc/ftpmotd</filename> файл
дотор байгааг дэлгэцэн дээр хэвлэнэ. Энэ файлын зам нь
нэвтэрч орсон орчинтой харьцангуйгаар авсан зам гэдгийг
анхаарна уу, тиймээс нийтийн хэрэглэгчдийн хувьд
<filename>~ftp/etc/ftpmotd</filename> файлыг хэвлэх болно.</para>
<para>FTP серверийн тохиргоог зохих ёсоор хийсний дараа,
<filename>/etc/inetd.conf</filename> файл дотор идэвхжүүлэх хэрэгтэй.
Үүний тулд, <application>ftpd</application> гэсэн мөрний өмнөх <quote>#</quote>
тэмдэгтийг арилгахад хангалттай:</para>
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
<para><xref linkend="network-inetd-reread"> хэсэгт тайлбарласан ёсоор
энэ тохиргооны файлд өөрчлөлт оруулсны дараа
<application>inetd</application>-г дахин ачаалах шаардлагатай. Өөрийн
систем дээр <application>inetd</application>-г идэвхжүүлэх талаар
дэлгэрэнгүйг <xref linkend="network-inetd-settings">-с үзнэ үү.</para>
<para>Мөн <application>ftpd</application>-ийг дангаар нь ажиллуулахаар
тохируулж болно. Энэ тохиолдолд <filename>/etc/rc.conf</filename> файлд
тохирох хувьсагчийг тохируулахад хангалттай байдаг:</para>
<programlisting>ftpd_enable="YES"</programlisting>
<para>Дээрх хувьсагчийг тохируулсны дараа сервер дараачийн ачаалалт хийхэд
ажиллах боломжтой болох бөгөөд эсвэл дараах тушаалыг <username>root</username>
эрхээр ажиллуулан эхлүүлж болно:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/ftpd start</userinput></screen>
<para>Одоо та дараах тушаалыг өгөн FTP сервер рүү нэвтрэн орж болно:</para>
<screen>&prompt.user; <userinput>ftp localhost</userinput></screen>
</sect2>
<sect2>
<title>Арчилгаа</title>
<indexterm><primary>syslog</primary></indexterm>
<indexterm><primary>бүртгэлийн файлууд</primary>
<secondary>FTP</secondary></indexterm>
<para><application>ftpd</application> дэмон бүртгэл хөтлөхдөө &man.syslog.3;-г ашигладаг.
Анхдагч байдлаар, системийн бүртгэлийн дэмон FTP-тэй холбоотой
зурвасуудыг <filename>/var/log/xferlog</filename> файлд бичнэ. FTP бүртгэлийн файлын
байршлыг өөрчлөхийн тулд <filename>/etc/syslog.conf</filename> файл дотор, дараах
мөрийг засах хэрэгтэй:</para>
<programlisting>ftp.info /var/log/xferlog</programlisting>
<indexterm>
<primary>FTP</primary>
<secondary>нийтийн</secondary>
</indexterm>
<para>Нийтийн FTP сервер ажиллуулахад тохиолдох
болзошгүй асуудлуудын талаар мэдлэгтэй байгаарай.
Ялангуяа, нийтийн хэрэглэгчдэд файл байршуулахыг
зөвшөөрөх тухайд сайн бодох хэрэгтэй. Таны FTP сайт
лицензгүй програм хангамжуудыг наймаалцдаг талбар болох, эсвэл түүнээс ч
муу зүйл тохиолдохыг үгүйсгэхгүй. Хэрэв нийтийн FTP байршуулалтыг
зөвшөөрөх шаардлагатай бол, файлуудыг нягталж үзэхээс нааш
бусад нийтийн хэрэглэгчид тэдгээр файлыг унших эрхгүй байхаар
тохируулж өгөх хэрэгтэй.</para>
</sect2>
</sect1>
<sect1 id="network-samba">
<sect1info>
<authorgroup>
<author>
<firstname>Мюррей</firstname>
<surname>Стөүкли</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title>&microsoft.windows; харилцагчдад зориулсан Файл болон Хэвлэх Үйлчилгээ (Samba)</title>
<indexterm><primary>Samba сервер</primary></indexterm>
<indexterm><primary>Microsoft Windows</primary></indexterm>
<indexterm>
<primary>файл сервер</primary>
<secondary>Windows харилцагчид</secondary>
</indexterm>
<indexterm>
<primary>хэвлэх сервер</primary>
<secondary>Windows харилцагчид</secondary>
</indexterm>
<sect2>
<title>Ерөнхий Агуулга</title>
<para><application>Samba</application> бол &microsoft.windows; харилцагчдад
файл болон хэвлэх үйлчилгээг үзүүлдэг, өргөн хэрэглэгддэг
нээлттэй эхийн програм хангамжийн багц юм. Ийм төрлийн харилцагчид
FreeBSD файлын орчинд холбогдож, файлуудыг өөрийн дискэн дээр байгаа юм шиг,
эсвэл FreeBSD хэвлэгчийг өөрийн дотоод хэвлэгч шиг хэрэглэх боломжтой болдог.</para>
<para><application>Samba</application> програм хангамжийн багцууд таны FreeBSD суулгах
дискэнд орсон байгаа. Хэрэв та анх FreeBSD суулгахдаа
<application>Samba</application>-г хамт суулгаагүй бол, <filename role="package">net/samba3</filename>
порт эсвэл багцаас суулгаж болно.</para>
<!-- mention LDAP, Active Directory, WinBIND, ACL, Quotas, PAM, .. -->
</sect2>
<sect2>
<title>Тохиргоо</title>
<para><application>Samba</application>-н анхдагч тохиргооны файл
<filename>/usr/local/share/examples/samba/smb.conf.default</filename> гэж суугдсан байдаг. Энэ файлыг <filename>/usr/local/etc/smb.conf</filename>
нэртэй хуулаад, <application>Samba</application>-г ашиглаж
эхлэхээсээ өмнө өөртөө тааруулан засварлах ёстой.</para>
<para><filename>smb.conf</filename> файл нь &windows; харилцагчтай хуваалцах
хүсэлтэй <quote>файл системийн хэсэг</quote> ба хэвлэгчийн тодорхойлолт гэх зэрэг
<application>Samba</application>-н ажиллах үеийн тохиргооны мэдээллийг агуулж байдаг.
<application>Samba</application> багц дотор <filename>smb.conf</filename> файл дээр ажиллах хялбар
арга замыг хангасан <application>swat</application> нэртэй вэб дээр суурилсан
хэрэгсэл хамт ирдэг.</para>
<sect3>
<title>Samba-г Вэбээр Удирдах Хэрэгсэл (SWAT)</title>
<para>Samba Web Administration Tool буюу Samba-г Вэбээр Удирдах Хэрэгсэл (SWAT)
нь <application>inetd</application>-н дэмон хэлбэрээр ажиллана.
Тиймээс, <application>Samba</application>-г <application>swat</application>
ашиглан тохируулахын өмнө <filename>/etc/inetd.conf</filename> доторх
дараах мөрийг ил гаргах шаардлагатай:</para>
<programlisting>swat stream tcp nowait/400 root /usr/local/sbin/swat swat</programlisting>
<para><xref linkend="network-inetd-reread"> хэсэгт тайлбарласан ёсоор,
энэ тохиргооны файлд өөрчлөлт оруулсны дараа
<application>inetd</application>-ийн тохиргоог дахин ачаалах шаардлагатай.</para>
<para><application>swat</application>-г <filename>inetd.conf</filename> дотор идэвхжүүлсний
дараа, вэб хөтөч ашиглан <ulink url="http://localhost:901"></ulink> хаяганд холбогдоно.
Та эхлээд системийн <username>root</username> дансаар нэвтэрч орох ёстой.</para>
<!-- XXX screenshots go here, loader is creating them -->
<para><application>Samba</application>-н тохиргооны үндсэн хуудсанд
амжилттай нэвтэрч орсон бол, системийн баримтуудаар аялах,
эсвэл <guimenu>Globals</guimenu> цэсэн дээр дарж тохиргоог хийх боломжтой болно.
<guimenu>Globals</guimenu> хэсэг <filename>/usr/local/etc/smb.conf</filename> файлын
<literal>[global]</literal> хэсэгт байгаа хувьсагчдад харгалзана.</para>
</sect3>
<sect3>
<title>Глобал тохиргоо</title>
<para><application>swat</application>-г хэрэглэж байгаа эсвэл
<filename>/usr/local/etc/smb.conf</filename>-г гараараа засаж байгаа аль нь ч бай,
<application>Samba</application>-г тохируулах явцад тааралдах хамгийн эхний
директивууд бол:</para>
<variablelist>
<varlistentry>
<term><literal>workgroup</literal></term>
<listitem>
<para>Энэ нь сервер рүү хандах компьютеруудын NT Домэйн-Нэр эсвэл
Ажлын бүлгийн-Нэр.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>netbios name</literal></term>
<indexterm><primary>NetBIOS</primary></indexterm>
<listitem>
<para>Энэ директив <application>Samba</application> серверийн NetBIOS нэрийг заана.
Анхдагч байдлаар, хостын DNS нэрийн эхний хэсэгтэй адил байна.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>серверийн мөр</literal></term>
<listitem>
<para>Энэ директив <command>net view</command> тушаалын хариуд
гарч ирэх эсвэл зарим сүлжээний хэрэгслүүд дээр энэ серверийг
төлөөлж гарах мөрийг заана.</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3>
<title>Аюулгүй байдлын Тохиргоо</title>
<para><filename>/usr/local/etc/smb.conf</filename> доторх
хамгийн чухал хоёр тохиргоо бол аюулгүй байдлын загвар,
болон харилцагчдын нэвтрэх үгийн арын шугамны хэлбэр юм.
Дараах директивүүд эдгээр тохируулгуудыг хянана:</para>
<variablelist>
<varlistentry>
<term><literal>security</literal></term>
<listitem>
<para>Энд хамгийн элбэг хэрэглэгддэг хоёр сонголт бол
<literal>security = share</literal> ба <literal>security = user</literal> юм. Хэрэв танай харилцагч нар
&os; машин дээр хэрэглэдэг хэрэглэгчийн нэртэй ижил нэрийг ашигладаг бол,
user түвшний аюулгүй байдлыг сонгохыг хүсэж байж магадгүй. Энэ бол
аюулгүй байдлын анхдагч бодлого бөгөөд эх үүсвэрт хандахаас өмнө харилцагчийг
системд нэвтэрч орохыг шаардана.</para>
<para>share түвшний аюулгүй байдалд, харилцагчид эх үүсвэрт хандахаас өмнө
хүчин төгөлдөр хэрэглэгчийн нэр болон нэвтрэх үгээр сервер рүү нэвтрэн орох
шаардлагагүй байдаг. Энэ бол <application>Samba</application>-н хуучин хувилбаруудын хувьд
аюулгүй байдлын анхдагч загвар байсан.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>passdb backend</literal></term>
<indexterm><primary>NIS+</primary></indexterm>
<indexterm><primary>LDAP</primary></indexterm>
<indexterm><primary>SQL өгөгдлийн сан</primary></indexterm>
<listitem>
<para><application>Samba</application>-д хэд хэдэн төрлийн
арын шугамны магадлах загварууд байдаг. Харилцагчдыг
LDAP, NIS+, SQL өгөгдлийн сан, эсвэл хувиргасан нэвтрэх үгийн файлаар
магадлаж болно. Анхдагч магадлах арга бол <literal>smbpasswd</literal> бөгөөд
бид зөвхөн энэ талаар авч үзэх болно.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Анхдагч <literal>smbpasswd</literal> арын шугамыг хэрэглэж байгаа гэж үзвэл,
<application>Samba</application> харилцагчдыг магадлахын тулд
<filename>/usr/local/private/smbpasswd</filename> файлыг эхлээд үүсгэх ёстой.
Хэрэв &unix; хэрэглэгчийн эрхээр &windows; харилцагчаас ханддаг байх шаардлагатай бол,
дараах тушаалыг хэрэглэнэ:</para>
<screen>&prompt.root; <userinput>smbpasswd -a username</userinput></screen>
<note>
<para><application>Samba</application> 3.0.23c-аас эхлээд нэвтрэлтийн
файлуудад зориулсан сан нь <filename class="directory">/usr/local/etc/samba</filename>
сан юм. Энэ үед санал болгодог арын мэдээллийн сан нь <literal>tdbsam</literal> бөгөөд
хэрэглэгчийн бүртгэлийг нэмэхийн тулд дараах тушаалыг ашиглах ёстой:</para>
<screen>&prompt.root; <userinput><command>pdbedit <option>-a</option> <option>-u</option> <replaceable>username</replaceable></command></userinput></screen>
</note>
<para>Тохируулгуудын талаар нэмэлт мэдээллийг
<ulink url="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/">Албан ёсны Samba HOWTO</ulink>-с олж авна уу.
Энд цухас дурдсан үндсэн мэдлэгтэйгээр <application>Samba</application>-г ажиллуулж
эхлэх чадвартай байх ёстой.</para>
</sect3>
</sect2>
<sect2>
<title><application>Samba</application>-г Эхлүүлэх нь</title>
<para><filename role="package">net/samba3</filename> портод <application>Samba</application>-г
удирдахад зориулсан шинэ эхлэл скрипт орсон байгаа. Энэ
скриптийг идэвхжүүлэхийн тулд, өөрөөр хэлбэл энэ скриптийг ашиглан
<application>Samba</application>-г эхлүүлэх, зогсоох болон дахин эхлүүлдэг болохын тулд,
<filename>/etc/rc.conf</filename> файл дотор дараах мөрийг нэмж бичих хэрэгтэй:</para>
<programlisting>samba_enable="YES"</programlisting>
<para>Эсвэл илүү нарийнаар доор дурдсан шиг тохируулж болно:</para>
<programlisting>nmbd_enable="YES"</programlisting>
<programlisting>smbd_enable="YES"</programlisting>
<note>
<para>Ингэснээр мөн <application>Samba</application>-г систем ачаалах үед автоматаар
эхлүүлдэг болгоно.</para>
</note>
<para>Үүний дараа хүссэн үедээ <application>Samba</application>-г эхлүүлэхийн тулд
дараах тушаалыг өгөхөд хангалттай:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba start</userinput>
Starting SAMBA: removing stale tdbs :
Starting nmbd.
Starting smbd.</screen>
<para>rc скриптийг ашиглах талаар дэлгэрэнгүй мэдээллийг
<xref linkend="configtuning-rcd"> хэсгээс авна уу.</para>
<para><application>Samba</application> нь үнэн хэрэгтээ гурван тусдаа дэмоноос
тогтоно. <application>nmbd</application> ба <application>smbd</application> дэмонууд
<filename>samba</filename> скриптээр эхлүүлдэг болохыг та анзаарах болно.
Хэрэв <filename>smb.conf</filename> дотор winbind нэр тайлах үйлчилгээг идэвхжүүлсэн бол
<application>winbindd</application> дэмон бас ажиллаж эхэлсэн болохыг харж болно.</para>
<para><application>Samba</application>-г хүссэн үедээ зогсоохын тулд дараах тушаалыг өгөхөд
хангалттай:</para>
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba stop</userinput></screen>
<para><application>Samba</application> бол &microsoft.windows; сүлжээтэй өргөн хүрээнд
нэгдмэл ажиллах боломжийг олгодог нарийн төвөгтэй програмын цогц юм.
Энд тайлбарласан үндсэн суулгацаас хальсан функцуудын талаар дэлгэрэнгүй
мэдээллийг <ulink url="http://www.samba.org"></ulink> хаягаар орж авна уу.</para>
</sect2>
</sect1>
<sect1 id="network-ntp">
<sect1info>
<authorgroup>
<author>
<firstname>Том</firstname>
<surname>Хөүкинс</surname>
<contrib>Хувь нэмрээ оруулсан </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Лодойсамбын</firstname>
<surname>Баянзул</surname>
<contrib>Орчуулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title>NTP-р Цаг Тааруулах нь</title>
<indexterm><primary>NTP</primary></indexterm>
<sect2>
<title>Ерөнхий Агуулга</title>
<para>Цаг хугацаа өнгөрөхөд компьютерийн цаг зөрөх хандлагатай байдаг.
Network Time Protocol буюу Сүлжээний Цагийн Протоколыг(NTP) цагийг зөв байлгах, зөв ажиллуулахад
хэрэглэдэг.</para>
<para>Олон тооны Интернэт үйлчилгээнүүд компьютерийн цагаас хамаарч,
эсвэл хүртэж ажилладаг. Жишээлбэл, вэб сервер тодорхой цагаас хойш
өөрчлөлт орсон файлуудыг илгээх хүсэлт хүлээн авсан байж болох юм. Дотоод сүлжээний
орчинд, нэг файл серверээр үйлчлүүлж байгаа компьютеруудын хувьд
файлын цагийн тамга дүйж байхын тулд тэдгээрийн цагууд хоорондоо
тохирч байх ёстой. &man.cron.8; зэрэг үйлчилгээнүүд тодорхой цагт тушаалыг
гүйцэтгэхийн тулд системийн цагт бүрэн найдаж ажилладаг.</para>
<indexterm>
<primary>NTP</primary>
<secondary>ntpd</secondary>
</indexterm>
<para>FreeBSD &man.ntpd.8; <acronym role="Network Time Protocol">NTP</acronym> серверийн хамт ирдэг.
&man.ntpd.8; <acronym role="Network Time Protocol">NTP</acronym> нь таны машины цагийг тааруулахын тулд
бусад <acronym role="Network Time Protocol">NTP</acronym> серверүүдээс асуух эсвэл бусдад цагийн
мэдээллийг түгээх үйлчилгээг үзүүлдэг.</para>
</sect2>
<sect2>
<title>Зохимжтой NTP Серверийг Сонгох нь</title>
<indexterm>
<primary>NTP</primary>
<secondary>серверийг сонгох нь</secondary>
</indexterm>
<para>Цагаа тааруулахын тулд, та нэг болон түүнээс дээш тооны
<acronym role="Network Time Protocol">NTP</acronym> серверийг хэрэглэх хэрэгтэй болно.
Танай сүлжээний администратор эсвэл ISP үүнд зориулсан
NTP сервертэй байж болох юм&mdash;тийм эсэхийг тэдний заавраас шалгана уу.
<ulink url="http://ntp.isc.org/bin/view/Servers/WebHome">нийтэд зориулсан NTP серверүүдийн
онлайн жагсаалт</ulink>ыг ашиглан өөртөө ойрхон байгаа NTP серверийг
олно уу. Сонгож авсан серверийнхээ ашиглах журмыг судлаарай.
Мөн хэрэв шаардлагатай бол зөвшөөрөл аваарай.</para>
<para>Таны сонгосон сервер холбогдох боломжгүй,
эсвэл цаг нь бүрэн итгэж болохооргүй үе гарах тул,
хоорондоо хамааралгүй хэд хэдэн NTP серверүүдийг сонгох нь хамгийн зөв
сонголт болдог. &man.ntpd.8; бусад серверээс хүлээн авсан
хариултуудыг маш ухаалгаар хэрэглэдэг&mdash;итгэж болох серверүүдийг
илүү авч үздэг.</para>
</sect2>
<sect2>
<title>Өөрийн Машиныг Тохируулах нь</title>
<indexterm>
<primary>NTP</primary>
<secondary>тохиргоо</secondary>
</indexterm>
<sect3>
<title>Үндсэн Тохиргоо</title>
<indexterm><primary>ntpdate</primary></indexterm>
<para>Хэрэв та машин асахад цагаа тааруулах хүсэлтэй
байгаа бол, &man.ntpdate.8;-г ашиглаж болно. Энэ нь олон дахин тааруулах
шаардлагагүй, ойр ойрхон асааж унтраадаг ширээний компьютерийн
хувьд зохимжтой байж болох юм. Гэхдээ ихэнх машины хувьд
&man.ntpd.8;-г ажиллуулах нь зүйтэй.</para>
<para>Систем ачаалах үед &man.ntpdate.8;-г ашиглах нь
&man.ntpd.8; ажиллаж байгаа машинуудын хувьд зөв санаа юм.
Учир нь &man.ntpd.8; програм нь цагийг алгуур өөрчилдөг байхад,
&man.ntpdate.8; машины одоогийн цаг болон зөв цагын хооронд
хир их ялгаа байгааг үл хайхран цагийг тааруулдаг.</para>
<para>&man.ntpdate.8;-г систем ачаалах үед идэвхжүүлэхийн тулд,
<literal>ntpdate_enable="YES"</literal> гэсэн мөрийг <filename>/etc/rc.conf</filename> файлд
нэмэх хэрэгтэй. Мөн цаг авах гэж байгаа бүх серверүүд болон
&man.ntpdate.8;-д өгөх тугуудыг <varname>ntpdate_flags</varname>-д зааж өгөх хэрэгтэй.</para>
</sect3>
<sect3>
<indexterm>
<primary>NTP</primary>
<secondary>ntp.conf</secondary>
</indexterm>
<title>Ерөнхий Тохиргоо</title>
<para>NTP-г <filename>/etc/ntp.conf</filename> файлын тусламжтай,
&man.ntp.conf.5;-д заасан хэлбэрээр тохируулна. Доор хялбар жишээг
үзүүлэв:</para>
<programlisting>server ntplocal.example.com prefer
server timeserver.example.org
server ntp2a.example.net
driftfile /var/db/ntp.drift</programlisting>
<para><literal>server</literal> тохируулгаар
ямар серверүүдийг ашиглахыг заана. Нэг мөрөнд нэг серверийг бичнэ.
Хэрэв аль нэг серверийг <literal>prefer</literal> гэсэн аргументаар
онцолсон бол, <hostid
role="fqdn">ntplocal.example.com</hostid> шиг, тэр серверийг
бусдаас илүүд үзнэ. Илүүд үзсэн серверээс ирсэн хариу
бусад серверүүдийн хариунаас мэдэгдэхүйцээр
зөрж байгаа үед хариуг тоохгүй өнгөрөөнө. Түүнээс бусад тохиолдолд
бусад серверийн хариуг үл харгалзан тэр серверийн хариуг
хэрэглэх болно. <literal>prefer</literal> аргументийг ер нь
өндөр нарийвчлалтай, тусгай цаг хянадаг тоног төхөөрөмж дээр тулгуурласан NTP
серверийн хувьд хэрэглэнэ.</para>
<para><literal>driftfile</literal> тохируулгаар
ямар файлд системийн цагийн алдах зөрүү утгыг хадгалж байгааг заана.
&man.ntpd.8; програм энэ утгыг ашиглан цагийн алдсан зөрүүг автоматаар нөхнө.
Ингэснээр цагийн бүх гадаад эх үүсвэрүүдтэй холбоо тогтоох боломжгүй болсон
үед, хэсэг хугацааны туршид ч гэсэн цагийг харьцангуй зөв ажиллуулах боломжийг
олгоно.</para>
<para><literal>driftfile</literal> тохируулгаар ямар файлд таны зааж өгсөн
NTP серверүүдийн өмнөх хариунуудын тухай мэдээллийг
хадгалж байгааг заана. Энэ файлд NTP-н дотоод үйл ажиллагааны мэдээллийг
хадгалдаг. Энэ мэдээллийг өөр ямар ч процесс өөрчлөх ёсгүй.</para>
</sect3>
<sect3>
<title>Өөрийн Сервер рүү Хандах Хандалтыг Хянах нь</title>
<para>Анхдагч байдлаар, таны NTP сервер рүү Интернэтэд байгаа бүх хост
хандах боломжтой. <filename>/etc/ntp.conf</filename> файл дотор
<literal>restrict</literal> тохируулгаар ямар машинууд таны сервер рүү хандаж болохыг
хянаж болно.</para>
<para>Хэрэв та өөрийн NTP сервер рүү хэнийг ч хандуулахыг хүсэхгүй байгаа бол
<filename>/etc/ntp.conf</filename> файл дотор дараах мөрийг нэмэх хэрэгтэй:</para>
<programlisting>restrict default ignore</programlisting>
<note>
<para>Энэ нь таны серверээс өөрийн чинь локал тохиргоонд жагсаагдсан
аль ч сервер үрүү хандах боломжийг бас хаана.
Хэрэв та өөрийн NTP серверийг гадаад NTP сервертэй
синхрончлох хэрэгтэй бол ямар нэг серверийг зөвшөөрөх
ёстой. Дэлгэрэнгүй мэдээллийг &man.ntp.conf.5; гарын авлагаас
үзнэ үү.</para>
</note>
<para>Хэрэв та зөвхөн өөрийн сүлжээнд байгаа машинуудыг
таны сервертэй цагаа тааруулахыг зөвшөөрөөд, гэхдээ
таны серверийн тохиргоог өөрчлөх болон тэгш эрхтэй серверүүд шиг
цагийн мэдээллийг хуваахыг зөвшөөрөхгүй бол дээр дурдсаны оронд:</para>
<programlisting>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</programlisting>
<para>гэсэн мөрийг бичнэ үү. Энд <hostid role="ipaddr">192.168.1.0</hostid> нь таны сүлжээний
IP хаяг, <hostid role="netmask">255.255.255.0</hostid> нь таны сүлжээний баг болно.</para>
<para><filename>/etc/ntp.conf</filename> дотор олон тооны <literal>restrict</literal>
тохируулгууд байж болно. Илүү дэлгэрэнгүй мэдээллийг &man.ntp.conf.5;-н
<literal>Хандалтыг Удирдах Дэмжлэг</literal> дэд хэсгээс үзнэ үү.</para>
</sect3>
</sect2>
<sect2>
<title>NTP Серверийг Ажиллуулах нь</title>
<para>NTP серверийг систем ачаалах үед эхлүүлэхийн тулд,
<literal>ntpd_enable="YES"</literal> гэсэн мөрийг <filename>/etc/rc.conf</filename> файлд нэмж бичих
хэрэгтэй. Хэрэв &man.ntpd.8;-д нэмэлт тугуудыг өгөх хүсэлтэй бол,
<filename>/etc/rc.conf</filename> файлд байгаа <varname>ntpd_flags</varname> параметрийг засах хэрэгтэй.</para>
<para>Машиныг дахин ачаалалгүйгээр серверийг эхлүүлэхийн тулд,
<command>ntpd</command> тушаалыг <filename>/etc/rc.conf</filename>-д заасан
<varname>ntpd_flags</varname> нэмэлт параметрүүдийн хамтаар өгөх хэрэгтэй. Жишээлбэл:</para>
<screen>&prompt.root; <userinput>ntpd -p /var/run/ntpd.pid</userinput></screen>
</sect2>
<sect2>
<title>ntpd-г Түр зуурын Интернэт Холболттой үед Хэрэглэх нь</title>
<para>&man.ntpd.8; програм зөв ажиллахын тулд байнгын Интернэт
холболт шаардлагагүй. Гэхдээ, хэрэгцээтэй үедээ гадагшаа залгадаг
тийм төрлийн түр зуурын холболттой бол, NTP трафикийг
гадагшаа залгах болон холболтыг бариад байхаас сэргийлэх нь чухал.
Хэрэв та PPP хэрэглэдэг бол, <filename>/etc/ppp/ppp.conf</filename> файл дотор байгаа
<literal>filter</literal> директивийг ашиглаж болно. Жишээ нь:</para>
<programlisting> set filter dial 0 deny udp src eq 123
# Prevent NTP traffic from initiating dial out
set filter dial 1 permit 0 0
set filter alive 0 deny udp src eq 123
# Prevent incoming NTP traffic from keeping the connection open
set filter alive 1 deny udp dst eq 123
# Prevent outgoing NTP traffic from keeping the connection open
set filter alive 2 permit 0/0 0/0</programlisting>
<para>Дэлгэрэнгүй мэдээллийг &man.ppp.8;-н <literal>PACKET FILTERING</literal>
хэсгээс болон <filename>/usr/share/examples/ppp/</filename>-д байгаа жишээнүүдээс авч болно.</para>
<note>
<para>Зарим Интернэт үйлчилгээ үзүүлэгчид бага дугаартай портуудыг хаасан байдаг бөгөөд
ингэснээр хариу нь таны машинд хэзээ ч хүрэхгүй болж NTP ажиллахгүй болдог.</para>
</note>
</sect2>
<sect2>
<title>Цааших Мэдээлэл</title>
<para>NTP серверийн баримтжуулалтыг HTML хэлбэрээр
<filename>/usr/share/doc/ntp/</filename>-с олж үзэж болно.</para>
</sect2>
</sect1>
<sect1 id="network-syslogd">
<sect1info>
<authorgroup>
<author>
<firstname>Том</firstname>
<surname>Рөүдс</surname>
<contrib>Хувь нэмэр болгон оруулсан </contrib>
</author>
</authorgroup>
</sect1info>
<title><command>syslogd</command> ашиглан алсын хост руу бүртгэх нь</title>
<para>Системийн бүртгэлтэй ажиллах нь аюулгүй байдлын болоод системийг
удирдах ажиллагааны чухал асуудал юм. Хостууд дунд зэргийн эсвэл том
сүлжээнд тархсан эсвэл тэдгээр нь төрөл бүрийн олон янзын сүлжээний хэсэг
болсон байх тохиолдолд эдгээр олон хостын бүртгэлийн файлуудыг
монитор хийх нь ихээхэн төвөгтэй болдог. Энэ тохиолдолд алсаас бүртгэхийг
тохируулах нь бүх л процессийг илүү тухтай болгодог.</para>
<para>Тусгайлан заасан бүртгэх хост руу төвлөрүүлэн бүртгэх нь бүртгэлийн
файлын удирдлагатай холбоотой зарим хүндрэлүүдийг багасгаж чаддаг.
&man.syslogd.8; болон &man.newsyslog.8; зэрэг &os;-ийн эх хэрэгслүүдийг
ашиглан бүртгэлийн файлын цуглуулга, нийлүүлэлт болон багасгалтыг нэг газар тохируулж
болдог. Дараах жишээ тохиргоонд <hostid role="fqdn">logserv.example.com</hostid>
гэж нэрлэгдсэн хост <hostid>A</hostid> локал сүлжээнээс бүртгэлийн мэдээллийг
цуглуулах болно. <hostid role="fqdn">logclient.example.com</hostid> гэж
нэрлэгдсэн хост <hostid>B</hostid> бүртгэлийн мэдээллийг сервер систем рүү
дамжуулах болно. Жинхэнэ тохиргоонд эдгээр хостууд зохих дамжуулах болон буцах
<acronym>DNS</acronym> эсвэл <filename>/etc/hosts</filename> файлд
оруулгууд шаардана. Тэгэхгүй бол өгөгдлийг сервер хүлээн авахгүй татгалзах
болно.</para>
<sect2>
<title>Бүртгэлийн серверийн тохиргоо</title>
<para>Бүртгэлийн серверүүд нь алсын хостуудаас бүртгэлийн мэдээллийг хүлээн
авахаар тохируулагдсан машинууд юм. Ихэнх тохиолдолд энэ нь тохиргоог
хялбар болгох зорилготой бөгөөд зарим тохиолдолд энэ нь удирдлагыг арай
сайжруулж байгаа хэлбэр байж болох юм. Аль ч шалтгаан байсан гэсэн
үргэлжлүүлэхээсээ өмнө цөөн хэдэн шаардлагыг дурдъя.</para>
<para>Зөв тохируулсан бүртгэлийн сервер дараах хамгийн бага шаардлагыг хангасан
байх шаардлагатай:</para>
<itemizedlist>
<listitem>
<para>Клиент болон сервер дээр 514-р порт руу
<acronym>UDP</acronym>-г дамжуулах боломжийг бүрдүүлэх галт хананы
дүрэм;</para>
</listitem>
<listitem>
<para>Клиент машинаас алсын мэдэгдлүүдийг хүлээн авахаар syslogd
тохируулагдсан байх;</para>
</listitem>
<listitem>
<para>syslogd сервер болон бүх клиент машинууд нь дамжуулах
болон буцах <acronym>DNS</acronym>-ийн хувьд зөв оруулгуудтай
эсвэл <filename>/etc/hosts</filename> файлд зөв тохируулсан
байх шаардлагатай.</para>
</listitem>
</itemizedlist>
<para>Бүртгэлийн серверийг тохируулахын тулд клиент нь
<filename>/etc/syslog.conf</filename>-д нэмэгдсэн байх
ёстой бөгөөд бүртгэх боломжийг зааж өгсөн байх шаардлагатай:</para>
<programlisting>+logclient.example.com
*.* /var/log/logclient.log</programlisting>
<note>
<para>Төрөл бүрийн дэмжигдсэн, байгаа <emphasis>facility</emphasis>
буюу <emphasis>боломжуудын</emphasis> талаарх дэлгэрэнгүй мэдээллийг
&man.syslog.conf.5; гарын авлагын хуудаснаас олж болно.</para>
</note>
<para>Нэмсэний дараа бүх <literal>facility</literal> мэдэгдлүүд
өмнө заасан <filename>/var/log/logclient.log</filename> файл руу
бүртгэгдэх болно.</para>
<para>Сервер машин дараах тохиргоог бас <filename>/etc/rc.conf</filename>
файлдаа хийсэн байх шаардлагатай:</para>
<programlisting>syslogd_enable="YES"
syslogd_flags="-a logclient.example.com -vv"</programlisting>
<para>Эхний тохиргоо нь <command>syslogd</command> демоныг эхлүүлэхийг
заах бөгөөд хоёр дахь нь клиетийн өгөгдлийг энэ сервер дээр хүлээн авахыг
зөвшөөрнө. Сүүлийн <option>-vv</option> хэсэг нь бүртгэж байгаа
мэдэгдлүүдийн гаралтыг илүү дэлгэрэнгүй болгоно. Энэ нь facility-г
тохируулахад ихээхэн ашигтай байдаг. Администраторууд ямар төрлийн
мэдэгдлүүд ямар facility-р бүртгэгдэж байгааг хянах боломжийг энэ нь
бүрдүүлдэг.</para>
<para>Олон клиентээс бүртгэлийг хүлээн авахын тулд олон <option>-a</option>
сонголтыг зааж өгч болно. <acronym>IP</acronym> хаягууд болон
бүхэл сүлжээний блокийг бас зааж өгч болох бөгөөд боломжит сонголтуудын
бүх жагсаалтыг &man.syslog.3; гарын авлагын хуудаснаас үзнэ үү.</para>
<para>Төгсгөлд нь бүртгэлийн файлыг үүсгэх хэрэгтэй. Хэрэглэгсэн арга нь
хамаагүй боловч &man.touch.1; үүнтэй адил тохиолдлуудад сайн
ажилладаг:</para>
<screen>&prompt.root; <userinput>touch <filename>/var/log/logclient.log</filename></userinput></screen>
<para>Энэ үед <command>syslogd</command> демоныг дахин
ажиллуулж шалгах ёстой:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
&prompt.root; <userinput>pgrep syslog</userinput></screen>
<para>Хэрэв <acronym>PID</acronym> буцаагдвал сервер нь амжилттай
дахин эхэлсэн гэсэн үг бөгөөд клиентийн тохиргоо ажиллаж эхэлнэ. Хэрэв
сервер дахин эхлээгүй бол ямар нэг зүйл болсон эсэхийг
<filename>/var/log/messages</filename> файл дахь мэдэгдлүүдээс
шалгаарай.</para>
</sect2>
<sect2>
<title>Клиентийн бүртгэлийн тохиргоо</title>
<para>Бүртгэл илгээгч клиент нь өөр дээрээ хуулбараа үлдээхээс гадна
бас бүртгэлийн сервер рүү бүртгэлийн мэдээллийг явуулдаг машин юм.</para>
<para>Бүртгэлийн серверүүдийн нэгэн адил клиентүүд нь бас хамгийн бага
шаардлагыг хангасан байх ёстой:</para>
<itemizedlist>
<listitem>
<para>&man.syslogd.8; нь бүртгэлийн сервер хүлээн авах ёстой
заасан төрлийн мэдэгдлүүдийг бүртгэлийн сервер рүү илгээхээр
тохируулагдсан байх ёстой;</para>
</listitem>
<listitem>
<para>Галт хана <acronym>UDP</acronym> пакетуудыг
514-р порт руу зөвшөөрөх ёстой;</para>
</listitem>
<listitem>
<para>Дамжуулах болон буцах <acronym>DNS</acronym>
тохируулагдсан эсвэл <filename>/etc/hosts</filename> файл зохих
оруулгуудтай байх шаардлагатай.</para>
</listitem>
</itemizedlist>
<para>Клиентийн тохиргоо нь серверийнхтэй харьцуулах юм бол арай зөөлөн
байдаг. Клиент машин нь <filename>/etc/rc.conf</filename> файлдаа
дараахийг нэмж өгсөн байх шаардлагатай байдаг:</para>
<programlisting>syslogd_enable="YES"
syslogd_flags="-s -vv"</programlisting>
<para>Өмнө дурдсаны адил эдгээр тохиргоонууд нь
<command>syslogd</command> демоныг ачаалж эхлэхэд эхлүүлэхийг
заах бөгөөд бүртгэх мэдэгдлүүдийг дэлгэрэнгүйгээр харуулах болно.
<option>-s</option> сонголт нь бусад хостуудаас бүртгэлийг энэ
клиент хүлээн авахаас сэргийлдэг.</para>
<para>Facility нь мэдэгдэл үүсгэгдэж байгаа тэр системийн хэсгийг
тайлбарладаг. Жишээ нь <acronym>ftp</acronym> болон
<acronym>ipfw</acronym> нь хоёулаа facility юм. Эдгээр хоёр
үйлчилгээний хувьд бүртгэлийн мэдэгдлүүд үүсэхэд ихэвчлэн дээрх
хоёр хэрэгслийг бүртгэлийн мэдэгдэл бүртээ агуулсан байдаг.
Facility нь бүртгэлийн мэдэгдэл ямар чухлыг тэмдэглэхэд хэрэглэгдэх
дараалал эсвэл түвшинтэй байдаг. Хамгийн түгээмэл нь
<literal>warning</literal> ба <literal>info</literal> юм.
Боломжит бүх facilty болон дарааллуудын жагсаалтыг
&man.syslog.3; гарын авлагын хуудаснаас үзнэ үү.</para>
<para>Бүртгэлийн серверийг клиентийн <filename>/etc/syslog.conf</filename>
файлд заасан байх шаардлагатай. Энэ жишээн дээр алсын сервер рүү
бүртгэлийн өгөгдлийг илгээхийн тулд <literal>@</literal>
тэмдгийг ашигласан бөгөөд доор дурдсан мөртэй төстэй
харагдана:</para>
<programlisting>*.* @logserv.example.com</programlisting>
<para>Нэмсэний дараа өөрчлөлтийг хүчинтэй болгохын тулд
<command>syslogd</command>-г дахин эхлүүлэх шаардлагатай:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
<para>Сүлжээгээр бүртгэлийн мэдэгдлүүдийг илгээж байгаа эсэхийг
тест хийхийн тулд клиент дээр &man.logger.1;-г ашиглаж мэдэгдлийг
<command>syslogd</command> руу илгээнэ:</para>
<screen>&prompt.root; <userinput>logger "Test message from logclient"</userinput></screen>
<para>Энэ мэдэгдэл клиент дээрх
<filename>/var/log/messages</filename> болон
сервер дээрх <filename>/var/log/logclient.log</filename>
файлд одоо орсон байх ёстой.</para>
</sect2>
<sect2>
<title>Бүртгэлийн серверүүдийг дибаг хийх</title>
<para>Зарим тохиолдолд хэрэв бүртгэлийн сервер дээр мэдэгдлүүд нь
хүлээн авагдаагүй бол дибаг хийх шаардлагатай байж болох юм.
Хэд хэдэн шалтгаанаас болж ийм байдалд хүрч болох юм. Хамгийн
түгээмэл хоёр нь сүлжээний холболтын болон <acronym>DNS</acronym>-тэй
холбоотой асуудлууд юм. Эдгээр тохиолдлуудыг тест хийхийн тулд
хоёр хост хоёулаа <filename>/etc/rc.conf</filename> файлд заагдсан
хостын нэрээрээ нэг нэгэн рүүгээ хүрч чадаж байгааг шалгах
хэрэгтэй. Хэрэв энэ зөв ажиллаж байгаа бол <filename>/etc/rc.conf</filename>
файлд <literal>syslogd_flags</literal> тохиргоог өөрчлөх
шаардлагатай болно.</para>
<para>Дараах жишээн дээр <filename>/var/log/logclient.log</filename> нь хоосон
бөгөөд <filename>/var/log/messages</filename> файл нь амжилтгүй болсон
шалтгааныг харуулна. Дибаг хийж байгаа гаралтыг илүү дэлгэрэнгүй харуулахын
тулд дараах жишээтэй төстэйгөөр <literal>syslogd_flags</literal>
тохируулгыг өөрчилж дахин ачаалах хэрэгтэй:</para>
<programlisting>syslogd_flags="-d -a logclien.example.com -vv"</programlisting>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput></screen>
<para>Доор дурдсантай төстэй дибаг өгөгдөл дахин ачаалсны дараа
дэлгэц дээр хурдан гарч өнгөрнө:</para>
<screen>logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
syslogd: restarted
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
Logging to FILE /var/log/messages
syslogd: kernel boot file is /boot/kernel/kernel
cvthname(192.168.1.10)
validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
rejected in rule 0 due to name mismatch.</screen>
<para>Мэдэгдлүүд нэр зөрснөөс болоод дамжихгүй байгааг эндээс
харж болно. Тохиргоог алхам алхмаар дахин шалгасны дараа
<filename>/etc/rc.conf</filename> дахь дараах мөр
буруу бичигдсэн бөгөөд асуудалтай байгааг олж харна:</para>
<programlisting>syslogd_flags="-d -a logclien.example.com -vv"</programlisting>
<para>Энэ мөр <literal>logclien</literal> биш
<literal>logclient</literal> гэдгийг агуулсан байх ёстой.
Зөв болгож засан дахин ачаалсны дараа хүлээж байсан үр
дүнгээ харах болно:</para>
<screen>&prompt.root; <userinput>/etc/rc.d/syslogd restart</userinput>
logmsg: pri 56, flags 4, from logserv.example.com, msg syslogd: restart
syslogd: restarted
logmsg: pri 6, flags 4, from logserv.example.com, msg syslogd: kernel boot file is /boot/kernel/kernel
syslogd: kernel boot file is /boot/kernel/kernel
logmsg: pri 166, flags 17, from logserv.example.com,
msg Dec 10 20:55:02 &lt;syslog.err&gt; logserv.example.com syslogd: exiting on signal 2
cvthname(192.168.1.10)
validate: dgram from IP 192.168.1.10, port 514, name logclient.example.com;
accepted in rule 0.
logmsg: pri 15, flags 0, from logclient.example.com, msg Dec 11 02:01:28 trhodes: Test message 2
Logging to FILE /var/log/logclient.log
Logging to FILE /var/log/messages</screen>
<para>Энэ үед мэдэгдлүүдийг зөв хүлээн аван зөв
файлд бичих болно.</para>
</sect2>
<sect2>
<title>Аюулгүй байдлын хувьд бодолцох зүйлс</title>
<para>Сүлжээний аль ч үйлчилгээний нэгэн адил энэ тохиргоог
хийхээсээ өмнө аюулгүй байдлын шаардлагуудыг бодолцох ёстой. Заримдаа
бүртгэлийн файлууд нь локал хост дээр идэвхжүүлсэн үйлчилгээнүүд,
хэрэглэгчдийн бүртгэл болон тохиргооны өгөгдлийн талаарх эмзэг
өгөгдлүүдийг агуулсан байж болох юм. Клиентээс сервер рүү илгээсэн
сүлжээний өгөгдөл нь шифрлэгдээгүй эсвэл нууц үгээр хамгаалагдаагүй
байдаг. Хэрэв шифрлэх шаардлагатай бол өгөгдлийг шифрлэсэн хоолойгоор
дамжуулах <filename role="package">security/stunnel</filename>
хэрэгслийг ашиглаж болох юм.</para>
<para>Локал аюулгүй байдал нь бас л асуудал юм. Бүртгэлийн файлууд нь
хэрэглэж байхад юм уу эсвэл бүртгэлийн багасгах үед шифрлэгддэггүй.
Локал хэрэглэгчид эдгээр файлуудад хандаж системийн тохиргооны талаар
нэмэлт мэдээлэл олж авч болох юм. Ийм тохиолдолд эдгээр файлууд дээр
зөв зөвшөөрлүүдийг тавих нь чухал юм. &man.newsyslog.8; хэрэгсэл нь
шинээр үүсгэгдсэн болон багасгагдсан бүртгэлийн файлууд дээр зөвшөөрөл
тавихыг дэмждэг. Бүртгэлийн файлууд дээр <literal>600</literal>
горимыг тавьснаар хүсээгүй локал хэрэглэгчид тэдгээрийг шиншлэх
боломжийг хаах юм.</para>
</sect2>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->
<!-- LocalWords: config mnt www -->