1543 lines
60 KiB
Text
1543 lines
60 KiB
Text
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||
<!--
|
||
The FreeBSD Russian Documentation Project
|
||
|
||
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/console-server/article.sgml,v 1.11 2004/09/06 10:19:04 marck Exp $
|
||
|
||
Original revision: 1.22
|
||
-->
|
||
|
||
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN">
|
||
%articles.ent;
|
||
]>
|
||
|
||
<article lang="ru">
|
||
<articleinfo>
|
||
<title>Консольный сервер</title>
|
||
|
||
<author>
|
||
<firstname>Gregory</firstname>
|
||
|
||
<surname>Bond</surname>
|
||
|
||
<affiliation>
|
||
<address><email>gnb@itga.com.au</email></address>
|
||
</affiliation>
|
||
</author>
|
||
|
||
<pubdate>$FreeBSD$</pubdate>
|
||
|
||
<legalnotice id="trademarks" role="trademarks">
|
||
&tm-attrib.freebsd;
|
||
&tm-attrib.cisco;
|
||
&tm-attrib.intel;
|
||
&tm-attrib.lantronix;
|
||
&tm-attrib.microsoft;
|
||
&tm-attrib.opengroup;
|
||
&tm-attrib.sun;
|
||
&tm-attrib.general;
|
||
</legalnotice>
|
||
|
||
<abstract>
|
||
<para>В этом документе описывается, как можно использовать &os;,
|
||
аппаратное и программное обеспечение, работающее с &os;, для построения
|
||
<quote>консольного сервера</quote>.
|
||
Консольным сервером обычно называют машину, которую можно использовать
|
||
для отслеживания консолей многих других машин вместо использования
|
||
многих последовательных терминалов.</para>
|
||
</abstract>
|
||
</articleinfo>
|
||
|
||
<indexterm>
|
||
<primary>консольный сервер</primary>
|
||
</indexterm>
|
||
|
||
<sect1 id="problem">
|
||
<title>Проблема</title>
|
||
|
||
<para>У вас есть компьютерный зал с множеством &unix;-серверов и
|
||
коммуникационным оборудованием. Каждой этой машине необходима
|
||
последовательная консоль. Однако последовательные терминалы трудно найти
|
||
и они достаточно дороги (особенно по сравнению с ПК, обладающими гораздо
|
||
большими возможностями). И всё это в компьютерном зале занимает много
|
||
места.</para>
|
||
|
||
<para>Вам необходим доступ к консоли, потому что когда что-то не работает,
|
||
сообщения об ошибках направляются туда. И некоторые работы выполняются с
|
||
консоли (к примеру, при возникновении проблем с загрузкой или при
|
||
установке или обновлении ОС). Некоторые &unix;-системы позволяют
|
||
переходить с консоли в режим монитора ПЗУ, который иногда является
|
||
единственным способом заставить функционировать неработающую машину.
|
||
Часто это осуществляется посылкой <literal>LINE BREAK</literal> на
|
||
последовательный порт консоли.</para>
|
||
|
||
<para>Если мы собираемся поработать с консолями, то было бы великолепно
|
||
осуществить ещё несколько вещей:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Удалённый доступ. Даже в одном помещении было бы неплохо иметь
|
||
доступ ко всем консолям с вашего рабочего места без необходимости
|
||
передвигаться по компьютерному залу. А иногда машины расположены
|
||
где-то далеко, может быть, даже в другой стране.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Протоколирование. Если что-то идёт не так, вам не помешает
|
||
возможность посмотреть предыдущую выдачу на консоль, чтобы понять
|
||
происходящее. Обычные консольные экраны дают вам последние 25 строк.
|
||
Чем таких строк будет больше, тем лучше.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Независимость от сети. Решение должно функционировать даже при
|
||
неработающей сети. В конце концов, больше всего консоли вам нужны
|
||
именно при отключении сети! Ещё лучше добиться независимости от
|
||
сети с возможностью удалённого доступа.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Отсутствие одной точки, критичной для работы. Консольная
|
||
система, которая приводит к неработоспособности всех машин при сбое,
|
||
не нужна. Это особенно важно при использовании с &unix;-хостами
|
||
Sun, так как они будут воспринимать выключение терминала как
|
||
<literal>BREAK</literal> и будут переходить в режим
|
||
ROM-монитора.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Интерфейс с пейджинговым или другим подобным устройством подачи
|
||
предупреждающих сообщений.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Возможность удалённого выключения и повторного включения
|
||
машин.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Не <emphasis>слишком</emphasis> высокая стоимость. Ещё лучше,
|
||
если система будет бесплатной!</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect1>
|
||
|
||
<sect1 id="possible-solutions">
|
||
<title>Возможные решения</title>
|
||
|
||
<para>Если для ваших серверов вы используете ПК-оборудование, то одним из
|
||
возможных решений является
|
||
<quote><acronym>KVM</acronym>-переключатель</quote>. Такой
|
||
<acronym>KVM</acronym>-переключатель позволяет использовать одну
|
||
клавиатуру, видеомонитор и мышь с несколькими системными блоками. Это
|
||
снижает остроту проблемы с физическим пространством, однако работает
|
||
только с ПК-оборудованием (а не с любыми типами имеющихся
|
||
коммуникационных устройств), и не обеспечивает доступ вне компьютерного
|
||
зала. При этом даже отсутствует прокрутка истории или протоколирование,
|
||
и вам нужно организовывать оповещение каким-то другим способом. Большим
|
||
минусом является то, что это не работает с устройствами только с
|
||
последовательным интерфейсом, таким, как коммуникационное оборудование.
|
||
Это означает, что даже в зале, заполненном ПК-серверами, вам может
|
||
оказаться нужным доступ к последовательной консоли.</para>
|
||
|
||
<note>
|
||
<para>На самом деле, Doug Schache указал, что вы
|
||
<emphasis>можете</emphasis> найти <acronym>KVM</acronym>-переключатели
|
||
с поддержкой последовательных консолей или совместимые как с Sun, так
|
||
и с ПК, но они дороги. Посмотрите, например, на сайте <ulink
|
||
url="http://www.avocent.com/">Avocent</ulink>.)</para>
|
||
</note>
|
||
|
||
<para>Вы можете попытаться обойтись без консольного терминала, однако когда
|
||
творятся странные вещи, вам <emphasis>действительно</emphasis> нужно
|
||
видеть происходящее на консоли. И вам нужно использовать консоль для
|
||
загрузки и выполнения таких действий, как установка или обновление
|
||
ОС.</para>
|
||
|
||
<para>Вы можете попытаться выделить один консольный терминал и
|
||
переключаться при необходимости между серверами, либо при помощи
|
||
последовательного переключателя, либо просто подключая его к нужной
|
||
машине. Последовательные переключатели также трудно найти и они не
|
||
дёшевы, к тому же могут иметь проблемы с посылкой сигнала
|
||
<literal>BREAK</literal> при переключении. И (если ваш компьютерный
|
||
зал похож на наш) у вас никогда не будет совпадать комбинация кабелей
|
||
для подключения к нужной машине, и даже если все кабели на месте,
|
||
вы никогда с точностью не будете знать, какая именно комбинация окончаний
|
||
<literal>DTE/DCE</literal> ведёт к конкретному оборудованию. Так что
|
||
первые 10 минут вы потратите на возню с исходящими и входящими
|
||
окончаниями, тогда как сервер не работает, а пользователи уже кричат.
|
||
Конечно, это не удовлетворяет требованиям удалённого подключения к
|
||
системе и протоколирования. И неизбежно консоль окажется не подключенной
|
||
к нужной машине, так что вы потеряете все консольные сообщения, могущие
|
||
рассказать вам о происходящем.</para>
|
||
|
||
<para>Одним из распространённых решений является использование аппаратного
|
||
терминального сервера. Обычно последовательные порты подключены к
|
||
консолям различных машин, и настроены на <quote>обратный
|
||
telnet-доступ</quote>. Это значит, что пользователь может подключиться
|
||
по протоколу telnet к определённому IP/порту и оказаться подключенным к
|
||
соответствующей консоли. Это может быть очень эффективным с точки зрения
|
||
стоимости, так как подходящие старые терминальные серверы можно найти
|
||
по достаточно низкой цене (полагаем, что пары таких у вас ещё нет). И,
|
||
конечно, они доступны по сети, что подходит для организации управления
|
||
из сети. Однако у них есть один большой недостаток: если сеть не
|
||
работает, то вы <emphasis>теряете</emphasis> доступ к любой консоли,
|
||
даже если находитесь прямо перед машиной. (Это может быть несколько не
|
||
так, если у вас есть подходящий терминал, подключенный к одному из портов
|
||
терминального сервера, с которого можно выполнять подключения, но
|
||
программное обеспечение терминального сервера может этого и не
|
||
поддерживать.) К тому же при этом отсутствует протоколирование и повтор
|
||
консольных сообщений. Однако приложив некоторые усилия и используя
|
||
определённое программное обеспечение, такое, как
|
||
<application>conserver</application> (описано далее), эту систему можно
|
||
заставить хорошо работать.</para>
|
||
|
||
<para>Ещё один подход, предложенный Броном Гондваной (Bron Gondwana), похож
|
||
на описанное выше решение. Если ваши серверы имеют несколько
|
||
последовательных портов, вы можете подключить каждый свободный
|
||
последовательный порт к консольному порту <quote>ближайшего</quote>
|
||
сервера, создав тем самым кольцо консольных соединений (в некотором
|
||
порядке). Это может достаточно хорошо работать вместе с программным
|
||
обеспечением <application>conserver</application>, однако, с другой
|
||
стороны, может несколько запутывать (в смысле необходимости запоминания,
|
||
какой порт к какой консоли подключен). И этого не получится, если вам
|
||
нужно использовать последовательные порты в других целях (таких, как
|
||
подключение модемов) либо на ваших машинах нет свободных портов.</para>
|
||
|
||
<para>Либо, если ваш бюджет превышает необходимость в хакерских решениях,
|
||
вы можете приобрести одно из готовых решений. Они различаются по
|
||
стоимости и своим возможностям. Посмотрите, к примеру,
|
||
<ulink url="http://www.lightwavecom.com/">Lightwave</ulink>,
|
||
<ulink url="http://www.perle.com/">Perle</ulink>,
|
||
<ulink url="http://www.avocent.com/">Avocent</ulink> или
|
||
<ulink url="http://www.blackbox.com/faxbacks/23000/23362.PDF">Black
|
||
Box</ulink>. Эти решения могут оказаться достаточно дорогими - обычно
|
||
от 100 до 400 долл. США за порт.</para>
|
||
</sect1>
|
||
|
||
<sect1 id="our-solution">
|
||
<title>Наше решение</title>
|
||
|
||
<para>В свете требований выше мы выбрали решение на основе выделенного ПК
|
||
под управлением &unix; с многопортовым последовательным адаптером и
|
||
определённым программным обеспечением, предназначенным для работы с
|
||
последовательными консолями.</para>
|
||
|
||
<para>Оно состоит из следующих элементов:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Подержанный ПК. Мы использовали &pentium; 166 с шиной PCI,
|
||
2-гигабайтным жёстким диском и 64 мегабайтами ОЗУ. Это превышает
|
||
требования выполняемой задачи, более чем достаточным будет P-100,
|
||
500 Мб, 32 Мб.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>&unix;-система для ПК. Мы использовали <ulink
|
||
url="&url.base;/index.html">&os; 4.3</ulink>, так как в нашем офисе
|
||
она использовалась и для других задач.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Многопортовый последовательный адаптер. Мы выбрали 8-портовый
|
||
адаптер <ulink
|
||
url="http://www.stallion.com/html/products/easyio.html">&easyio;
|
||
PCI</ulink> компании <ulink url="http://www.stallion.com/">Stallion
|
||
Technologies</ulink>. Это стоило нам порядка $AUD740, меньше чем
|
||
$100 за порт, заплаченных <ulink url="http://www.ht.com.au/">Harris
|
||
Technologies</ulink> (у них есть много всего, но это не обязательно
|
||
самое дешёвое место - поищите поблизости, вы можете найти место
|
||
гораздо дешевле). Адаптер имеет сзади большой разъём DB80 и
|
||
подключаемый кабель, имеющий блок из 8 гнёзд RJ-45. (Мы выбрали
|
||
вариант с RJ-45, так как наша кабельная система полностью построена
|
||
на RJ-45. Это позволяет нам переключать соединения от нужного блока
|
||
к консольному серверу без дополнительных кабелей.) Это единственная
|
||
вещь, которую нам пришлось приобрести, чтобы всё заработало.</para>
|
||
|
||
<note><para>
|
||
В России, возможно, будет проще найти карты <ulink
|
||
url="http://www.cronyx.ru/hardware/ompci.html">Omega PCI</ulink>
|
||
компании <ulink url="http://www.cronyx.ru/">КБ "Кроникс" /
|
||
Cronyx Engineering</ulink>, менее $40 за порт.
|
||
[<emphasis>прим. перев.</emphasis>].
|
||
</para></note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Мы построили два сервера, по одному для каждого машинного зала,
|
||
с 8 портами в одном и 16 портами (двумя адаптерами &easyio; PCI) в
|
||
другом. Если бы нам нужно было более 16 портов, то по стоимости
|
||
более эффективным было бы использование других адаптеров Stallion.
|
||
Теоретически мы можем поддерживать 128 портов на каждом сервере (при
|
||
помощи 2 хост-адаптеров EasyConnect 8/64 и 8 16-портовых модулей
|
||
RJ-45) общей стоимостью $AUD12,000.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Модем для удалённого доступа к хосту консольного сервере при
|
||
отсутствии сети. Мы ещё этого не делали, так как компьютерный зал
|
||
находится рядом, но когда мы перенесем сервер в Сидней, мы добавим
|
||
модем. Идея заключается в том, что при отсутствии сети вы можете
|
||
позвонить, подключиться к серверной машине и запустить консольную
|
||
программу локально. В целях безопасности мы, скорее всего, оставим
|
||
модем выключенным, и попросим тамошних жителей Сиднея нажать хорошо
|
||
видную кнопку при необходимости.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Программа под названием <ulink url="http://www.conserver.com/">
|
||
conserver</ulink>. Она выполняет всё, что требуется для включения
|
||
удалённого доступа к консолям, обеспечивает повтор ввода,
|
||
протоколирование и так далее. Она поставляется в виде двух блоков:
|
||
сервер под именем <application>conserver</application>, работающий
|
||
как даемон и подключающийся к последовательным портам, выполняющий
|
||
ведение журналов и прочие действия, и клиентская программа под
|
||
названием <application>console</application>, которая может
|
||
подключаться к серверу, показывать консольные сообщения, посылать
|
||
последовательности нажатий клавиш (и <literal>BREAK</literal>) и тому
|
||
подобное.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Такая архитектура обеспечивает выполнение всех основных требований,
|
||
кроме удалённого управления электропитанием:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Удалённый доступ обеспечивается за счёт того, что клиентская
|
||
программа <application>console</application> работает в сети.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Протоколирование ведётся программой
|
||
<application>conserver</application>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Если сеть не работает, то мы можем использовать консоль ПК для
|
||
локального запуска клиента <application>console</application>. В
|
||
случае географически удалённых мест мы можем добавить модем для
|
||
коммутируемого доступа к командной строке сервера для запуска
|
||
клиента.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Установив патчи на серверы &solaris; (обратитесь к <xref
|
||
linkend="solaris">), мы можем избежать неработоспособности всего
|
||
компьютерного зала при сбое в консольном сервере на базе ПК (или
|
||
при отключения электропитания, или по какой-то другой
|
||
причине).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>У нас уже есть пейджинговое оповещение с другой установленной
|
||
нами системы, однако на консольном сервере есть вся нужная
|
||
информация журналов, так что при необходимости это может быть легко
|
||
реализовано. И даже есть модем для звонка в пейджинговую
|
||
компанию!</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>На данный момент мы не поддерживаем удалённое управление
|
||
электропитанием. Некоторые версии программы
|
||
<application>conserver</application> это поддерживают, но это требует
|
||
наличия специальных адаптеров, управляемых через последовательные
|
||
соединения. У нас нет острой необходимости по удалённому выключению
|
||
(у нас есть обслуживающий персонал в каждом удалённом офисе, который
|
||
может это сделать под нашим руководством), так что это не большая
|
||
проблема, и мы можем легко это добавить, если увидим в этом
|
||
необходимость и получим соответствующее оборудование.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Это решение было очень дешёвым. Общая стоимость 9-портового
|
||
сервера составила $AUD750 за адаптеры ввода/вывода, так как мы
|
||
использовали устаревший ПК и у нас имелось оборудование в виде
|
||
специальных кабелей. Если бы мы всё покупали, то это обошлось бы
|
||
всего лишь примерно в $AUD1500 за 8-портовый сервер.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect1>
|
||
|
||
<sect1 id="setting-up-server">
|
||
<title>Настройка сервера</title>
|
||
|
||
<sect2 id="patching-stallion">
|
||
<title>Проверка драйвера Stallion</title>
|
||
|
||
<para> &os; адекватно поддерживает адаптеры Stallion начиная с версии 4.4.
|
||
Если ваша версия старше, вам потребуется обновить ее (это нужно сделать
|
||
еще и для того, чтобы ваша система не была подвержена известным
|
||
проблемам защиты). Обратитесь к описанию в файле
|
||
<filename>/usr/src/UPDATING</filename> и <ulink
|
||
url="&url.books.handbook;/makeworld.html">Руководстве
|
||
&os;</ulink> за подробной информацией об обновлении системы.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="configuring-kernel">
|
||
<title>Конфигурация нового ядра</title>
|
||
|
||
<para>Драйвер Stallion не включён в используемое по умолчанию ядро
|
||
<literal>GENERIC</literal>, так что вам нужно создать конфигурационный
|
||
файл ядра с соответствующими записями. Обратитесь к справке по
|
||
&man.stl.4; и соответствующему разделу <ulink
|
||
url="&url.books.handbook;/kernelconfig.html">Руководства
|
||
&os;</ulink>.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="making-devices">
|
||
<title>Создание устройств</title>
|
||
|
||
<para>Для адаптера Stallion вам нужно создать файлы устройств (которые по
|
||
умолчанию не создаются). Во время выполнения описанной выше процедуры
|
||
новая версия <filename>/dev/MAKEDEV</filename> с поддержкой Stallion
|
||
будет создана утилитой <application>mergemaster</application>. Если у
|
||
вас имеется адаптер Stallion с более чем 8 портами, то вам нужно
|
||
отредактировать <filename>/dev/MAKEDEV</filename> и изменить
|
||
определение <literal>maxport</literal> в районе строки 250. По
|
||
умолчанию <filename>MAKEDEV</filename> создает файлы устройств для 8
|
||
портов, чтобы уменьшить размер каталога
|
||
<filename>/dev</filename>.</para>
|
||
|
||
<para>Выполните примерно такую команду:
|
||
|
||
<screen>&prompt.root; <userinput>cd /dev/ && sh MAKEDEV cuaE0</userinput></screen>
|
||
|
||
для создания устройств для исходящих звонков для первого адаптера
|
||
Stallion. Для получения более полной информации обратитесь к
|
||
разъяснениям в <filename>MAKEDEV</filename> и справочной странице
|
||
&man.stl.4;.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="compiling-conserver">
|
||
<title>Компиляция conserver</title>
|
||
|
||
<note>
|
||
<para>Посмотрите раздел <xref linkend="conserver-versions"> о версиях
|
||
<application>conserver</application>; используемая мной версия
|
||
находится в коллекции портов &os;, однако, существуют и другие
|
||
версии.</para>
|
||
</note>
|
||
|
||
<para>Имеется два способа установки <application>conserver</application>.
|
||
Вы можете либо скомпилировать её из исходных текстов, либо
|
||
воспользоваться механизмом портов &os;.</para>
|
||
|
||
<sect3 id="using-ports">
|
||
<title>Использование механизма портов</title>
|
||
|
||
<para>Использование портов является более ясным подходом, так как
|
||
система пакетов может отслеживать установленное программное
|
||
обеспечение и полностью удалять его, если оно не используется.
|
||
Рекомендуем использовать порт <filename
|
||
role="package">comms/conserver-com</filename>.
|
||
Перейдите в каталог этого порта и
|
||
(работая как пользователь <username>root</username>) наберите:</para>
|
||
|
||
<screen>&prompt.root; <userinput>make DEFAULTHOST=<replaceable>consolehost</replaceable> install</userinput></screen>
|
||
|
||
<para>где <replaceable>consolehost</replaceable> является именем
|
||
машины, на которой работает консольный сервер. Задание этого при
|
||
компиляции бинарного файла избавляет от необходимости указывать его
|
||
каждый раз при запуске программы либо поддерживать файлы
|
||
<filename>conserver.cf</filename> для каждого хоста. Эта команда
|
||
загрузит, установит патчи, сконфигурирует, скомпилирует и установит
|
||
программу <application>conserver</application>.</para>
|
||
|
||
<para>После этого вы можете выполнить <command>make package</command>
|
||
для создания бинарного пакета, который можно установить на остальных
|
||
хостах &os; по команде &man.pkg.add.1;. Для дополнительной гибкости
|
||
вы можете создать две версии пакета: одну для машины с консольным
|
||
сервером без параметра <literal>DEFAULTHOST</literal>, а вторую для
|
||
всех остальных хостов с параметром <literal>DEFAULTHOST</literal>.
|
||
Это значит, что клиентская программа консоли на машине с консольным
|
||
сервером по умолчанию будет использовать <hostid>localhost</hostid>,
|
||
что будет работать при отсутствии сервера имён, при сбоях в сети, а
|
||
также позволит выполнять <quote>доверяемые</quote> (то
|
||
есть беспарольные) подключения через IP-адрес localhost для
|
||
пользователей, подключенных к машине с консольным сервером (либо
|
||
с экрана консоли, либо с вспомогательного модема). Версия для
|
||
остальных машин с аргументом <literal>DEFAULTHOST</literal> означает,
|
||
что пользователи могут просто использовать клиента
|
||
<application>console</application> без указания каждый раз имени
|
||
хоста, и необходимости настраивать файл
|
||
<filename>conserver.cf</filename> на каждой машине.</para>
|
||
</sect3>
|
||
|
||
<sect3 id="from-tarball">
|
||
<title>Из tar-архива исходных текстов</title>
|
||
|
||
<para>Если вы предпочитаете такой способ, то можете загрузить
|
||
<application>conserver</application> и скомпилировать его
|
||
самостоятельно. Вам может понадобиться сделать это, если вы хотите
|
||
установить клиент консоли на не-&os; системы. Мы используем клиент
|
||
на наших машинах с &solaris;, и он без проблем взаимодействует с
|
||
сервером на &os;. Это позволяет каждому во всей компании (многие из
|
||
которых имеют ПК без доступа к хосту с &os; со своего рабочего места)
|
||
обращаться к консольному серверу.</para>
|
||
|
||
<para>Загрузите файл с <ulink
|
||
url="ftp://ftp.conserver.com/conserver/conserver-8.1.9.tar.gz">
|
||
FTP-сайта conserver.com</ulink>. Распакуйте его в любой каталог,
|
||
затем сконфигурируйте, выполнив</para>
|
||
|
||
<screen>&prompt.user; ./configure <option>--with-master=<replaceable>consoleserver</replaceable></option> <option>--with-port=<replaceable>782</replaceable></option></screen>
|
||
|
||
<para>Параметр <option>--with-master</option> помогает избежать
|
||
указания главного сервера каждый раз при удалённом запуске клиента
|
||
(или постоянного обновления конфигурационных файлов на всех удалённых
|
||
хостах). Параметр <option>--with-port</option> помогает избежать
|
||
необходимости в обновлении файла <option>/etc/services</option> на
|
||
всех машинах.</para>
|
||
|
||
<para>После этого наберите <command>make</command> и, работая как
|
||
пользователь root, <command>make install</command>.</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2 id="configuring-conserver">
|
||
<title>Конфигурация conserver</title>
|
||
|
||
<para>Программа <application>conserver</application> настраивается через
|
||
файл с именем <filename>conserver.cf</filename>. Этот файл обычно
|
||
находится в каталоге <filename>/usr/local/etc</filename> и он
|
||
задокументирован на справочной странице &man.conserver.cf.5;.</para>
|
||
|
||
<para>Наш конфигурационный файл выглядит примерно так:</para>
|
||
|
||
<programlisting>LOGDIR=/var/log/consoles
|
||
gallows:/dev/cuaE0:9600p:&:
|
||
roo:/dev/cuaE1:9600p:&:
|
||
kanga:/dev/cuaE2:9600p:&:
|
||
%%
|
||
allow: itga.com.au
|
||
trusted: 127.0.0.1 buzz</programlisting>
|
||
|
||
<para>Первая строка означает, что по умолчанию все файлы протоколов
|
||
будут располагаться в каталоге <filename>/var/log/consoles</filename>.
|
||
Символ <quote>&</quote> в каждой строке указывает на то, что файл
|
||
журнала для этой машины будет называться
|
||
<filename>/var/log/consoles/<replaceable>machine</replaceable></filename>.</para>
|
||
|
||
<para>В следующих трёх строках показаны три машины, к которым нам нужно
|
||
подключаться. Мы используем устройства
|
||
<devicename>cuaE<replaceable>x</replaceable></devicename> вместо
|
||
<devicename>ttyE<replaceable>x</replaceable></devicename>, потому что
|
||
на консольных портах обычно отсутствует несущая. Это означает, что
|
||
открытие <devicename>ttyE<replaceable>x</replaceable></devicename>
|
||
будет зависать, и <application>conserver</application> никогда не
|
||
сможет осуществить подключение. Использование устройства
|
||
<devicename>cuaE<replaceable>x</replaceable></devicename> позволяет
|
||
уйти от этой проблемы. Другим решением будет использование устройств
|
||
<devicename>ttyE<replaceable>x</replaceable></devicename> и разрешение
|
||
использования на этим портах <quote>программной несущей</quote>,
|
||
возможно, путём установки этого при помощи устройства
|
||
<devicename>ttyiE<replaceable>x</replaceable></devicename> в файле
|
||
<filename>/etc/rc.serial</filename>. Посмотрите комментарии в этом
|
||
файле для выяснения всех деталей. Также посмотрите &man.sio.4; для
|
||
получения информации об устройствах с начальным состоянием и с
|
||
блокированным состоянием. (Драйвер Stallion также поддерживает эти
|
||
соглашения). И прочтите &man.stty.1; для получения подробностей об
|
||
установке режимов работы устройств.</para>
|
||
|
||
<para>В последнем разделе указано, что любой пользователь,
|
||
зарегистрировавшийся на серверной машине, имеет доступ без пароля ко
|
||
всем консолям. Мы делаем так, потому что на этой машине нет учётных
|
||
записей пользователей, и она безопасно изолирована от внешнего мира
|
||
межсетевым экраном. Строка разрешения позволяет всем на этой машине
|
||
внутри нашей организации иметь доступ к консольному серверу, если
|
||
он сообщит свой пароль, который записан в файле
|
||
<filename>conserver.passwd</filename> (обратитесь к следующему
|
||
разделу).</para>
|
||
</sect2>
|
||
|
||
<sect2 id="setting-passwords">
|
||
<title>Задание паролей для conserver</title>
|
||
|
||
<para>Файл <filename>conserver.passwd</filename> содержит зашифрованную
|
||
версию пароля каждого пользователя. Файл описан на справочной странице
|
||
<literal>conserver.cf(5)</literal>.</para>
|
||
|
||
<para>Единственной хитростью является заполнение файла зашифрованными
|
||
паролями. Во &os; нет единого способа генерации зашифрованных паролей
|
||
для включения в другой файл (однако смотрите ниже). Так что я
|
||
наскоро создал хакерский perl-скрипт для этого:</para>
|
||
|
||
<programlisting>@rands = ();
|
||
foreach (0..4) {
|
||
push(@rands, rand 64);
|
||
}
|
||
|
||
$salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[@rands];
|
||
|
||
$salt = '$1$' . $salt . '$';
|
||
|
||
print 'Enter password: ';
|
||
`stty -echo`;
|
||
$cleartext = <>;
|
||
`stty echo`;
|
||
chop($cleartext);
|
||
print crypt($cleartext, $salt), "\n";</programlisting>
|
||
|
||
<note>
|
||
<para>Он использует пароли &os; с <acronym>MD5</acronym>-шифрованием.
|
||
Запуск скрипта на других вариантах &unix; или во &os; с шифрованием
|
||
паролей DES, скорее всего, потребует другой базы шифрования.</para>
|
||
</note>
|
||
|
||
<para>Недавно &a.kris; показал, что вы можете достичь того же эффекта
|
||
при помощи команды <command>openssl passwd</command>:</para>
|
||
|
||
<screen>&prompt.user; openssl passwd -1
|
||
Password: <userinput>password</userinput>
|
||
$1$VTd27V2G$eFu23iHpLvCBM5nQtNlKj/</screen>
|
||
</sect2>
|
||
|
||
<sect2 id="starting-conserver">
|
||
<title>Запуск <application>conserver</application> во время загрузки
|
||
системы</title>
|
||
|
||
<para>Существуют два способа это сделать. Во-первых, вы можете запускать
|
||
<application>conserver</application> при помощи
|
||
<application>init</application>, включив строчку в
|
||
<filename>/etc/ttys</filename>, подобную следующей:</para>
|
||
|
||
<programlisting>cuaE0 "/usr/local/sbin/conserver" unknown on insecure</programlisting>
|
||
|
||
<para>Здесь есть два преимущества: <application>init</application>
|
||
перезапустит главный консольный сервер, если по какой-то причине он
|
||
аварийно завершит свою работу (но мы пока подобных случаев не
|
||
наблюдали), и он обеспечивает то, что стандартная выдача процесса
|
||
<application>conserver</application> будет направлена на указанный tty
|
||
(в этом случае <devicename>cuaE0</devicename>). Это полезно, потому
|
||
что вы можете подключить терминал к порту, а программа
|
||
<application>conserver</application> выдаст всю консольную выдачу, не
|
||
попавшую подключенному консольному клиенту. Такое использование
|
||
полезно в качестве инструмента мониторинга общего характера, чтобы
|
||
смотреть, что происходит. Мы сделали такой терминал в компьютерном
|
||
зале видимым из основного офиса. Это очень удобная возможность.
|
||
Минусом запуска <application>conserver</application> из файла ttys
|
||
является невозможность его запуска в режиме даемона (либо &man.init.8;
|
||
будет постоянно его перезапускать). Это значит, что
|
||
<application>conserver</application> не будет записывать PID-файл,
|
||
что усложняет смену журнальных файлов.</para>
|
||
|
||
<para>Таким образом, мы запускаем <application>conserver</application> из
|
||
rc.d-скрипта. Если вы устанавливали
|
||
<application>conserver</application> как порт, то в каталоге
|
||
<filename>/usr/local/etc/rc.d</filename> будет установлен файл
|
||
<filename>conserver.sh.sample</filename>. Скопируйте и/или
|
||
переименуйте его в <filename>conserver.sh</filename> для того, чтобы
|
||
заставить <application>conserver</application> запускаться в момент
|
||
загрузки системы.</para>
|
||
|
||
<para>На самом деле мы используем модифицированную версию этого скрипта,
|
||
которая также подключает <application>conserver</application> к
|
||
терминалу посредством tty-устройства, так что мы можем отслеживать
|
||
незамеченную консольную выдачу. Наш скрипт
|
||
<filename>conserver.sh</filename> выглядит примерно так:</para>
|
||
|
||
<programlisting>#!/bin/sh
|
||
#
|
||
# Startup for conserver
|
||
#
|
||
|
||
PATH=/usr/bin:/usr/local/bin
|
||
|
||
case "$1" in
|
||
'start')
|
||
TTY=/dev/cuaE7
|
||
conserver -d > $TTY
|
||
# get NL->CR+NL mapping so msgs look right
|
||
stty < /dev/cuaE7 opost onlcr
|
||
echo -n ' conserver'
|
||
;;
|
||
|
||
'stop')
|
||
kill `cat /var/run/conserver.pid` && echo -n ' conserver'
|
||
;;
|
||
|
||
*)
|
||
echo "Usage: $0 { start | stop }"
|
||
;;
|
||
|
||
esac
|
||
exit 0</programlisting>
|
||
|
||
<note>
|
||
<para>Отметьте использование устройства <devicename>cuaE0</devicename>
|
||
и необходимость задания tty-режимов для правильной обработки
|
||
последовательностей NL-<CR).</para>
|
||
</note>
|
||
</sect2>
|
||
|
||
<sect2 id="trimming-logs">
|
||
<title>Обрезание журнальных файлов</title>
|
||
|
||
<para>Во &os; имеется программа под названием
|
||
<application>newsyslog</application>, которая будет обслуживать
|
||
усечение журнального файла в автоматическом режиме. Просто добавьте
|
||
некоторые строки в конфигурационный файл
|
||
<filename>/etc/newsyslog.conf</filename> для журналов консолей:</para>
|
||
|
||
<programlisting>#
|
||
# The log files from conserver
|
||
/var/log/consoles/gallows 644 10 1000 * Z /var/run/conserver.pid
|
||
/var/log/consoles/kanga 644 10 1000 * Z /var/run/conserver.pid
|
||
/var/log/consoles/roo 644 10 1000 * Z /var/run/conserver.pid</programlisting>
|
||
|
||
<para>Здесь программе <application>newsyslog</application> (которая
|
||
выполняется по таймеру один раз в каждый час) указывается, что файлы
|
||
протоколов работы консолей должны архивироваться и сжиматься, как
|
||
только они достигнут объёма в 1 Мбайт, что мы должны хранить 10 таких
|
||
журналов, и что для подачи сигнала <literal>SIGHUP</literal> вы
|
||
используете PID, записанный в файле <filename>conserver.pid</filename>.
|
||
Это главный сервер, и он будет передавать сигнал всем дочерним
|
||
процессам. Да, он будет посылать сигнал <literal>HUP</literal> всем
|
||
клиентам, как только понадобится обновить единственный файл журнала, но
|
||
это достаточно дёшево. Для выяснения всех подробностей обратитесь к
|
||
&man.newsyslog.8;.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="cabling">
|
||
<title>Подключение кабелей</title>
|
||
|
||
<para>Это всегда является самой сложной частью такого рода проблем. Для
|
||
построения у нас имелось только около десятка кабелей/окончаний к ним,
|
||
и ещё набор соответствующих инструментов и оборудования, так что мы
|
||
сделали всё сами. Однако если вы к этому не готовы, либо вам нужно
|
||
сделать большое количество кабелей, то вам можно приобрести их на заказ.
|
||
Посмотрите справочники фирм, там найдётся на удивление много мест, где
|
||
сделают всё нужное! Приобретение кабелей, сделанных на заказ, это
|
||
хорошо, и вы получите более профессиональный результат, однако это может
|
||
быть дороговато. К примеру, наборы переходников RJ-45 в DB-25,
|
||
описываемые ниже, стоят около $10 каждый; кабели на заказ обойдутся
|
||
примерно в два раза дороже (и будут доставлены через несколько недель).
|
||
Подобным же образом изготовление переходника RJ-45 в RJ-45 обойдётся
|
||
достаточно дёшево (скажем, по $5 каждый), но займёт много времени.
|
||
Заказное гнездо RJ-45 с переходником RJ-45 стоит около $25 каждое.</para>
|
||
|
||
<para>Во всех случаях в офисе и компьютерном заде мы использовали кабель
|
||
типа RJ-45 Cat-V. Сюда включается проброс монтажных кабелей между
|
||
стойками в компьютерном зале. Для последовательных соединений мы
|
||
используем подключаемые соединители, у которых на задней стенке есть
|
||
гнёзда RJ-45. Это позволяет нам при необходимости организовывать
|
||
соединения RJ-45–DB-25.</para>
|
||
|
||
<para>Которое также удобно, потому что есть множество неправильных способов
|
||
организовать последовательные соединения на вилке RJ-45. Так что при
|
||
пробросе кабелей нужно очень осторожно использовать правильное
|
||
соответствие.</para>
|
||
|
||
<sect2 id="rj45-colors">
|
||
<title>Цветовая разметка RJ-45</title>
|
||
|
||
<para>Кабели и вилки RJ-45 имеют 8 контактов/проводников. Они
|
||
используются как 4 соответствующих пары. Имеется несколько соглашений
|
||
о том, как пары соответствуют контактам, однако в 100baseT используется
|
||
самый распространённый (известный как EIA 586B). Имеются три
|
||
распространённых соглашения по цветовому обозначению для отдельных
|
||
проводников в кабелях RJ-45. Вот они:</para>
|
||
|
||
<table>
|
||
<title><!-- XXX: Добавить заголовок для этой таблицы --></title>
|
||
|
||
<tgroup cols="5">
|
||
<thead>
|
||
<row>
|
||
<entry>Контакт</entry>
|
||
<entry>Схема 1</entry>
|
||
<entry>Схема 2 (EIA 568B)</entry>
|
||
<entry>Схема 3 (EIA 568A)</entry>
|
||
<entry>Пара</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>Синий</entry>
|
||
<entry>Белый+Зелёный</entry>
|
||
<entry>Белый+Оранжевый</entry>
|
||
<entry>2+</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>Оранжевый</entry>
|
||
<entry>Зелёный</entry>
|
||
<entry>Оранжевый</entry>
|
||
<entry>2-</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>3</entry>
|
||
<entry>Чёрный</entry>
|
||
<entry>Белый+Оранжевый</entry>
|
||
<entry>Белый+Зелёный</entry>
|
||
<entry>3+</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>4</entry>
|
||
<entry>Красный</entry>
|
||
<entry>Синий</entry>
|
||
<entry>Синий</entry>
|
||
<entry>1+</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>5</entry>
|
||
<entry>Зелёный</entry>
|
||
<entry>Белый+Синий</entry>
|
||
<entry>Белый+Синий</entry>
|
||
<entry>1-</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>6</entry>
|
||
<entry>Жёлтый</entry>
|
||
<entry>Оранжевый</entry>
|
||
<entry>Зелёный</entry>
|
||
<entry>3-</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>7</entry>
|
||
<entry>Коричневый</entry>
|
||
<entry>Белый+Коричневый</entry>
|
||
<entry>Белый+Коричневый</entry>
|
||
<entry>4+</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>8</entry>
|
||
<entry>Белый или Серый</entry>
|
||
<entry>Коричневый</entry>
|
||
<entry>Коричневый</entry>
|
||
<entry>4-</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<para>Заметим, что стандарты EIA 468A and EIA 568B отличаются только
|
||
цветом 2 и 3 пары.</para>
|
||
|
||
<para>Подробности можно прочитать на <ulink
|
||
url="http://www.cabletron.com/support/techtips/tk0231-9.html">сайте
|
||
технической поддержки Cabletron</ulink>.</para>
|
||
|
||
<para>Контакты разъема RJ-45 нумеруются с 1 до 8. Первый контакт
|
||
расположен слева, если держать обжатый кабель разъемом вверх и защелкой
|
||
от себя. В розетке RJ-45, расположенной защелкой вверх, контакт 1
|
||
расположен справа. Вот иллюстрация (бесстыдно стянутая с сайта
|
||
Cabletron), показывающая все это:</para>
|
||
|
||
<mediaobject>
|
||
<imageobject>
|
||
<imagedata fileref="tk0231-9-1.png">
|
||
</imageobject>
|
||
|
||
<textobject>
|
||
<literallayout class="monospaced"><!-- XXX: add asci art --></literallayout>
|
||
</textobject>
|
||
|
||
<textobject>
|
||
<phrase><!-- XXX: add RJ45 image description --></phrase>
|
||
</textobject>
|
||
</mediaobject>
|
||
|
||
<para>В нашем случае мы имели дело с четырьмя видами оборудования:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>Сервера Sun</term>
|
||
|
||
<listitem>
|
||
<para>Консоль сервера Sun работает в режиме DTE (т.е. посылает
|
||
данные по линии TxD, принимает данные по RxD и активирует сигнал
|
||
DTR) с разъемом DB-25 "мама". Для консольного сервера на базе
|
||
Stallion нам потребовались переходники, работающие как DCE
|
||
и обладающие разъемом DB-25 "папа" (т.е. работающие одновременно
|
||
как <quote>нуль-модем</quote> и как переходник RJ-45—DB-25.
|
||
Мы использовали разборные переходники, содержащие розетку RJ-45,
|
||
8 коротких проводов, заканчивающихся контактами DB-25, которые
|
||
могут произвольно коммутироваться в корпус разъема DB-25.
|
||
Мы использовали несколько схем соединения, в частности,
|
||
<ulink url="http://www.molexpn.com.au/">MOD-TAP</ulink>
|
||
part no. <ulink
|
||
url="http://www.molexpn.com.au/products/index.nsx/1/7/0/0/id=340">06-9888-999-00</ulink>
|
||
и <ulink
|
||
url="http://www.blackbox.com/faxbacks/12000/12654.PDF">FA730
|
||
series</ulink> от компании
|
||
<ulink url="http://www.blackboxoz.com.au/">Black
|
||
Box</ulink>.</para>
|
||
|
||
<para>Контакты переходников, которые попались нам, были маркированы
|
||
так (контакты с 1 по 8): Синий, Оранжевый, Черный, Красный,
|
||
Зеленый, Желтый, Коричневый, Белый (при взгляде со стороны
|
||
розетки RJ-45, защелка сверху, контакт 1 справа). Они
|
||
были скоммутированы с разъемом DB-25 вот так:</para>
|
||
|
||
<table>
|
||
<title><!-- XXX: Add a title here --></title>
|
||
<tgroup cols="5">
|
||
<thead>
|
||
<row>
|
||
<entry>Контакт RJ-45 Stallion</entry>
|
||
<entry>Цвет</entry>
|
||
<entry>Сигнал</entry>
|
||
<entry>Контакт разъема DB-25 "папа" Sun</entry>
|
||
<entry>Сигнал RS232</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>Синий</entry>
|
||
<entry>DCD</entry>
|
||
<entry>20</entry>
|
||
<entry>DTR</entry>
|
||
</row>
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>Оранжевый</entry>
|
||
<entry>RTS</entry>
|
||
<entry>5</entry>
|
||
<entry>CTS</entry>
|
||
</row>
|
||
<row>
|
||
<entry>3</entry>
|
||
<entry>Черный</entry>
|
||
<entry>Заземление</entry>
|
||
<entry>1</entry>
|
||
<entry>Заземление</entry>
|
||
</row>
|
||
<row>
|
||
<entry>4</entry>
|
||
<entry>Красный</entry>
|
||
<entry>TxD</entry>
|
||
<entry>3</entry>
|
||
<entry>RxD</entry>
|
||
</row>
|
||
<row>
|
||
<entry>5</entry>
|
||
<entry>Зеленый</entry>
|
||
<entry>RxD</entry>
|
||
<entry>2</entry>
|
||
<entry>TxD</entry>
|
||
</row>
|
||
<row>
|
||
<entry>6</entry>
|
||
<entry>Желтый</entry>
|
||
<entry>Сигнальный ноль</entry>
|
||
<entry>7</entry>
|
||
<entry>Сигнальный ноль</entry>
|
||
</row>
|
||
<row>
|
||
<entry>7</entry>
|
||
<entry>Коричневый</entry>
|
||
<entry>CTS</entry>
|
||
<entry>4</entry>
|
||
<entry>RTS</entry>
|
||
</row>
|
||
<row>
|
||
<entry>8</entry>
|
||
<entry>Белый</entry>
|
||
<entry>RTS</entry>
|
||
<entry>8</entry>
|
||
<entry>DCD</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<para>Для ваших кабелей и переходников цвета могут отличаться.
|
||
Например, 8 провод может быть серого, а не белого цвета.</para>
|
||
|
||
<para>Не забудьте <emphasis>четко</emphasis> пометить переходник,
|
||
так чтобы пометка не стерлась и не отвалилась со временем!
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Маршрутизаторы Cisco 16xx/26xx/36xx</term>
|
||
|
||
<listitem>
|
||
<para>Я полагаю, что все продукты Cisco, использующие разъемы RJ-45
|
||
для консоли и работающие под управлением &ios;, требуют одинаковых
|
||
кабелей, но лучше будет дополнительно проверить. Мы работали
|
||
только с маршрутизаторами серий 1600, 2600 и 3600.</para>
|
||
|
||
<para>И Stallion, и Cisco 2600 используют разъемы RJ-45, но они,
|
||
разумеется, не совместимы, поэтому вам потребуется специально
|
||
обжатый (и подключенный в правильной ориентации!) кабель
|
||
RJ-45-RJ-45. Мы использовали стандартные провода RJ45 от
|
||
маршрутизаторов до патч-панелей и специально подготовленные от
|
||
патч-панели до разъемов карты Stallion.</para>
|
||
|
||
<para>Пара специальных кабелей Stallion-Cisco была сделана путем
|
||
разрезания пополам стандартного двухметрового патч-корда и
|
||
набивания разъемов RJ-45 на получившиеся свободные концы.
|
||
Изначальный разъем предназначается для стороны маршрутизатора
|
||
Cisco, обжатый для Stallion. Цвета проводов (как и прежде,
|
||
держа кабель разъемом вверх и защелкой от себя, слева направо)
|
||
в нашем случае были такими: бело-зеленый, зеленый,
|
||
бело-оранжевый, синий, бело-синий, оранжевый, бело-коричневый,
|
||
коричневый. Для стороны Stallion следовало обрезать коричневую
|
||
и зеленую пары. Затем, в уже описанной расстановке, оставшиеся
|
||
провода коммутировались так: пусто, пусто, синий, оранжевый,
|
||
бело-оранжевый, бело-синий, пусто, пусто, как показано ниже:
|
||
</para>
|
||
|
||
<table>
|
||
<title><!-- XXX: add title for this table --></title>
|
||
|
||
<tgroup cols="5">
|
||
<thead>
|
||
<row>
|
||
<entry>Контакт RJ-45 Cisco</entry>
|
||
<entry>Цвет</entry>
|
||
<entry>Сигнал Cisco</entry>
|
||
<entry>Контакт RJ-45 Stallion</entry>
|
||
<entry>Сигнал Stallion</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>бело-зеленый</entry>
|
||
<entry>RTS</entry>
|
||
<entry>N/C</entry>
|
||
<entry> </entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>зеленый</entry>
|
||
<entry>DTR</entry>
|
||
<entry>N/C</entry>
|
||
<entry> </entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>3</entry>
|
||
<entry>бело-оранжевый</entry>
|
||
<entry>TxD</entry>
|
||
<entry>5</entry>
|
||
<entry>RxD</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>4</entry>
|
||
<entry>синий</entry>
|
||
<entry>Gnd</entry>
|
||
<entry>3</entry>
|
||
<entry>Gnd</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>5</entry>
|
||
<entry>синий</entry>
|
||
<entry>Gnd</entry>
|
||
<entry>6</entry>
|
||
<entry>Gnd</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>6</entry>
|
||
<entry>оранжевый</entry>
|
||
<entry>RxD</entry>
|
||
<entry>4</entry>
|
||
<entry>TxD</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>7</entry>
|
||
<entry>бело-коричневый</entry>
|
||
<entry>DSR</entry>
|
||
<entry>N/C</entry>
|
||
<entry> </entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>8</entry>
|
||
<entry>коричневый</entry>
|
||
<entry>CTS</entry>
|
||
<entry>N/C</entry>
|
||
<entry> </entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<para>Вновь отметим, что цвета ваших кабелей и переходников могут
|
||
отличаться.</para>
|
||
|
||
<para>Аккуратно пометьте каждый конец кабеля и тщательно
|
||
протестируйте его. Тестирование может стать
|
||
<emphasis>по-настоящему</emphasis> сложным, поскольку его нельзя
|
||
произвести при помощи стандартного RJ-45 тестера!</para>
|
||
|
||
<para>Заметим еще раз: <emphasis>убедитесь</emphasis>, что вы
|
||
пометили новый кабель так, чтобы его было легко сразу опознать
|
||
как специальный и нельзя было бы перепутать с обычным
|
||
патч-кордом. Несколько советов от Хью Ирвина (Hugh Irvine):
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Делайте их из кабеля другого цвета</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Лучший способ маркировки кабеля, который мне встречался:
|
||
запаять напечатанную этикетку под прозрачный термоусадочный
|
||
кембрик на конец кабеля перед разделкой разъема</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Можно использовать маркеры типа Panduit, прикрепляемые к
|
||
кабелю стяжками, но на них со временем выцветают чернила.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Коммутаторы Cisco &catalyst;</term>
|
||
|
||
<listitem>
|
||
<para>Как ни странно, расположение сигналов на контактах
|
||
консольного порта коммутаторов &catalyst; иногда
|
||
<emphasis>отличается</emphasis> от используемого в
|
||
маршрутизаторах Cisco. Я полагаю, что карта сигналов
|
||
определяется используемым программным обеспечением.
|
||
Если коммутатор работает под управлением &ios;, применяется
|
||
раскладка, описанная выше. В противном случае, следует применить
|
||
хитрость.</para>
|
||
|
||
<para>К счастью, вся разница в расположении сигналов заключается
|
||
в том, что одна из раскладок является зеркальным отражением
|
||
другой. Еще радостнее то, что в комплекте с оборудованием Cisco
|
||
(как с коммутаторами &catalyst;, так и с 2600) поставляется
|
||
специальный <quote>перевернутый</quote> (<quote>rollover</quote>)
|
||
кабель; он-то нам и нужен. Мы использовали перевернутый кабель
|
||
для связи консольного порта коммутаторов &catalyst; и
|
||
патч-панели, а затем описанный выше для Cisco 2600 специальный
|
||
кабель от патч-панели до карты Stallion. Все прекрасно работало.
|
||
</para>
|
||
|
||
<para>Перевернутый кабель имеет на обоих концах разъемы RJ-45 и
|
||
предназначен для использования вместе с переходниками
|
||
RJ-45 - DB-25 и RJ-45 - DB-9 (также поставляемыми в комплекте;
|
||
неразборными) для присоединения к консоли. В нашем случае
|
||
кабель был плоским, длиной около 2 м, голубого или черного цвета.
|
||
Попытки использовать его как обычный 100-Мбитный сетевой кабель
|
||
окончатся неудачей! Определить такой кабель легко, если взять
|
||
оба разъема (кабелем вниз, защелкой от себя) и сравнить цвета
|
||
контактов. Разъемы должны выглядеть зеркально; в нашем случае
|
||
это были
|
||
серый-оранжевый-черный-красный-зеленый-желтый-синий-коричневый
|
||
с одной стороны, и
|
||
коричневый-синий-желтый-зеленый-красный-черный-оранжевый-серый
|
||
с другой.
|
||
</para>
|
||
|
||
<para>Если у вас нет под рукой перевернутого кабеля, вы можете
|
||
использовать кабель для маршрутизатора 26xx, перевернув его:
|
||
исходный разъем с 8 контактами в Stallion, новый с 4 контактами
|
||
в коммутатор &catalyst;.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>Сервера &os; (или любые другие системы на базе ПК &i386;,
|
||
использующие последовательную консоль)</term>
|
||
|
||
<listitem>
|
||
<para>Мы используем &os; 4 на паре ПК архитектуры &i386; для
|
||
различных периферийных нужд. &os; обычно использует экран и
|
||
клавиатуру в качестве консоли, но может быть сконфигурирована
|
||
в режим последовательной консоли (как правило, на первый
|
||
последовательный порт, известный как <devicename>COM1</devicename> в DOS/&windows; или
|
||
<devicename>ttyd0</devicename> в &unix;).</para>
|
||
|
||
<para>Подключение таких консолей зависит от используемого
|
||
оборудования. Старые ПК использовали разъем DB-25 "мама", и для
|
||
них подходит описанный выше вариант для сервера Sun. Для
|
||
современных ПК с разъемами DB-9 "папа" существуют два варианта:
|
||
использовать переходник DB9 - DB-25 (не рекомендуется, поскольку
|
||
со временем такие соединения разбалтываются и ведут к
|
||
непредсказуемым потерям связи) или собрать кабель RJ-45 - DB-9:
|
||
</para>
|
||
|
||
<table>
|
||
<title><!-- XXX: add title for this table --></title>
|
||
|
||
<tgroup cols="5">
|
||
<thead>
|
||
<row>
|
||
<entry>Контакт RJ-45 Stallion</entry>
|
||
<entry>Цвет</entry>
|
||
<entry>Сигнал</entry>
|
||
<entry>Контакт DB-9 "мама"</entry>
|
||
<entry>Сигнал RS232</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>1</entry>
|
||
<entry>Синий</entry>
|
||
<entry>DCD</entry>
|
||
<entry>4</entry>
|
||
<entry>DTR</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>2</entry>
|
||
<entry>Оранжевый</entry>
|
||
<entry>RTS</entry>
|
||
<entry>8</entry>
|
||
<entry>CTS</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>3</entry>
|
||
<entry>Черный</entry>
|
||
<entry>Защитная земля</entry>
|
||
<entry>N/C</entry>
|
||
<entry> </entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>4</entry>
|
||
<entry>Красный</entry>
|
||
<entry>TxD</entry>
|
||
<entry>2</entry>
|
||
<entry>RxD</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>5</entry>
|
||
<entry>Зеленый</entry>
|
||
<entry>RxD</entry>
|
||
<entry>3</entry>
|
||
<entry>TxD</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>6</entry>
|
||
<entry>Желтый</entry>
|
||
<entry>Сигнальный ноль</entry>
|
||
<entry>5</entry>
|
||
<entry>Сигнальный ноль</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>7</entry>
|
||
<entry>Коричневый</entry>
|
||
<entry>CTS</entry>
|
||
<entry>7</entry>
|
||
<entry>RTS</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>8</entry>
|
||
<entry>Белый</entry>
|
||
<entry>RTS</entry>
|
||
<entry>1</entry>
|
||
<entry>DCD</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</table>
|
||
|
||
<para>См. также раздел <xref linkend="freebsd">. В нем вы найдете
|
||
советы по конфигурированию последовательной консоли в &os;.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="solaris">
|
||
<title>Про системы Sun и сигнал Break</title>
|
||
|
||
<para>Всякий, кто хоть раз выключал терминал, используемый в качестве
|
||
консоли для сервера Sun, знает, что происходит в результате и почему
|
||
это является проблемой. Оборудование Sun считает сигнал
|
||
<literal>BREAK</literal> на консоли командой остановить систему и
|
||
вернуться в монитор загрузчика. Сигнал
|
||
<literal>BREAK</literal> — специальный срочный сигнал
|
||
последовательного порта, заключающийся в активизации (установки в уровень
|
||
ниже -5 В) сигнала TxD на время большее чем требуется на передачу двух
|
||
символов (около 2 мс для скорости 9600 bps). К сожалению, этот сигнал
|
||
часто возникает при включении или выключении коммуникационного
|
||
оборудования. В частности, карты Stallion также генерируют
|
||
<literal>BREAK</literal> при отключении питания компьютера.
|
||
Если не предпринимать специальных действий, это может привести к
|
||
остановке всех серверов Sun, подключенных к консольному серверу, при
|
||
его отключении (при отказе блока питания, или в результате неосторожных
|
||
действий оператора, или по еще каким-либо причинам). Ясно, что такая
|
||
ситуация неприемлема.</para>
|
||
|
||
<para>К счастью, у компании Sun есть набор исправлений. Для ОС &solaris;
|
||
версии 2.6 и более поздних, при помощи команды <command>kbd(1)</command>
|
||
можно запретить переход в монитор загрузчика по сигналу BREAK. Это уже
|
||
неплохо для начала, но лишает вас шансов восстановить повисшую машину,
|
||
вернув ее в загрузчик.</para>
|
||
|
||
<para>Начиная с &solaris; версии 8, команду <command>kbd</command> можно
|
||
использовать для установки альтернативной последовательности прерывания:
|
||
<command>kbd -a alternate</command>. После активации, для возврата в
|
||
монитор загрузки необходимо в течение 5 секунд выдать последовательность:
|
||
<keycap>Return</keycap> <keycap>~</keycap>
|
||
<keycombo><keycap>Ctrl</keycap><keycap>B</keycap></keycombo>.
|
||
Эта возможность может быть включена на постоянной основе путем
|
||
редактирования файла <filename>/etc/default/kbd</filename>; подробнее
|
||
см. справочную страницу <literal>kbd(1)</literal>. Отметим, что
|
||
альтернативная последовательность активируется после перехода ядра в
|
||
многопользовательский режим и обработки файла начальных установок.
|
||
В период начальной загрузки (включение питания и в процессе загрузки ядра)
|
||
и в однопользовательском режиме для возврата в монитор загрузки нужно
|
||
использовать сигнал <literal>BREAK</literal>. Из консольного клиента его
|
||
можно активировать последовательностью <keycap>Esc</keycap>
|
||
<keycap>c</keycap> <keycap>l</keycap> <keycap>1</keycap>.</para>
|
||
|
||
<para>Если у вас есть сервисный контракт с компанией Sun, вы можете скачать
|
||
патчи, реализующие альтернативную последовательность прерывания, для
|
||
&solaris; версий 2.6 и 2.7. &solaris; 2.6 требует патча 105924-10 или выше;
|
||
&solaris; 2.7 — 107589-02 или выше.</para>
|
||
|
||
<para>Мы применили этот патч на всех наших серверах &solaris; 2.6 и
|
||
добавили его (вместе с установкой для файла /etc/default/kbd) в стартовую
|
||
конфигурацию, так чтобы любой новый сервер автоматически был правильно
|
||
сконфигурирован.</para>
|
||
|
||
<para>Наши тесты показали, что ни маршрутизаторы Cisco 16xx, 26xx, ни
|
||
коммутаторы &catalyst; не подвержены проблеме сигнала
|
||
<literal>BREAK</literal>, возникающего при потере питания картой
|
||
Stallion. В настоящее время маршрутизаторы и коммутаторы Cisco реагируют
|
||
на сигнал <literal>BREAK</literal> только в течение первых 30 секунд после
|
||
включения питания или перезагрузки.</para>
|
||
</sect1>
|
||
|
||
<sect1 id="freebsd">
|
||
<title>Использование последовательной консоли в &os;</title>
|
||
|
||
<para>Подробно эта процедура описана в отдельной главе
|
||
<ulink
|
||
url="&url.books.handbook;/serialconsole-setup.html">Руководства
|
||
&os;</ulink>. Здесь мы приводим краткий перечень.</para>
|
||
|
||
<sect2 id="freebsd-kernconf">
|
||
<title>Проверьте конфигурацию ядра</title>
|
||
|
||
<para>Проверьте, что файл конфигурации ядра содержит
|
||
<literal>flags 0x10</literal> в строке, описывающей устройство
|
||
<devicename>sio0</devicename>. Этот флаг разрешает использование
|
||
устройства (известного также как <devicename>COM1</devicename> в
|
||
DOS/&windows; или как <devicename>/dev/ttyd0</devicename> в &os;)
|
||
в качестве консоли. Флаг установлен в обоих примерах стандартной
|
||
конфигурации ядра (<filename>GENERIC</filename> и
|
||
<filename>LINT</filename>), так что, скорее всего, он установлен и в
|
||
вашем ядре.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="freebsd-bootconf">
|
||
<title>Создайте файл <filename>/boot.conf</filename>
|
||
file</title>
|
||
|
||
<para>Этот файл должен состоять из одной строки, содержащей только
|
||
<quote><literal>-h</literal></quote> (без кавычек). Этот флаг
|
||
указывает загрузочным блокам &os; переключиться на последовательную
|
||
консоль.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="freebsd-ttys">
|
||
<title>Отредактируйте файл <filename>/etc/ttys</filename></title>
|
||
|
||
<para>Необходимы следующие изменения:</para>
|
||
|
||
<para>Если вы не собираетесь подключать клавиатуру и монитор к этому
|
||
серверу, найдите все строки для устройств <devicename>ttyv</devicename>,
|
||
таких как</para>
|
||
|
||
<programlisting>ttyv1 "/usr/libexec/getty Pc" cons25 on secure</programlisting>
|
||
|
||
<para>Замените <literal>on</literal> на <literal>off</literal>.
|
||
Это запретит запуск утилит регистрации на ненужных более видео консолях.
|
||
</para>
|
||
|
||
<para>Найдите строку, содержащую <devicename>ttyd0</devicename>. Измените
|
||
ее с</para>
|
||
|
||
<programlisting>ttyd0 "/usr/libexec/getty std.9600" dialup off secure</programlisting>
|
||
|
||
<para>на</para>
|
||
|
||
<programlisting>ttyd0 "/usr/libexec/getty std.9600" vt100 on secure</programlisting>
|
||
|
||
<para>(замените <literal>vt100</literal> на тип терминала вашей консоли.
|
||
Хорошим выбором может быть <literal>xterm</literal>). Это позволит вам
|
||
зарегистрироваться на консоли после того, как система перейдет в
|
||
многопользовательский режим.</para>
|
||
|
||
<para>Перезагрузитесь — и все!</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="security">
|
||
<title>Соображения безопасности</title>
|
||
|
||
<para>Протокол "клиент-сервер" утилиты <application>conserver</application>
|
||
требует от пользователя клиентской утилиты
|
||
<application>console</application> ввода пароля. Этот пароль передается
|
||
по сети в <emphasis>открытом виде</emphasis>! Как следствие, утилита
|
||
<application>conserver</application> не особенно пригодна для
|
||
использования в небезопасных сетях (в том числе в интернет).
|
||
Использование уникальных паролей для <application>conserver</application>
|
||
слегка смягчает проблему, однако любой, кто способен прослушать сетевой
|
||
трафик между клиентом и сервером <application>conserver</application>,
|
||
может легко получить консольный доступ, а с консоли использовать
|
||
последовательность прерывания. Для удаленной работы используйте
|
||
какие-либо защищенные протоколы, такие как <application>SSH</application>
|
||
для регистрации на консольном сервере и запускайте консольный клиент
|
||
непосредственно оттуда.</para>
|
||
</sect1>
|
||
|
||
<sect1 id="conserver-versions">
|
||
<title>Различные версии Conserver</title>
|
||
|
||
<para>Программа <application>conserver</application> расслоилась на
|
||
несколько независимых версий. Сайт, упоминаемый ниже, судя по всему,
|
||
содержит последнюю и наиболее полную версию из доступных. На момент
|
||
написания статьи (июль 2004 г.) это версия <quote>8.1.9</quote>. Сайт поддерживается
|
||
Брайаном Стэнселлом (Bryan Stansell), <email>bryan@conserver.com</email>,
|
||
который свел воедино работу многих разработчиков (перечислены на его
|
||
сайте).</para>
|
||
|
||
<para>Коллекция портов &os; содержит <application>conserver</application>
|
||
версии 8.5 в каталоге <filename role="package">comms/conserver</filename>.
|
||
Судя по всему, он более старый, и содержит меньше
|
||
возможностей, чем 8.1.9 (в частности, не поддерживает консоли,
|
||
соединенные с портами терминальных серверов, или файл паролей
|
||
<filename>conserver.passwd</filename>), а также написан довольно
|
||
своеобразно (используя препроцессор для генерации исходного текста
|
||
на языке C). Версия 8.5 ведется Кевином Браунсдорфом (Kevin
|
||
S. Braunsdorf) <email>ksb+conserver@sa.fedex.com</email>,
|
||
в прошлом основным автором <application>conserver</application>;
|
||
Брайан основывался на его разработках. Версия 8.5 поддерживает одну
|
||
возможность, не поддерживаемую 8.1.9: управление питанием удаленных
|
||
машин через специальный контроллер, управляемый по последовательному
|
||
порту.</para>
|
||
|
||
<para>Начиная с декабря 2001 г., версия Брайана (в настоящее время 8.1.9)
|
||
присутствует в дереве портов в каталоге
|
||
<filename role="package">comms/conserver-com</filename>. Мы рекомендуем
|
||
использовать именно ее как более подходящую для построения консольного
|
||
сервера.</para>
|
||
</sect1>
|
||
|
||
<sect1 id="links">
|
||
<title>Ссылки</title>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><ulink url="http://www.conserver.com/"></ulink></term>
|
||
|
||
<listitem>
|
||
<para>Сайт последней версии программы <application>conserver</application>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><ulink url="ftp://ftp.conserver.com/conserver/conserver-8.1.9.tar.gz">ftp://ftp.conserver.com/conserver/conserver-8.1.9.tar.gz</ulink></term>
|
||
|
||
<listitem>
|
||
<para>Архив исходных текстов для версии 8.1.9 программы
|
||
<application>conserver</application>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><ulink url="http://www.stallion.com/"></ulink></term>
|
||
|
||
<listitem>
|
||
<para>Сайт компании Stallion Technologies.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><ulink url="http://www.conserver.com/consoles/msock.html"></ulink></term>
|
||
|
||
<listitem>
|
||
<para>Написанный Дэвидом Харрисом (Davis Harris)
|
||
<quote>Малый Свиток Знаний о Консолях</quote>, содержащий массу
|
||
полезной информации о последовательных консолях и вообще
|
||
о последовательных портах.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><ulink url="http://www.conserver.com/consoles/"></ulink></term>
|
||
|
||
<listitem>
|
||
<para><quote>Большой Свиток Знаний о Консолях</quote>
|
||
содержит еще более подробную информацию о соединении одних устройств
|
||
с другими. О, эти Стандарты!</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><ulink url="http://www.eng.auburn.edu/users/doug/console.html"></ulink></term>
|
||
|
||
<listitem>
|
||
<para>Дуг Хьюджес (Doug Hughes) создал схожий консольный сервер на
|
||
основе утилиты <application>screen</application> и старой машины под
|
||
управлением &sunos;.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><ulink url="http://www.realweasel.com/"></ulink></term>
|
||
|
||
<listitem>
|
||
<para>Компания Real Weasel производит видеокарты для шин ISA или PCI,
|
||
в реальности производящие вывод в последовательный порт. Они могут
|
||
использоваться для консолей ПК в тех операционных системах, которые
|
||
не могут быть сконфигурированы в режим последовательной консоли
|
||
достаточно рано в процессе загрузки.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
</variablelist>
|
||
</sect1>
|
||
|
||
<sect1 id="manpages">
|
||
<title>Справочные страницы</title>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><ulink url="http://www.conserver.com/docs/console.man.html">console(8)</ulink></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink url="http://www.conserver.com/docs/conserver.man.html">conserver(8)</ulink></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink url="http://www.conserver.com/docs/conserver.cf.man.html">conserver.cf(5)</ulink></para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect1>
|
||
</article>
|