Различия между версиями 7 и 8
Версия 7 от 2008-07-09 23:42:41
Размер: 9607
Редактор: MaximByshevskiKonopko
Комментарий: Ожидаются скриншоты и логи.
Версия 8 от 2008-07-10 02:20:15
Размер: 10638
Редактор: MaximByshevskiKonopko
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 6: Строка 6:
##ожидаются скриншоты
{{attachment:../terminal_server_alterator_network.png}}
Строка 12: Строка 13:
Настройки DHCP для загрузки тонких клиентов. Посмотрим ещё раз /etc/DHCP/. Тут присутствует внешняя сеть и развесистый блок для передачи настроек во внутреннюю сеть. Из всех настроек лектор выделил бы три интересных: Настройки DHCP для загрузки тонких клиентов. Посмотрим ещё раз `/etc/DHCP/dhcpd.conf`.

{{{
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;

option option-128 code 128 = string;
option option-129 code 129 = string;

use-host-decl-names on;

next-server 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.20 192.168.0.250;
    option domain-name "example.com";
    option domain-name-servers 192.168.0.1;
    option broadcast-address 192.168.0.255;
    option routers 192.168.0.1;
    option subnet-mask 255.255.255.0;
    option root-path "192.168.0.1:/var/lib/ltsp/i586";
    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i586/pxelinux.0";
    } else if substring( option vendor-class-identifier, 0, 9 ) = "Etherboot" {
        filename "/ltsp/i586/nbi.img";
        #filename "/ltsp/i586/pxelinux.0";
    } else {
        option-129 = " initrd=/ltsp/i586/initrd.img";
        filename "/ltsp/i586/vmlinuz";
    }
}

subnet 10.0.2.0 netmask 255.255.255.0 {}
}}}

Тут присутствует внешняя сеть и развесистый блок для передачи настроек во внутреннюю сеть. Из всех настроек лектор выделил бы три интересных:
Строка 21: Строка 59:
Настройки tftp. Он по умолчанию запускается. Всё, что можно при помощи tftp сделать --- скачать определённый файл. Если у нас работает pxe, то скачивается {{{pxelinux.0}}}. Это загрузчик, часть syslinux. Сам pxelinux... что он делает, после того, как он загружается на рабочей машине. Он первым делом пытается скачать конфиг. Сначала он перебирает конфиги с IP и мак-адресом. В {{{/var/lib/tftpboot/ltsp/i586/}}} лежат все файлы, которые отдаются по tftp, в {{{pxelinux.cfg/default}}} лежит дефолтовый конфиг. Посмотрим на него. Синтаксис у него такой же, как и везде в syslinux. Мы видим, что ядро специфическое, используется специфический root, строчка nfsroot указывает, где находится корневая ФС. Настройки tftp. Он по умолчанию запускается. Всё, что можно при помощи tftp сделать --- скачать определённый файл. Если у нас работает pxe, то скачивается `pxelinux.0`. Это загрузчик, часть syslinux. Сам pxelinux... что он делает, после того, как он загружается на рабочей машине. Он первым делом пытается скачать конфиг. Сначала он перебирает конфиги с IP и мак-адресом. В `/var/lib/tftpboot/ltsp/i586/` лежат все файлы, которые отдаются по tftp, в `pxelinux.cfg/default` лежит дефолтовый конфиг. Посмотрим на него. Синтаксис у него такой же, как и везде в syslinux. Мы видим, что ядро специфическое, используется специфический root, строчка nfsroot указывает, где находится корневая ФС.
Строка 25: Строка 63:
После выполнения загрузчика (который {{{pxelinux.0}}}) --- грузится ядро, initrd, подключается корневая ФС по сети и оттуда происходит дальнейший старт клиента. После выполнения загрузчика (который `pxelinux.0`) --- грузится ядро, initrd, подключается корневая ФС по сети и оттуда происходит дальнейший старт клиента.
Строка 41: Строка 79:
|| 17 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, DmitryChistikov || || || || 18 || 1 || 1 || 1 || || 1 || MaximByshevskiKonopko, DmitryChistikov || || ||

Терминальный сервер со стороны администратора

Теперь перейдём к рассмотрению терминального сервера, точнее к рассмотрению различных его служб.

Альтератор. Изменился раздел настройки сети.

../terminal_server_alterator_network.png

Что нужно организовать для сетевой загрузки:

Настройки DHCP для загрузки тонких клиентов. Посмотрим ещё раз /etc/DHCP/dhcpd.conf.

ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;

option option-128 code 128 = string;
option option-129 code 129 = string;

use-host-decl-names on;

next-server 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.20 192.168.0.250;
    option domain-name "example.com";
    option domain-name-servers 192.168.0.1;
    option broadcast-address 192.168.0.255;
    option routers 192.168.0.1;
    option subnet-mask 255.255.255.0;
    option root-path "192.168.0.1:/var/lib/ltsp/i586";
    if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
        filename "/ltsp/i586/pxelinux.0";
    } else if substring( option vendor-class-identifier, 0, 9 ) = "Etherboot" {
        filename "/ltsp/i586/nbi.img";
        #filename "/ltsp/i586/pxelinux.0";
    } else {
        option-129 = " initrd=/ltsp/i586/initrd.img";
        filename "/ltsp/i586/vmlinuz";
    }
}

subnet 10.0.2.0 netmask 255.255.255.0 {}

Тут присутствует внешняя сеть и развесистый блок для передачи настроек во внутреннюю сеть. Из всех настроек лектор выделил бы три интересных:

  • Обратите внимание, что здесь присутствует адрес next-server (это тот tftp-сервер, с которого клиенты получают загрузочные файлы, вполне может не совпадать с DHCP-сервером)
  • Интересное начинается в конце. Посмотрим на if. Речь о чём: в процессе загрузки по PXE клиент получает несколько настроек, в числе которых IP, машрутизация, dns. Крое того, предоставляется имя файла на сервере tftp с загрузчиком. Обратите внимание, что параметр filename встречается трижды: формат конфига DHCP довольно сложный, и тут могут встречаться условные операторы. В данном случае, условный оператор выбирает разные загрузочные файлы в зависимости от клиента.
  • На самом деле, на этом не заканчиваются те настройки, которые можно передать по DHCP. При сетевой загрузке наличествует такая штука, как подключение сетевых дисков. По сети подключается диск, который передаётся параметром option root_path. В этом каталоге находится корневая ФС, которая подключается сети как корневая ФС для клиента.

Если у вас не работает загрузка по сети (ваша сетевая карта не поддерживает PXE), то можно поступить следующим образом:

  • Купить карточку с PXE
  • воспользоваться rom-o-matic.net (он же Etherboot). Он позволяет изготовить bootrom для сетевой карты. Короче говоря, для конкретной карты можно сгенерировать образ, который можно доставить на компьютер (на флопик, на сидюк, в загрузочную запись, в BIOS).

Настройки tftp. Он по умолчанию запускается. Всё, что можно при помощи tftp сделать --- скачать определённый файл. Если у нас работает pxe, то скачивается pxelinux.0. Это загрузчик, часть syslinux. Сам pxelinux... что он делает, после того, как он загружается на рабочей машине. Он первым делом пытается скачать конфиг. Сначала он перебирает конфиги с IP и мак-адресом. В /var/lib/tftpboot/ltsp/i586/ лежат все файлы, которые отдаются по tftp, в pxelinux.cfg/default лежит дефолтовый конфиг. Посмотрим на него. Синтаксис у него такой же, как и везде в syslinux. Мы видим, что ядро специфическое, используется специфический root, строчка nfsroot указывает, где находится корневая ФС.

В принципе, вовсе не обязательно вкомпилировать NFS-клиент в ядро, можно сделать аналогичный конфиг с обычным ядром.

После выполнения загрузчика (который pxelinux.0) --- грузится ядро, initrd, подключается корневая ФС по сети и оттуда происходит дальнейший старт клиента.

Возвращаемся к тому, что происходит дальше. Дальше происходит автоматическое обновление DNS, значит, DNS тоже настроен. В качестве DNS-сервера каким-то образом используется avahi-daemon.

Что ещё не посмотрели? NFS. На NFS сервера находятся корневые ФС клиентов. Делается это следующим образом: в линуксе по умолчанию (это ещё из юникс-систем досталось) для подключения сетевых томов используется NFS, network file system, специальный протокол сетевой ФС. Отличительной особенностью NFS являются две вещи: во-первых, он реализован поверх udp с соответствующими ограничениями udp. То есть, NFS-клиент и NFS-сервер обмениваются друг с другом датаграммами, и тот факт, что операция записи не прошла или что случилось, отслеживается на уровне прикладном, а не транспортном. Однако внутри NFS есть много интересного: NFS является идиопатентной, то есть несколько одинаковых действиях выполняются как одно. Единственная трудно решаемая проблема --- блокировки. Раньше никаких блокировок не было, потом появился nfslockd. Вторая особенность --- уровень доверия NFS вынесен на уровень IP. То есть машина с таким-то IP либо имеет доступ к NFS, либо нет. Так было в NFS 2 и 3, так же вроде NFS 4. Когда говорится хост --- читай, пользователь root на хосте. Другое дело, что в случае тонких клиентов мы отдаём кому угодно ФС, но только на чтение, то есть всё в порядке. Соответственно, настройка NFS-сервера, программы, которая раздаёт NFS по сети, довольно простая. Слева путь, справа список хостов и параметры в скобках через запятую. Если списка хостов нет, то отдаётся всем. ro --- readonly, no_root_squash --- отключение squashing'а, то есть обработки запросов от клиентов с UID=0 как запросов от пользователя nobody. Но, опять же, запросы только на чтение. Сервис, который обеспечивает NFS, называется unfsd, который представляет из себя урезанную версию обычного nfsd.


Сведения о ресурсах

Готовность (%)

Продолжительность (ак. ч.)

Подготовка (календ. ч.)

Полный текст (раб. д.)

Предварительные знания

Level

Maintainer

Start date

End date

18

1

1

1

1

MaximByshevskiKonopko, DmitryChistikov


CategoryLectures CategoryPspo CategoryMpgu CategoryUneex

PspoClasses/080709/03TerminalServer (последним исправлял пользователь MaximByshevskiKonopko 2008-10-09 21:39:51)