FreeBSD гарын авлага
Өмнөх | Бүлэг 30. Сүлжээний орчны Серверүүд | Дараах

# 30.5. Автомат Сүлжээний Тохиргоо (DHCP)

Бичсэн Грег Саттер. Орчуулсан Лодойсамбын Баянзул.

## 30.5.1. DHCP гэж юу вэ?

DHCP, Dynamic Host Configuration Protocol буюу Динамик Хостын Тохиргооны Протокол нь систем ямар байдлаар сүлжээнд холбогдох, тухайн сүлжээнд харилцаанд орохын тулд шаардагдах мэдээллийг хэрхэн олж авахыг зааж өгдөг. FreeBSD нь OpenBSD 3.7-с авсан OpenBSD-н `dhclient`-г хэрэглэдэг. Энэ бүлэгт гарах `dhclient`-р ISC ба OpenBSD DHCP харилцагчийг хоёуланг нь төлөөлүүлсэн болно. DHCP серверийн хувьд ISC тархацын серверийг авч үзэх болно.

## 30.5.2. Энэ хэсэгт авч үзэх зүйлс

Энэ хэсэгт ISC ба OpenBSD DHCP харилцагчийн харилцагч талыг бүтээж байгаа элементүүд, болон ISC DHCP системийн сервер талыг бүтээж байгаа элементүүдийг хоёуланг нь авч үзэх болно. Харилцагч талын програм, `dhclient`, нь FreeBSD-тэй нэгдмэл байдлаар ирдэг бол, сервер талын хэсэг нь `net/isc-dhcp42-server` портоос суулгах боломжтой байдлаар ирдэг. dhclient(8), dhcp-options(5), ба dhclient.conf(5) заавар хуудсууд болон доор өгөгдсөн зөвлөмжүүд нь хэрэг болно.

## 30.5.3. Хэрхэн ажилладаг вэ?

Харилцагч машин дээр `dhclient` DHCP харилцагчийг ажиллуулахад, тохиргооны мэдээллийг хүссэн хүсэлтийг цацаж эхэлнэ. Анхдагч байдлаар, эдгээр хүсэлтүүд нь UDP 68-р портоос гарч, серверийн UDP 67 порт руу илгээгдэнэ. Сервер харилцагчид IP хаяг болон сүлжээний баг, чиглүүлэгч, DNS серверийн хаяг зэрэг хэрэгтэй мэдээллийг хариу илгээнэ. Энэ бүх мэдээллийг DHCP “түрээслэх” хэлбэрээр өгөх ба зөвхөн тодорхой хугацааны туршид хүчинтэй байна (DHCP серверийг хариуцагч тохируулж өгсөн байна). Ийм байдлаар, сүлжээнд холбогдохоо больсон харилцагчийн ашиглагдаагүй IP хаягуудыг автоматаар буцааж авах боломжтой болно.

DHCP харилцагч серверээс өргөн мэдээллийг авч чадна. Бүрэн жагсаалтыг dhcp-options(5)-с олж үзэж болно.

## 30.5.4. FreeBSD-тэй нэгдмэл байдал

FreeBSD нь OpenBSD DHCP харилцагч, `dhclient`-г өөртэйгөө бүрэн нэгтгэсэн байдаг. DHCP сервер ажиллаж байгаа сүлжээнд сүлжээний тохиргоог хийх нарийн чимхлүүр ажлаас хөнгөвчлөх үүднээс, DHCP харилцагчийг систем суулгагч болон үндсэн системийн аль алинд хамт оруулж өгсөн байдаг.

sysinstall нь DHCP-г дэмждэг. sysinstall-р сүлжээний интерфэйсийг тохируулахад асуудаг хоёр дахь асуулт бол: “Та энэ интерфэйсийг DHCP-р тохируулахыг хүсэж байна уу?”. Зөвшөөрсөн хариулт өгсөн тохиолдолд `dhclient`-г ажиллуулах бөгөөд, хэрэв амжилттай бол сүлжээний тохиргоо автоматаар хийгдэнэ.

Систем ачаалах үед DHCP ашигладаг болгохын тулд, хоёр зүйлийг хийх хэрэгтэй:

- `bpf` төхөөрөмж цөмтэй хамт эмхэтгэгдсэн байх ёстой. Үүний тулд, `device bpf` мөрийг цөмийн тохиргооны файлд нэмж бичээд цөмийг дахин бүтээх хэрэгтэй. Цөмийг бүтээх талаар дэлгэрэнгүй мэдээллийг Бүлэг 9 хэсгээс авна уу.

  `bpf` төхөөрөмж нь FreeBSD-н `GENERAL` цөмийн нэг хэсэг бөгөөд, DHCP-г ажиллуулахын тулд тусгайлан шинээр цөм бүтээх шаардлагагүй.

  > Тэмдэглэл: Аюулгүй байдлын талаар сэтгэл зовнидог хүмүүст зөвлөхөд, `bpf` нь пакет шиншлэгчдийг зөв ажиллах боломжийг олгодог төхөөрөмж болохыг анхааралдаа авна уу (хэдийгээр тэдгээр програм ажиллахын тулд `root` эрх хэрэгтэй боловч). DHCP-г ашиглахын тулд `bpf` заавал хэрэгтэй, гэвч хэрэв та аюулгүй байдлыг маш ихээр анхааралдаа авдаг бол, зөвхөн хэзээ нэгэн цагт DHCP-г ашиглахын тулд `bpf`-г цөмд нэмэх хэрэггүй.

- Анхдагчаар FreeBSD-н DHCP тохиргоо ар талд буюу асинхрон (asynchronously) горимд хийгддэг. DHCP дуустал бусад скриптүүд ажилладаг бөгөөд ингэснээр системийн эхлүүлэлтийг хурдасгадаг.

  Ард ажиллах DHCP нь DHCP сервер хүсэлтүүдэд хурдан хариу өгч DHCP тохиргооны процесс түргэн хийгдэх үед сайн ажилладаг. Гэхдээ DHCP зарим системүүд дээр хийгдэж дуустлаа удаан ажиллаж болно. DHCP дуусахаас өмнө сүлжээний үйлчилгээнүүд ажиллахаар оролдвол амжилтгүй болно. DHCP-г синхрон (synchronous) горимд ашиглах нь DHCP тохиргоог дуустал эхлүүлэлтийг түр зогсоож асуудал гарахаас сэргийлдэг.

  Бусад эхлүүлэлтүүд үргэлжилж байх үед ар талд DHCP сервер рүү холбогдохын тулд (асинхрон горим) `/etc/rc.conf` файлд “`DHCP`” гэсэн утгыг ашиглана:

      ifconfig_fxp0="DHCP"

  DHCP дуустал эхлэлийг түр зогсоохын тулд синхрон горимыг “`SYNCDHCP`” утгатайгаар хэрэглэнэ:

      ifconfig_fxp0="SYNCDHCP"

  > Тэмдэглэл: Хэсэг 12.8-д тайлбарласан ёсоор, эдгээр жишээн дээр байгаа `fxp0`-г динамикаар тохируулах гэж байгаа интерфэйсийн нэрээр сольж бичнэ.

  Хэрэв таны `dhclient` өөр газар байгаа бол, эсвэл хэрэв та `dhclient`-г нэмэлт тугуудын хамт ажиллуулах хүсэлтэй бол, дараах мөрүүдийг нэмж бичнэ үү (шаардлагатай бол засаж бичнэ үү):

      dhclient_program="/sbin/dhclient"
      dhclient_flags=""

DHCP сервер dhcpd нь портуудын цуглуулгад байгаа `net/isc-dhcp42-server` портын нэг хэсэг байдлаар ирдэг. Энэ порт нь ISC DHCP сервер болон түүний баримтуудыг агуулсан байдаг.

## 30.5.5. Файлууд

- `/etc/dhclient.conf`

  `dhclient` нь `/etc/dhclient.conf` гэсэн тохиргооны файлыг шаарддаг. Ихэвчлэн энэ файл зөвхөн тайлбаруудаас бүрдэх ба анхдагч утгууд нь харьцангуй өөрчлөх шаардлагагүйгээр өгөгдсөн байдаг. Энэ тохиргооны файлыг dhclient.conf(5) заавар хуудсанд тайлбарласан байгаа.

- `/sbin/dhclient`

  `dhclient` нь статикаар холбогдсон байх ба `/sbin` дотор байрлана. dhclient(8) хуудаснаас `dhclient`-н талаар дэлгэрэнгүй мэдээллийг авна уу.

- `/sbin/dhclient-script`

  `dhclient-script` нь зөвхөн FreeBSD-д байдаг, DHCP харилцагчийг тохируулах зориулалттай тусгай скрипт юм. Энэ скриптийг dhclient-script(8) заавар хуудсанд тайлбарласан байх ба, ажиллуулахын тулд хэрэглэгч ямар нэг засвар хийх шаардлагагүй.

- `/var/db/dhclient.leases.`interface``

  DHCP харилцагч нь түрээсэлж авсан хаягуудаа агуулсан өгөгдлийн санг энэ файлд хадгалах бөгөөд бүртгэл маягаар бичдэг. dhclient.leases(5) хэсэгт илүү дэлгэрэнгүй тайлбар бий.

## 30.5.6. Гүнзгийрүүлэн унших

DHCP протокол нь бүрэн хэмжээгээр RFC 2131-д тодорхойлогдсон байдаг. Нэмэлт эх үүсвэрүүд http://www.dhcp.org/-д мөн бий.

## 30.5.7. DHCP Серверийг Суулгах болон Тохируулах

### 30.5.7.1. Энэ хэсэгт авч үзэх зүйлс

Энэ хэсэгт ISC (Internet Systems Consortium) DHCP серверийг ашиглан FreeBSD системийг хэрхэн DHCP сервер байдлаар ажиллуулах талаар авч үзэх болно.

Сервер нь FreeBSD-н нэг хэсэг байдлаар ирдэггүй бөгөөд ийм үйлчилгээ үзүүлэхийн тулд `net/isc-dhcp42-server` портыг суулгах хэрэгтэй болдог. Портуудын цуглуулгын хэрхэн ашиглах талаар Бүлэг 5 хэсгээс дэлгэрэнгүй мэдээллийг авна уу.

### 30.5.7.2. DHCP Серверийг суулгах нь

FreeBSD системийг DHCP сервер байдлаар тохируулахын тулд, bpf(4) төхөөрөмж цөмд эмхэтгэгдсэн байх ёстой. Үүний тулд, цөмийн тохиргооны файл дотор `bpf төхөөрөмж`ийг нэмээд цөмийг дахин бүтээх хэрэгтэй. Цөмийг бүтээх талаар дэлгэрэнгүй мэдээллийг Бүлэг 9 хэсгээс үзнэ үү.

`bpf` төхөөрөмж нь FreeBSD-н `GENERAL` цөмийн нэг хэсэг бөгөөд, DHCP-г ажиллуулахын тулд тусгайлан шинээр цөм бүтээх шаардлагагүй.

> Тэмдэглэл: Аюулгүй байдлын талаар сэтгэл зовнидог хүмүүст зөвлөхөд, `bpf` нь пакет шиншлэгчдийг зөв ажиллах боломжийг олгодог төхөөрөмж болохыг анхааралдаа авна уу (хэдийгээр тэдгээр програм ажиллахын тулд `root` эрх хэрэгтэй боловч). DHCP-г ашиглахын тулд `bpf` заавал хэрэгтэй, гэвч хэрэв та аюулгүй байдлыг маш ихээр анхааралдаа авдаг бол, зөвхөн хэзээ нэгэн цагт DHCP-г ашиглахын тулд `bpf`-г цөмд нэмэх хэрэггүй.

Үүний дараа `net/isc-dhcp42-server` порттой хамт ирсэн жишээ `dhcpd.conf` файлыг засах хэрэгтэй. Анхдагч байдлаар, `/usr/local/etc/dhcpd.conf.sample` гэсэн файл байх ба өөрчлөлт хийхийнхээ өмнө энэ файлыг `/usr/local/etc/dhcpd.conf` нэртэйгээр хуулж тавих хэрэгтэй.

### 30.5.7.3. DHCP Серверийг тохируулах

`dhcpd.conf` нь дэд сүлжээ болон хостуудтай холбоотой өгөгдөл зарлалтаас бүрдэх ба жишээн дээр тайлбарлавал илүү амархан байх болов уу:

    option domain-name "example.com";
    option domain-name-servers 192.168.4.100;
    option subnet-mask 255.255.255.0;

    default-lease-time 3600;
    max-lease-time 86400;
    ddns-update-style none;

    subnet 192.168.4.0 netmask 255.255.255.0 {
      range 192.168.4.129 192.168.4.254;
      option routers 192.168.4.1;
    }

    host mailhost {
      hardware ethernet 02:03:04:05:06:07;
      fixed-address mailhost.example.com;
    }

  Энэ тохируулга нь анхдагч хайлтын домэйн байдлаар харилцагчид өгөх домэйныг заана. Энэ талаар дэлгэрэнгүй мэдээллийг resolv.conf(5) хэсгээс үзнэ үү.
  Энэ тохируулга нь харилцагчийн хэрэглэх ёстой DNS серверүүдийг таслалаар холбосон жагсаалт байна.
  Хэрэглэгчид өгөх сүлжээний багийг заана.
  Түрээслэлт (lease) хүчинтэй байх тийм тусгай хугацааг харилцагч хүсэж болох юм. Хэрэв харилцагч хүсээгүй бол сервер энд заасан дуусах хугацаагаар (секундээр) түрээс хийх болно.
  Серверийн түрээслүүлэх хамгийн дээд хугацааг заана. Харилцагч үүнээс урт хугацаагаар түрээслэх хүсэлт тавибал хүсэлтийг хүлээж авах боловч зөвхөн `max-lease-time` секундын туршид хүчинтэй байна.
  Түрээслэх болон эргүүлж авахад DHCP сервер DNS-г шинэчлэхийг оролдох шаардлагатай эсэхийг зааж өгнө. ISC шийдлийн хувьд, энэ тохируулга заавал байх ёстой.
  Харилцагчид оноох IP хаягуудын хүрээг заана. Энэ хүрээнд багтах IP хаягуудыг харилцагчид өгөх болно.
  Харилцагчид өгөх анхдагч гарцыг заана.
  Хостын MAC хаягийг заана (ингэснээр DHCP сервер тухайн хостыг хүсэлт тавихад таньж чадна).
  Хостод тогтмол IP хаяг оноохыг заана. Энд хостын нэрийг хэрэглэж болохыг тэмдэглэх хэрэгтэй. DHCP сервер IP хаяг түрээслүүлэх хариуг өгөхөөс өмнө хост нэрийг тайлах болно.

`dhcpd.conf` файлыг бичиж дууссаны дараа, `/etc/rc.conf` файл дотор DHCP серверийг идэвхжүүлэх хэрэгтэй, өөрөөр хэлбэл доорх мөрүүдийг нэмж бичих хэрэгтэй:

    dhcpd_enable="YES"
    dhcpd_ifaces="dc0"

`dc0`-г өөрийн тань DHCP сервер DHCP харилцагчдын хүсэлтийг хүлээж авах ёстой интерфэйсийн нэрээр (эсвэл интерфэйсүүдийг зайгаар тусгаарлан) сольж бичих хэрэгтэй.

Дараа нь, доорх тушаалыг өгөн серверийг ажиллуулах хэрэгтэй:

    # service isc-dhcpd start

Серверийнхээ тохиргооны файлд өөрчлөлт оруулах бүрдээ, `SIGHUP` дохиог dhcpd-д өгөх нь бусад дэмонуудын хувьд тохиргоог дахин дууддаг шиг биш харин тохиргоог дахин ачаалахгүй болохыг анхаарах хэрэгтэй. Процессийг зогсоохын тулд `SIGTERM` дохиог өгөх хэрэгтэй ба дээрх тушаалыг өгөн дахин эхлүүлэх хэрэгтэй.

### 30.5.7.4. Файлууд

- `/usr/local/sbin/dhcpd`

  dhcpd нь статикаар холбогдсон байх ба `/usr/local/sbin` дотор байрлана. Порттой хамт суусан dhcpd(8) заавар хуудаснаас dhcpd-н талаар дэлгэрэнгүй мэдээллийг авна уу.

- `/usr/local/etc/dhcpd.conf`

  dhcpd нь `/usr/local/etc/dhcpd.conf` гэсэн тохиргооны файлыг шаарддаг. Энэ файл дотор харилцагчид өгөх бүх мэдээллээс гадна серверийн өөрийн үйл ажиллагаатай холбоотой мэдээлэл байх ёстой. Энэ тохиргооны файлыг портоос суусан dhcpd.conf(5) заавар хуудсанд тайлбарласан байгаа.

- `/var/db/dhcpd.leases`

  DHCP сервер нь түрээслүүлсэн хаягуудаа агуулсан өгөгдлийн санг энэ файлд хадгалах бөгөөд бүртгэл маягаар бичдэг. Портоос суусан dhcpd.leases(5) заавар хуудсанд илүү дэлгэрэнгүй тайлбар бий.

- `/usr/local/sbin/dhcrelay`

  dhcrelay-г нэг DHCP сервер харилцагчаас хүлээн авсан хүсэлтийг өөр сүлжээнд байгаа нөгөө DHCP сервер рүү дамжуулдаг, нарийн бүтэцтэй орчинд хэрэглэнэ. Хэрэв энэ функцыг ашиглах шаардлагатай бол, `net/isc-dhcp42-relay` портыг суулгаарай. Порттой хамт ирэх dhcrelay(8) заавар хуудаснаас дэлгэрэнгүй мэдээллийг авна уу.

Өмнөх | Эхлэл | Дараах
Сүлжээний Мэдээллийн Систем (NIS/YP) | Дээш | Домэйн Нэрийн Систем (DNS)

Энэ болон бусад баримтуудыг ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/ хаягаас татаж авч болно.

FreeBSD-ийн талаар <questions@FreeBSD.org> хаягтай холбоо барихаасаа өмнө баримтыг уншина уу.
Энэ бичиг баримттай холбоотой асуулт байвал <doc@FreeBSD.org> хаягаар цахим захидал явуулна уу.
Энэ бичиг баримтын орчуулгатай холбоотой асуулт байвал <admin@mnbsd.org> хаягаар цахим захидал явуулна уу.