Прикладной уровень: возможности системы
Цели:
- Активация интерпретатора
- Интерпретация
Прелюдия:
что такое dæmon (даймон или даже демон )?
- кто и когда запускает демонов?
схемы типа sysvinit
схемы типа rc.d (с зависимостями)
схемы типа systemd (с зависимостями, условиями запуска и сокет-активацией)
Задачи:
- Связывание порта и интерпретатора
- Анонс прикладных служб
- Учёт потребления ресурсов прикладными службами. Хотя казалось бы.
Связь с интерпретатором
- Делает сам демон:
- создание обслуживание сокета (bind + listen)
- respawn при закрытии соединения
- обслуживание нескольких соединений (в т. ч. общие и специфичные для прикладного уровня ограничения)
Делает метадемон [x]inetd:
- интерпретатор обрабатывает stdin (из сокета), stdout (в сокет) и stderr (журнал)
- см. выше
Делает служба запуска (на примере systemd):
- Запуск демонов
- Запуск интерпретаторов
- Сокет-активация бывших демонов
Добавлять ли в Д/З виртуалку с упражнениями над systemd?
Связь с отдельными функциями: RPC
Проблема: динамическое выделение входных портов.
- Portmapper (rpcbind, порт 111)
/etc/rpc
- rpcinfo
Д/З
Запуск сетевых служб
- Посмотреть список зарегистрированных служб:
# chkconfig --list
Обратите внимание на то, что команда chkconfig управляет и запуском служб посредством sysvinit, и метадемоном xinetd
Остановить службу dhcpd и посмотреть, что изменилось (можно также проверить с клиента, что DHCP недоступен):
# netlist > full # service dhcpd status … # service dhcpd stop … # netlist > no_dhcp # diff -u full no_dhcp … # service dhcpd start …
Что делает утилита netlist?
Посмотреть выдачу утилиты rpcinfo без параметров, с ключом -s и с ключом -p. Что эти команды делают?
Метадемон xinetd
Посмотреть настройки xinetd на сервере:
# cat /etc/xinetd.conf … # ls /etc/xinetd.d/ … # cat /etc/xinetd.d/bftpd-tcp … # grep disable /etc/xinetd.d/* …
Обратите внимание, как выключаются зарегистрированные inetd-фильтры
(пример уже воспроизведён). Воспроизвести пример «Обслуживание прикладного уровня в Linux» из учебника (подключаться с клиентской машины с помощью netcat вместо telnet)
- Посмотреть самодельный xinetd-файл и проверить его работу:
[root@uneex ~]# chkconfig --list calendar
[root@uneex ~]# cat /etc/xinetd.d/calendar
[root@uneexclient ~]# netcat srv 26000