FreeBSD адекватно поддерживает адаптеры Stallion начиная с версии 4.4.
Если ваша версия старше, вам потребуется обновить ее (это нужно сделать
еще и для того, чтобы ваша система не была подвержена известным
проблемам защиты). Обратитесь к описанию в файле
/usr/src/UPDATING
и Руководстве
FreeBSD за подробной информацией об обновлении системы.
Драйвер Stallion не включён в используемое по умолчанию ядро
GENERIC
, так что вам нужно создать конфигурационный
файл ядра с соответствующими записями. Обратитесь к справке по
stl(4) и соответствующему разделу Руководства
FreeBSD.
Для адаптера Stallion вам нужно создать файлы устройств (которые по
умолчанию не создаются). Во время выполнения описанной выше процедуры
новая версия /dev/MAKEDEV
с поддержкой Stallion
будет создана утилитой mergemaster. Если у
вас имеется адаптер Stallion с более чем 8 портами, то вам нужно
отредактировать /dev/MAKEDEV
и изменить
определение maxport
в районе строки 250. По
умолчанию MAKEDEV
создает файлы устройств для 8
портов, чтобы уменьшить размер каталога
/dev
.
Выполните примерно такую команду:
#
cd /dev/ && sh MAKEDEV cuaE0
для создания устройств для исходящих звонков для первого адаптера
Stallion. Для получения более полной информации обратитесь к
разъяснениям в MAKEDEV
и справочной странице
stl(4).
Посмотрите раздел Раздел 9, «Различные версии Conserver» о версиях conserver; используемая мной версия находится в коллекции портов FreeBSD, однако, существуют и другие версии.
Имеется два способа установки conserver. Вы можете либо скомпилировать её из исходных текстов, либо воспользоваться механизмом портов FreeBSD.
Использование портов является более ясным подходом, так как
система пакетов может отслеживать установленное программное
обеспечение и полностью удалять его, если оно не используется.
Рекомендуем использовать порт comms/conserver-com
.
Перейдите в каталог этого порта и
(работая как пользователь root
) наберите:
#
make DEFAULTHOST=consolehost
install
где consolehost
является именем
машины, на которой работает консольный сервер. Задание этого при
компиляции бинарного файла избавляет от необходимости указывать его
каждый раз при запуске программы либо поддерживать файлы
conserver.cf
для каждого хоста. Эта команда
загрузит, установит патчи, сконфигурирует, скомпилирует и установит
программу conserver.
После этого вы можете выполнить make package
для создания бинарного пакета, который можно установить на остальных
хостах FreeBSD по команде pkg_add(1). Для дополнительной гибкости
вы можете создать две версии пакета: одну для машины с консольным
сервером без параметра DEFAULTHOST
, а вторую для
всех остальных хостов с параметром DEFAULTHOST
.
Это значит, что клиентская программа консоли на машине с консольным
сервером по умолчанию будет использовать localhost
,
что будет работать при отсутствии сервера имён, при сбоях в сети, а
также позволит выполнять «доверяемые» (то
есть беспарольные) подключения через IP-адрес localhost для
пользователей, подключенных к машине с консольным сервером (либо
с экрана консоли, либо с вспомогательного модема). Версия для
остальных машин с аргументом DEFAULTHOST
означает,
что пользователи могут просто использовать клиента
console без указания каждый раз имени
хоста, и необходимости настраивать файл
conserver.cf
на каждой машине.
Если вы предпочитаете такой способ, то можете загрузить conserver и скомпилировать его самостоятельно. Вам может понадобиться сделать это, если вы хотите установить клиент консоли на не-FreeBSD системы. Мы используем клиент на наших машинах с Solaris™, и он без проблем взаимодействует с сервером на FreeBSD. Это позволяет каждому во всей компании (многие из которых имеют ПК без доступа к хосту с FreeBSD со своего рабочего места) обращаться к консольному серверу.
Загрузите файл с FTP-сайта conserver.com. Распакуйте его в любой каталог, затем сконфигурируйте, выполнив
%
./configure --with-master=consoleserver
--with-port=782
Параметр --with-master
помогает избежать
указания главного сервера каждый раз при удалённом запуске клиента
(или постоянного обновления конфигурационных файлов на всех удалённых
хостах). Параметр --with-port
помогает избежать
необходимости в обновлении файла /etc/services
на
всех машинах.
После этого наберите make
и, работая как
пользователь root, make install
.
Программа conserver настраивается через
файл с именем conserver.cf
. Этот файл обычно
находится в каталоге /usr/local/etc
и он
задокументирован на справочной странице conserver.cf(5).
Наш конфигурационный файл выглядит примерно так:
Первая строка означает, что по умолчанию все файлы протоколов
будут располагаться в каталоге /var/log/consoles
.
Символ «&» в каждой строке указывает на то, что файл
журнала для этой машины будет называться
/var/log/consoles/
.machine
В следующих трёх строках показаны три машины, к которым нам нужно
подключаться. Мы используем устройства
cuaE
вместо
x
ttyE
, потому что
на консольных портах обычно отсутствует несущая. Это означает, что
открытие x
ttyE
будет зависать, и conserver никогда не
сможет осуществить подключение. Использование устройства
x
cuaE
позволяет
уйти от этой проблемы. Другим решением будет использование устройств
x
ttyE
и разрешение
использования на этим портах «программной несущей»,
возможно, путём установки этого при помощи устройства
x
ttyiE
в файле
x
/etc/rc.serial
. Посмотрите комментарии в этом
файле для выяснения всех деталей. Также посмотрите sio(4) для
получения информации об устройствах с начальным состоянием и с
блокированным состоянием. (Драйвер Stallion также поддерживает эти
соглашения). И прочтите stty(1) для получения подробностей об
установке режимов работы устройств.
В последнем разделе указано, что любой пользователь,
зарегистрировавшийся на серверной машине, имеет доступ без пароля ко
всем консолям. Мы делаем так, потому что на этой машине нет учётных
записей пользователей, и она безопасно изолирована от внешнего мира
межсетевым экраном. Строка разрешения позволяет всем на этой машине
внутри нашей организации иметь доступ к консольному серверу, если
он сообщит свой пароль, который записан в файле
conserver.passwd
(обратитесь к следующему
разделу).
Файл conserver.passwd
содержит зашифрованную
версию пароля каждого пользователя. Файл описан на справочной странице
conserver.cf(5)
.
Единственной хитростью является заполнение файла зашифрованными паролями. Во FreeBSD нет единого способа генерации зашифрованных паролей для включения в другой файл (однако смотрите ниже). Так что я наскоро создал хакерский perl-скрипт для этого:
Он использует пароли FreeBSD с MD5-шифрованием. Запуск скрипта на других вариантах UNIX® или во FreeBSD с шифрованием паролей DES, скорее всего, потребует другой базы шифрования.
Недавно Kris Kennaway <kris@FreeBSD.org>
показал, что вы можете достичь того же эффекта
при помощи команды openssl passwd
:
%
openssl passwd -1
Password: password
$1$VTd27V2G$eFu23iHpLvCBM5nQtNlKj/Существуют два способа это сделать. Во-первых, вы можете запускать
conserver при помощи
init, включив строчку в
/etc/ttys
, подобную следующей:
Здесь есть два преимущества: init
перезапустит главный консольный сервер, если по какой-то причине он
аварийно завершит свою работу (но мы пока подобных случаев не
наблюдали), и он обеспечивает то, что стандартная выдача процесса
conserver будет направлена на указанный tty
(в этом случае cuaE0
). Это полезно, потому
что вы можете подключить терминал к порту, а программа
conserver выдаст всю консольную выдачу, не
попавшую подключенному консольному клиенту. Такое использование
полезно в качестве инструмента мониторинга общего характера, чтобы
смотреть, что происходит. Мы сделали такой терминал в компьютерном
зале видимым из основного офиса. Это очень удобная возможность.
Минусом запуска conserver из файла ttys
является невозможность его запуска в режиме даемона (либо init(8)
будет постоянно его перезапускать). Это значит, что
conserver не будет записывать PID-файл,
что усложняет смену журнальных файлов.
Таким образом, мы запускаем conserver из
rc.d-скрипта. Если вы устанавливали
conserver как порт, то в каталоге
/usr/local/etc/rc.d
будет установлен файл
conserver.sh.sample
. Скопируйте и/или
переименуйте его в conserver.sh
для того, чтобы
заставить conserver запускаться в момент
загрузки системы.
На самом деле мы используем модифицированную версию этого скрипта,
которая также подключает conserver к
терминалу посредством tty-устройства, так что мы можем отслеживать
незамеченную консольную выдачу. Наш скрипт
conserver.sh
выглядит примерно так:
Отметьте использование устройства cuaE0
и необходимость задания tty-режимов для правильной обработки
последовательностей NL-<CR).
Во FreeBSD имеется программа под названием
newsyslog, которая будет обслуживать
усечение журнального файла в автоматическом режиме. Просто добавьте
некоторые строки в конфигурационный файл
/etc/newsyslog.conf
для журналов консолей:
Здесь программе newsyslog (которая
выполняется по таймеру один раз в каждый час) указывается, что файлы
протоколов работы консолей должны архивироваться и сжиматься, как
только они достигнут объёма в 1 Мбайт, что мы должны хранить 10 таких
журналов, и что для подачи сигнала SIGHUP
вы
используете PID, записанный в файле conserver.pid
.
Это главный сервер, и он будет передавать сигнал всем дочерним
процессам. Да, он будет посылать сигнал HUP
всем
клиентам, как только понадобится обновить единственный файл журнала, но
это достаточно дёшево. Для выяснения всех подробностей обратитесь к
newsyslog(8).
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.