PowerAnt - Могучий Муравей: Научи Свой компьютер Управлять Реальным Миром
PowerAnt это программное управление через RS-232 порт 14 и больше внешними устройствами с помощью компьютера. Открытый, текстовый, хорошо задокументированный протокол управления. Управление электроприборами с потребяемой мощностью до 200Вт. Хотите управлять Реальным Миром даже из MS Excel?.
 Применение
Компьютерный клуб
Компьютерная сеть
Домовая сеть
Умный дом
Прочее
 PowerAnt
Описание
Применение
Тех. характеристики
Документация
Фотографии
 Базовая станция
Описание
Применение
Тех. характеристики
Документация
 Типы PowerAnt
SwSe
SwSw
SeSe
 Скорость работы
MS-DOS
Linux
MS Windows 98
MS Windows 98, Perl
 Программирование
Примеры на Perl
C/C++ - c чего начать
C/C++ - примеры
MS Access 2000
MS Excel 2000
 Заказ
Комплектность
Цены
 ЧаВо
 Новости сайта RSS
 Статьи
 Контакты
 Рейтинги
Яндекс цитирования Каталог ресурсов ListTop.Ru Rambler's Top100

ПРИМЕНЕНИЕ ОПЕРАЦИОННОЙ СИСТЕМЫ LINUX В МАРШРУТИЗАТОРАХ СЕТЕЙ TCP/IP

А.В. Качан, А.В. Пастухов, С.А. Шульга

НПП <Информационные Технологии и Электронные Комплексы>
14030, Чернигов-30, ул. Одинцова, 17а
т.(0462)170510, факс. (0462)940026
e-mail: A.Pastukhov@itek.com.ua

В статье излагается опыт построения дистрибутива операционной системы Linux - Sirius AS Linux, ориентированного на решение задач концентрации и маршрутизации трафика в сетях TCP/IP, построенных на основе оборудования Сириус 128. В качестве особенностей полученного дистрибутива выделяется простота комплектации программами и администрирования, использование FALSH диска размером 16МБ с эмуляцией интерфейса IDE, который, фактически, постоянно находится в режиме только чтение.


This article tells about the construction experience of "Sirius AS Linux" - Lunux based operation system distributive. This distributive is specializes on the decision of the traffic concentration and routing in TCP/IP networks, constructed on the basis of the equipment Sirius 128. As features of the received distributive are described the simplicity of programs set by the and administration simplicity, use 16MB FALSH disk with IDE interface emulation, with actually, constantly works in a read only mode.


Введение

Современное состояние телекоммуникаций в мире характеризуется процессом конвергенции, эволюционного перехода от множества разрозненных сетей электросвязи, каждая из которых предоставляла только одну услугу: телефон, телеграф, радио и т.д., к единой сети, интегрирующей в себе все имеющиеся на сегодня услуги электросвязи и имеющей широкие возможности для внедрения новых, ранее неизвестных услуг.

Такую сеть называют <сетью сетей> или мультисервисной сетью. Основу мультисервисной сети составляет мощная транспортная сеть, основанная на технологи коммутации пакетов. Вторая важная составляющая - сеть доступа. Она обеспечивает доступ абонентов-пользователей услуг к транспортной сети и взаимодействие их между собой. И, наконец, третий элемент - центры предоставления услуг. В них сосредоточены информационные ресурсы и интеллект сети по предоставлению услуг.

В настоящее время в Украине идет процесс формирования мультисервисной сети государственного масштаба. Одной из наиболее распространенных основ построения сети доступа мультисервисной сети является оборудование XDSL, одним из примеров такого рода решения является ВЦАД Сириус 128 от НПП ИТЭК [1].

Комплект оборудования ВЦАД состоит из станционной части и терминалов абонентских. Оборудование ВЦАД Сириус 128 устанавливается в разрыв между телефонной станцией и телефонным аппаратом абонента. При этом телефонная связь остается доступной вне зависимости от того включено оборудование или нет, передаются данные или нет. Между терминалом абонентским и станционной частью организуется цифровой канал, при этом абоненту предоставляется возможность передавать и принимать данные со скоростью 115200 бит/сек, если не задействуется телефонная связь, и со скоростью 57600 бит/сек, если поднята телефонная трубка. Более подробное описание возможностей системы можно получить на специализированном сайте www.sirius128.com.ua.

Станционная часть оборудования Сириус 128 кроме организации цифровых каналов выполняет функции узла доступа, концентрируя и маршрутизируя TCP/IP трафик абонентов. В качестве одного из решений задачи концентрации и маршрутизации трафика TCP/IP НПП <ИТЭК> предлагается изделие <сервер доступа Sirius AS Linux>.

Каждый сервер доступа Sirius AS Linux предназначен для концентрации трафика 128 абонентских портов и организации, абонентам, доступа к сети WAN при помощи интерфейсов Ethernet 10/100, G.703, v35. Конструктивно сервер доступа исполняется в специализированном промышленном корпусе, предназначенном для установки в стандартную 19 дюймовую стойку. Материнская плата, процессор, память и видеоадаптер являются стандартными для систем архитектуры x86. Для загрузки системы и хранения ее конфигурации используется твердотельный носитель - FLASH диск размером 16МБ с эмуляцией IDE интерфейса, что и послужило причиной создания собственного дистрибутива ОС Linux, об особенностях построения которого и пойдет речь далее.

В данной статье не обсуждается проблема выбора операционной системы и проблема выбора базового дистрибутива ОС Linux. В качестве базового дистрибутива ОС Linux выбран Black Cat Linux 6.02.

Начальная загрузка системы

Основной особенностью загрузки операционной системы является ее загрузка с FLASH диска, объемом 16МБ. Изначально планировалось на FLASH диске разместить корень файловой системы и держать его в режиме - только чтение, но в результате детального анализа процесса стандартной загрузки было выявлено, что для того, чтобы полностью выполнить это требование следует произвести значительные изменения в программах начальной загрузки. Кроме того, было выявлено, что FLASH диска объемом 16МБ просто недостаточно для поддержания работоспособной ОС. Поэтому для загрузки системы был применен один из стандартных механизмов разворачивания корневой файловой системы - initrd. (initrd - образ файловой системы ext2, существующий в виде файла, сжатый при помощи архиватора gzip, при загрузке операционной системы разворачивается в оперативную память и использующийся для хранения корневой файловой системы).

В случае применения initrd FLASH диск будет использоваться только для хранения ядра операционной системы, initrd, файлов требуемых для загрузки LILO (Linux Loader- стандартная программа начальной загрузки ОС Linux), и некоторых других файлов, назначение которых будет пояснено далее.

Указанный стандартный процесс загрузки операционной системы хорош, но не подразумевает одной важной детали - возможности изменения конфигурации системы и сохранения изменений. То есть initrd для загрузки операционной системы обязательно должен содержать каталог /etc, в то же время изменение конфигурации системы тоже производятся в этом каталоге, следовательно, в отношении каталога /etc должен быть применен совсем другой подход.

В качестве компромиссного варианта в каталоге /etc было выделено несколько файлов, который обязательно должны присутствовать в корне операционной системы для запуска процесса init:

/etc/inittab
/etc/fstab
/etc/mtab
/etc/rc.d/rc.sysinit
/etc/rc.d/init.d/functions

Далее был модифицирована программа начальной загрузки /etc/rc.d/rc.sysinit, которая в самом начале производит монтирование FALSH диска режиме <только чтение>, выбор на FLASH диске архива с конфигурацией, перемонтирование корневой файловой системы в режим <чтение-запись> и разворачивание архива, содержащего каталог /etc в корень файловой системы. При этом до разворачивания каталога /etc из архива, в файловой системе каталог /etc является символьной ссылкой на каталог /etc1. Перед разворачиванием архива каталога /etc символьная ссылка удаляется. Это сделано для того, чтобы файлы, отвечающие за загрузку системы, небыли заменены после разворачивания архива с текущей конфигурацией системы.

Также были удалены все проверки целостности файловой системы. Это связано с тем, что FLASH диск всегда находится в режиме <только чтение>, а в режим <чтения-записи> переводится только в моменты сохранения изменений конфигурации системы, то есть всегда в присутствии системного администратора.

За счет хранения каталога /etc на FLASH диске, в виде архива, получилось создать механизм организации стека конфигураций системы, с возможностью возврата на любую, ранее сохраненную, конфигурацию.

Как выяснилось в процессе эксплуатации системы, иногда требуется изменение некоторых системных файлов, хранящихся на initrd. Разумеется, можно переделывать каждый раз этот initrd, но это не удобно. Для таких целей в систему введен механизм обновлений. Каждое обновление представляет собой архив файлов, который разворачивается в корень файловой системы. Обновления разворачиваются перед разворачиванием каталога /etc.

Далее процесс загрузки операционной системы полностью соответствует процессу загрузки BlackCat Linux 6.02.

Состав программного обеспечения сервера доступа был оптимизирован под задачу. Об этом стоит рассказать отдельно.

Состав программного обеспечения

В соответствии с поставленной задачей был оптимизирован состав программного обеспечения сервера. В качестве основы была взята поставка BalckCat Linux 6.02. Далее был составлен список всех файлов, которые требуются для нормальной работы с операционной системой и ее загрузки. Перед копированием файлов в систему проверялась зависимость исполняемого файла от библиотек. Нужные библиотеки автоматически копировались.

В ходе копирования библиотек и файлов производилось удаление символьных таблиц из объектных файлов при помощи программы strip (man strip). Благодаря этому удалось уменьшить объем, занимаемый программами и библиотеками практически в 2 раза.

Основу поставки программного обеспечения составляет:

· Ядро операционной системы

· Драйвера устройств (размещены в initrd)

· Загрузчик ОС lilo

· Программа init

· bash

· Некоторые вспомогательные программы (ls, cp, mv:)

· Пакет аутентификации pam (удаление символьных таблиц из библиотек этого пакета производить не следует)

· Стандартные демоны: crond, syslogd

· Сервисы и демоны, отвечающие за маршрутизацию в сетях TCP/IP: ipchains, iproute, gated, routed, pppd

· Сервисы и демоны, отвечающие за управление системой: sshd, snmpd, xntpd

· Midnight Commander


При этом почти все программы были просто скопированы из базового дистрибутива Linux. Исключение составили только пакеты, непосредственно отвечающие за выполнение поставленной задачи (pppd, sshd, snmpd).

Следует обратить внимание на простоту самого процесса комплектования initrd программами. В большинстве случаев разработчики подобных систем применяют подход, связанный с компиляцией единого, статически связанного (слинкованного) исполняемого файла для всех программ и демонов. Действительно такой подход позволяет существенно сократить объем дискового пространства, занимаемого файлами из каталогов /bin, /sbin, /usr/bin, /usr/sbin (порядка 10 раз с 2 МБ до 200КБ для каталога /bin [2, 3]). Но ввиду того, что для выполнения поставленной задачи памяти, оперативной и дисковой, более чем достаточно, подобное усложнение процесса комплектации системы программами не разумно.

Как оказалось, наличие только стандартных пакетов не способно полностью решить поставленную задачу, поэтому состав ПО был расширен специализированными программами.

Дополнительные программы

В системе применен стандартный демон pppd, но его применение в чистом виде не лишено недостатков.  Ввиду специфики оборудования Сириус 128 привязка интерфейса к файлу устройства необходима для организации съема статистической информации средствами ipchains/snmp. Соответственно были полностью изменены программы инициализации интерфейсов ppp.

 Запуск и останов демонов pppd производится при помощи специального демона pppinit, разработанного специалистом нашей компании. Функционально этот демон, мало отличается от стандартного демона init - в его функции входит контроль над работоспособностью pppd и своевременный их перезапуск в случае возникновения сбоев.

В настоящее время в системе используется конфигурационный файл инициализации интерфейса ppp (приведен /etc/sysconfig/network-scripts/ifcfg-ppp0) следующего вида:

DEVICE=ppp0
PORTNUM=0
TTYNAME=iob0
IPADDR=192.168.1.1
REMOTEIP=192.168.2.1
LINESPEED=115200
ONBOOT=yes
PERSIST=yes
WIN98_BUGFIX=no

Изначально управление ppp интерфейсами осуществлялось при помощи стандартных команд ifup и ifdown. Однако в ходе эксплуатации выяснилось, что при большом количестве интерфейсов (до 128) применение этих команд вызывает неудобства. Поэтому была разработана утилита для управления ppp интерфейсами - pppctl. Основное ее преимущество над стандартными командами - это возможность выполнения групповых операций над интерфейсами ppp.

В ходе эксплуатации системы было выявлено не совсем правильное поведение OС Windows 98 при разрыве ppp соединения со стороны сервера доступа. Для решения этой проблемы был разработан специализированный модуль к демону pppd, что отражено в приведенном примере конфигурационного файла (WIN98_BUGFIX=no).

Система сбора сведений о трафике абонентов

Для сбора сведений о трафике абонентов применен достаточно простой стандартный подход. Средствами ipchains определены счетчики для входящего/исходящего трафика:

ipchains -A input -s 0.0.0.0/0.0.0.0 -d 0.0.0.0 -i ppp0
ipchains -A output -s 0.0.0.0/0.0.0.0 -d 0.0.0.0 -i ppp0

Получение тарификационной информации сделано средствами snmp. Кроме предложенной системы тарификации предлагается тарификация абонентов средствами RADIUS и TACACS. Это связано с тем, что некоторые провайдеры уже имеют собственные системы тарификации, опирающиеся на RADIUS и TACACS.

Встроенная справочная система

Любая поставка ОС Linux имеет встроенную справочную систему - так называемые man страницы. Вызов этих страниц производится при помощи стандартной программы man. В случае с Sirius AS Linux пришлось отказаться от этой программы и написать программу - замену. Основной проблемой, которая возникла со стандартной программой man, было наличие в ней подсистемы форматирования текста, которая учитывает тип консоли, на которой будет отображаться текст. Объем этой подсистемы оказался значительным, но решение этой проблемы лежало на поверхности. Стандартно программа man при, первом вызове какого либо документа, выполняет форматирование страницы, и отформатированную страницу сохраняет в кэш /var/catman. Далее если пользователь повторно пытается просмотреть туже самую страницу - страница отображается из кэша. В случае с Sirius AS Linux все man страницы хранятся в уже отформатированном виде, а программа man заменена достаточно простой программой на bash.

После копирования файлов в имидж initrd - автоматически проверяется наличие для каждого копируемого файла соответствующей man страницы, и если таковая имеется, то выполняется ее форматирование и полученный файл копируется в соответствующий каталог. Реальный размер, занимаемый в Sirius AS Linux справочной системой, составляет около 700 КБ.

Безопасность

В плане обеспечения безопасности применен достаточно стандартный подход. Из системы были удалены все пакеты программ не имеющие ничего общего с поставленной задачей, способные активизироваться из сети Internet. В ходе удаления был также удален стандартный демон inetd и все программы-демоны, которые работают через inted, в частности in.telnetd. В качестве единственного протокола, обеспечивающего удаленное управление системой, оставлен sshd.

Протокол системных сообщений (логи), ввиду отсутствия какого либо постоянного носителя (FLASH диск для этого явно не подходит) должен настраиваться системным администратором на передачу данных на рабочее место администратора системы.

Для съема тарификационной информации применяется протокол snmp. При правильной настройке этой программы - демона удаленные запросы должны приниматься только с известных IP адресов.

Особый интерес с точки зрения безопасности системы представляет сам FLASH диск. Так как файлов на этом диске мало, и все они являются архивами, следовательно, записать и проверять их имена и контрольную сумму не составляет труда.

Состав flash диска

Для большей наглядности приведем перечень файлов, которые содержатся на FLASH диске с комментариями:

Имя файла Назначение
/mnt/flash: Точка монтирования FLASH диска
boot Каталог с ядром операционной системы и файлами загрузчика lilo
etc Каталог с конфигурациями системы
linux Каталог с initrd и обновлениями операционной системы
lost+found Стандартный каталог ext2fs
/mnt/flash/boot:
System.map Символьная ссылка на ./System.map-2.2.19-3.sas
System.map-2.2.19-3.sas Требуется для отладки при добавлении новых модулей ядра операционной системы
boot.0300 Файл загрузчика lilo
boot.b Файл загрузчика lilo
chain.b Файл загрузчика lilo
map Файл загрузчика lilo
module-info Символьная ссылка на ./module-info-2.2.19-3.sas
module-info-2.2.19-3.sas Сведения о модулях, поддерживаемых ядром
vmlinuz Символьная ссылка на ядро операционной системы
vmlinuz-2.2.19-3.sas Ядро операционной системы
/mnt/flash/etc:
current Символьная ссылка на архив с текущей конфигурацией системы
etc-2002-01-03-11-03-56.tgz Конфигурация системы, сохраненная системным администратором
etc.tgz Изначальная конфигурация системы
/mnt/flash/linux: Каталог с initrd и обновлениями операционной системы
SiriusAS.img Initrd
update-sas-1.08-patch.1.tgz Файл обновления операционной системы
/mnt/flash/lost+found: Стандартный каталог ext2fs

Результирующий размер initrd составил порядка 6МБ. Общий объем полностью функционирующей операционной системы на FLASH диске составил менее 8МБ (менее половины общего объема FLASH диска).

Заключение

В результате проведенной работы создан дистрибутив операционной системы Linux - Sirius AS Linux, который способен стартовать с твердотельного загрузчика FLASH IDE объемом 16МБ. Также операционная система способна <без последствий> восстановить свое функционирование в случае аварийного выключения (то есть пропадания питания, нажатия кнопки сброс или питание). Ввиду применения FLASH диска, фактически всегда включенного в режиме <только чтение> и обозримого количества файлов на этом диске, можно говорить о повышенной устойчивости системы к постороннему вмешательству в ее деятельность. Система полностью способна выполнять поставленную задачу, что подтверждено практикой, и имеет широкую инсталляционную базу, как на Украине, так и за ее пределами [4]. Отличительной особенностью поученного дистрибутива операционной системы является полная совместимость, с точки зрения настройки, с дистрибутивами BlackCat Linux 6.02 / RadHat Linux 6.x, что значительно упрощает поиск и наем на работу специалистов, способных администрировать Sirius AS Linux.

Литература


1. НПП <ИТЭК> http://www.itek.com.ua
2. Linux Router Project (LRP) http://www.linuxrouter.org
3. MontaVista Software Inc. (HardHat Linux) http://www.mvista.com
4. http://www.itek.com.ua/pages/news/080102.html

PowerAnt это программное управление через RS-232 порт 14 и больше внешними устройствами с помощью компьютера. Открытый, текстовый, хорошо задокументированный протокол управления. Управление электроприборами с потребяемой мощностью до 200Вт. Хотите управлять Реальным Миром даже из MS Excel?.
  © 2004-2014 by  www.anthillsolutions.com