voliuf.narod.ru

главная

друзья

помощь сайту

Администрирование почтовых серверов sendmail  

Бесплатные учебники по темам

Партнерская программа

1.Принципы организации систем электронной почты

2.Использование ОС Linux в качестве сервера электронной почты

3.Установка телекоммуникационного оборудования в ОС Linux

4.DNS и доменные имена

5.Протокол SMTP

6.Протокол POP3

7.Протокол IMAP

8.Протокол РРР

9.Протокол UUCP

10.Программа sendmail

11.Установка и конфигурирование sendmail

12.Установка и конфигурирование POP3 и IMAP

13.Подключение почтового сервера к провайдеру Internet

14.Администрирование почтового сервера

15.Конфигурирование клиентов ЛВС

16.Поддержка удаленных клиентов

17.Почтовые псевдонимы и преобразование адресов

18.Списки рассылки

19.Маршрутизация IP в ОС Linux

 

Администрирование почтовых серверов sendmail 
3.Установка телекоммуникационного оборудования в ОС Linux
  

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

 

Прежде всего почтовый сервер на базе ОС Linux должен установить соединение по протоколу IP с провайдером услуг сети Internet (ISP), чтобы производить обмен электронной почтой с Internet. Для установления последовательного соединения с провайдером используется модем. После того как соединение установлено, сервер электронной почты на базе ОС Linux для приема/передачи IP-пакетов может использовать протокол РРР (Point-to-Point Protocol). Более подробно это описано в лекции 8, "Протокол РРР".

 

Помимо Internet-соединения, сервер электронной почты должен каким-то образом передавать почту на рабочие станции и давать им возможность отсылать почту в Internet. Самое простое решение — подключить почтовый сервер к локальной вычислительной сети вашего офиса. В небольших офисах можно организовать локальную вычислительную сеть (ЛВС) несколькими способами. Наибольшую популярность в последнее время приобрела технология ЛВС — Ethernet. Технология Ethernet позволяет объединять рабочие станции в сеть со скоростью 10 или 100 Мбит/с с помощью интерфейсных сетевых карт (Network Interface Card — NIC) или сетевых адаптеров, как их иногда называют. Для того чтобы подключить почтовый сервер с ОС Linux к офисной ЛВС на базе Ethernet необходимо правильно установить и сконфигуровать сетевой адаптер.

 

В этой лекции обсуждаются вопросы конфигурирования сервера электронной почты для работы и с рабочими станциями в ЛВС, и с провайдером Internet. В начале лекции дается краткий обзор телекоммуникационных устройств, которые могут работать в ОС Linux. Затем описывается процесс установки и настройки сетевых адаптеров. В конце лекции обсуждается алгоритм установки и настройки различных типов модемов.

 

Телекоммуникационные устройства в ОС Linux

Модемы и интерфейсные сетевые карты — это аппаратные телекоммуникационные устройства, подключаемые к ПК (часто с использованием слотов на материнской плате). Вначале эти устройства должны быть опознаны операционной системой Linux, в противном случае они могут работать некорректно. Для нормального функционирования этих устройств в ОС Linux необходимы специальные драйверы и программное обеспечение. На рис. 3.1 представлено программное и аппаратное обеспечение, необходимое для нормальной работы телекоммуникационных устройств.

 

 

Уровни работы телекоммуникационных устройств


Рис. 3.1.  Уровни работы телекоммуникационных устройств

 

 

Как видно из рис. 3.1, каждое телекоммуникационное устройство должно взаимодействовать с ядром ОС Linux. Как было сказано в предыдущей лекции, ядро отвечает за управление интерфейсами, которые назначаются телекоммуникационным устройствам. Как правило, это достигается с помощью загружаемых драйверов, которые называются модулями. Эти модули можно устанавливать при загрузке системы с помощью механизма сценариев. В свою очередь, ядру должны быть известны все параметры устройств в системе, чтобы оно могло работать с ними корректно.

 

После того как ядро системы обнаружило и сконфигурировало телекоммуникационные устройства, должна быть обеспечена возможность доступа к устройству, соответствующему программному обеспечению. Если же речь идет о сервере электронной почты, то программное обеспечение должно соответствовать протоколу TCP/IP.

 

Программное обеспечение TCP/IP для ОС Linux позволяет прикладным программам посылать пакеты TCP/IP через сетевой адаптер и модем удаленным устройствам на основе IP-адресов. Для нормальной работы стека протоколов TCP/IP необходим определенный набор параметров IP. Наиболее важными для организации IP-соединения являются:

 
  • IP-адрес устройства;
  • маска подсети IP;
  • адрес IP-маршрутизатора по умолчанию (шлюза);
  • серверы системы доменных имен DNS.
 

IP-адрес является уникальным идентификатором почтового сервера на базе ОС Linux в IP-сети офиса. Маски подсети определяет размер IP-сети офиса. Это позволяет почтовому серверу правильно определять время пересылки IP-пакетов на маршрутизатор для дальнейшей их отправки удаленным узлам. Маршрутизатор обычно используется сервером электронной почты для передачи пакетов удаленным узлам.

 

Последним параметром для нормальной работы почтового сервера на базе ОС Linux является настройка сервера системы доменных имен — DNS. Адресация в сетях IP основана на числовых адресах. Система доменных имен DNS сопоставляет IP-адреса с символьными именами хостов. Благодаря этому пользователи и программы работают с пространством имен хостов, а не с длинной последовательностью чисел, представляющей IP-адрес. Сервер DNS возвращает IP-адрес на заданное имя хоста.

 

В следующем разделе описывается процесс установки и настройки сетевых адаптеров на почтовом сервере под управлением ОС Linux.

 

Установка и конфигурирование сетевых адаптеров

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

 

Для установки и настройки сетевых адаптеров вручную в системе Linux применяется программа ifconfig. В некоторые дистрибутивы ОС Linux входит графическая оболочка X Window, с помощью которой установка параметров программы ifconfig несколько облегчается. В Red Hat и Mandrake Linux для настройки установленных сетевых адаптеров используется программа netcfg.

 

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

 

Конфигурирование сетевых адаптеров при начальной загрузке

После того как сетевой адаптер был правильно настроен (вручную либо автоматически), сервер на базе ОС Linux может общаться с другими устройствами в офисной локальной сети. Однако имеется одна проблема: после перезагрузки сервера на Linux вся информация о сетевом устройстве теряется. Для внесения информации о сетевых устройствах в специальную таблицу в ядре применяется команда ifconfig. Эта таблица создается в ядре при каждой загрузке сервера на основе сценариев конфигурации.

 

Программе ifconfig требуется запустить в процессе загрузки файл сценария, в котором задаются необходимые команды ifconfig для запуска сетевого адаптера. Во всех версиях ОС Linux имеются файлы сценариев, которые применяются при начальной загрузке для запуска различных программ. К сожалению, различные поставщики ОС Linux в своих дистрибутивах используют различные методы запуска для файлов сценариев. Так, в дистрибутивах Linux Mandrake, Caldera и Red Hat применяется метод init, присущий системам UNIX Sys V, который мы здесь и обсудим.

 

Метод инициализации Sys V довольно сложен и состоит из набора файлов сценариев. Сам процесс инициализации разделен на уровни запуска. На каждом уровне запуска выполняется набор файлов сценариев для инициализации определенных устройств, соответствующих данному уровню запуска. На рис. 3.2 дается обзор сценариев, используемых ОС Linux для загрузки конфигурационной информации об уровнях запуска в процессе начальной загрузки системы.

 

 

Процесс начальной загрузки в ОС Linux

Рис. 3.2.  Процесс начальной загрузки в ОС Linux

 

 

Каталог /etc/rc.d содержит сценарии, которые запускаются в соответствии с уровнем запуска init в системе. Как правило, сервер на базе Linux функционирует либо на 3-м уровне запуска (в режиме консоли), либо на 5-м уровне (в режиме X Window). На том и другом уровнях запуска используется один и тот же сценарий для запуска сетевых устройств — S10network, который находится в каталоге /etc/rc.d/rc3.d или в /etc/rc.d/rc5.d. Сценарий S10network запускает на сервере сетевые функции. Далее им используется еще один сценарий — ifup, который пытается запустить все возможные сетевые интерфейсы, сконфигурированные в процессе начальной загрузки. Сценарий ifup находится в каталоге /etc/sysconfig/network-scripts.

 

Каждому сконфигурированному в ОС Linux сетевому интерфейсу соответствует свой файл в каталоге /etc/sysconfig/network-scripts. Устройству /dev/eth0 соответствует файл ifcfg-eth0. В листинге 3.1 показан пример файла, созданного в ОС Linux для сетевого устройства eth0.

 
1 DEVICE=ethO
2 IPADDR=192.168.1.1
3 NETMASK=255.255.255.8
4 NETWORK=192.168.1.0
5 BROADCAST=158.18.1.255
6 ONBOOT=yes
7 BOOTPROTO=none

Листинг 3.1. Пример файла /etc/sysconfig/network-scripts/ifcfg-eth0

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

 
ifconfig ${DEVICE} ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}

Формат командной строки ifconfig в сценарии ifup в точности соответствует команде, вводимой вручную из командной строки.

 

Если же вы вознамерились создать собственный сценарий для нового сетевого интерфейса, то он может и не быть столь сложным и изощренным, как тот, что генерируется в Red Hat Linux. Все, что вам нужно, — это вписать необходимые строки ifconfig для запуска сетевого интерфейса. Если имя устройства и его IP-адрес известны, то вам не придется использовать переменные окружения и отдельно файлы конфигурации. Достаточно лишь задать конфигурацию в одной строке файла сценария S10network.

 

Использование ifconfig

Программа ifconfig является стандартной для операционной системы Linux. Она используется для идентификации и конфигурирования сетевых устройств в системе Linux.

 

Эта программа может работать в двух режимах:

 
ifconfig [interface]
ifconfig interface [aftype] options | address ...

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

 

Режим отчета

В режиме отчета ifconfig выводит информацию либо об одном сетевом интерфейсе, либо обо всех имеющихся в системе интерфейсах. Эта информация включает в себя набор аппаратных и программных параметров устройства, а также данные о его текущем состоянии. Каждому сетевому устройству для нормальной работы требуется несколько параметров. На рис. 3.3 приведен пример сетевого устройства, работающего в ОС Linux.

 

 

Компоненты сетевого устройства

Рис. 3.3.  Компоненты сетевого устройства

 

 

Как видно из рис. 3.3, одним из наборов параметров сетевого устройства является набор для конфигурации аппаратных параметров. Аппаратное прерывание и базовый адрес ввода-вывода используются для идентификации сетевого адаптера в ОС Linux и должны быть уникальными. Еще один набор параметров — это программные параметры. Для нормальной работы ОС Linux в IP-сети, в ней должны быть правильно настроены параметры протокола IP. К ним относятся уникальный IP-адрес, маска подсети и широковещательный адрес для сети.

 

В листинге 3.2 приведен пример работы команды ifconfig в режиме отчета.

 
1 [alex@shadrach alex]$ /sbin/ifconfig
2 eth0 Link encap:Ethernet HWaddr 00:A0:24:9C:69:02
3 inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
4 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
5 RX packets:7948525 errors:0 dropped:0 overruns:0 frame:0
6 TX packets:22003 errors:0 dropped:0 overruns:0 carrier:0
7 collisions:72 txqueuelen:180
8 Interrupt:11 Base address:0x8400
10 lo Link encap:Local Loopback
11 inet addr:l27.0.0.1 Mask:255.0.0.0
12 UP LOOPBACK RUNNING MTU:3924 Metric:1
13 RX packets:38 errors:0 dropped:0 overruns:0 frame:0
14 TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
15 collisions:0 txqueuelen:0
16
17 [alex@shadrach alex]$

Листинг 3.2. Пример работы команды ifconfig

В строке 1 листинга 3.2 показана команда ifconfig, заданная в командной строке. Возможно, понадобится указать полный путь для выполнения этой команды, если вы находитесь в системе не в качестве пользователя root. Строки со второй по восьмую отображают информацию о первом найденном в системе сетевом устройстве. Первый сетевой адаптер Ethernet обычно обозначается в системе как устройство eth0. В строке 2 показан аппаратный или как его еще называют МАС-адрес сетевого адаптера. Каждая сетевая карта имеет свой уникальный МАС-адрес. Это позволяет устройствам правильно идентифицировать другие устройства в сети на уровне обмена пакетами Ethernet. В строке 3 отображается IP-адрес сетевого устройства. В нашем случае сетевому адаптеру назначен IP-адрес 192.168.1.1 и маска подсети 255.255.255.0.

 

В строках 4–8 выдается статистическая информация о сетевом адаптере. Все приведенные здесь значения часто бывают полезны при локализации неисправностей, связанных с сетевым адаптером. В строке 4 отображается общая информация о состоянии сетевого устройства. Если сетевое устройство работает нормально, то в строке 4 Вы увидите сообщения UP и RUNNING. Строки 5–7 также можно использовать при поиске неисправностей. Если сетевой адаптер не может работать с другими устройствами, но при этом значения в счетчиках передачи TX и приема RX пакетов растут то, это означает, что сервер все-таки подключен к сети, но, возможно, неправильно указан его IP-адрес. Если наблюдается большое количество ошибок и столкновений (коллизий), то это верный признак наличия проблемы, связанной с сетью (поврежден кабель или сетевой концентратор (хаб)).

 

В строках 10–15 отображается информация о втором сетевом устройстве, найденном в системе. Устройство lo — это специальное устройство типа "петля". Устройство типа "петля" используется в системе Linux для проверки возможности связи операционной системы с использованием стандартных сетевых протоколов с самой собой. Адрес 127.0.0.1, указанный в строке 11, является стандартным IP-адресом для петельных устройств. Его нельзя использовать в качестве сетевого адреса в ЛВС. Он зарезервирован только для технических целей.

 

Режим конфигурирования

Конфигурирование с помощью программы ifconfig позволяет модифицировать различные параметры сетевых устройств. Вначале следует указать интерфейс, который будет конфигурироваться. Затем можно указать семейство адресов (aftype). Семейство адресов используется для отображения и декодирования всех адресов протоколов в ifconfig. В табл. 3.1 представлены все возможные семейства адресов.

 
Таблица 3.1. Семейство адресов ifconfig
Семейство адресов Описание
inet TCP/IP (семейство по умолчанию)
inet6 IP версии 6
ax25 пакетные радиосети AMPR
ddp AppleTalk Phase 2
ipx Novell IPX
netrom пакетные радиосети AMPR
 

Если ни одно из семейств адресов не указано, то по умолчанию принимается семейство inet. После семейства адресов при использовании ifconfig можно указывать другие параметры. В табл. 3.2 представлен список параметров, которые можно задавать в ifconfig.

 
Таблица 3.2. Параметры команды ifconfig
Параметр Описание
interface Указывает устройство для модификации
up Переводит интерфейс в активное состояние
down Переводит интерфейс в пассивное состояние
[-]arp Разрешает (запрещает) использование протокола ARP
[-]promisc Разрешает (запрещает) использование случайного режима
[-]allmulti Разрешает (запрещает) использование циркулярной передачи
metric N Определяет метрику для маршрутизации интерфейса
mtu N Определяет максимальный размер передаваемого блока
dstaddr Указывает IP-адрес пункта назначения при соединении "точка-точка"
netmask addr Устанавливает маску подсети
add addr/prefixlen Назначает IP-адрес версии 6 интерфейсу
del addr/prefixlen Удаляет IP-адрес версии 6, назначенный интерфейсу
tunnel a.b.c.d Создает новое SIT устройство (IPv6 в IPv4)
irq addr Назначает устройству адрес прерывания IRQ
io_addr addr Назначает устройству адрес ввода-вывода
mem_start addr Задает устройству начальный адрес в памяти с совместным доступом
media type Определяет тип физической среды, используемой устройством
[-]broadcast [addr] Устанавливает широковещательный IP-адрес или устанавливает (либо очищает) широковещательный флажок для нтерфейса
[-]pointtopoint [addr] Разрешает (запрещает) режим обмена данными типа "точка-точка" IP-адресом пункта назначения addr
hw class addr Устанавливает класс оборудования и адрес для устройства
multicast Устанавливает флажок циркулярной передачи
address Задает устройству IP-адрес
txqueuelen length Устанавливает длину очереди передачи для устройства
 

Как видно из табл. 3.2, при конфигурировании сетевого устройства в программе ifconfig можно задавать множество различных параметров. В одной командной строке можно задавать несколько параметров.

 

Формат команды ifconfig

 

Программа ifconfig использует формат немного отличающийся от того, к которому вы, вероятно, привыкли. Заметьте, что все параметры указаны без традиционного дефиса перед ними (-).

 

Установка параметров сетевого адаптера

С помощью ifconfig в системе на базе ОС Linux необходимо правильно сконфигурировать аппаратные параметры сетевого адаптера, чтобы он был опознан операционной системой. Если для этой цели в сетевом адаптере используются перемычки (иногда их называют джамперами от англ. jumper), то установка сетевого адаптера намного облегчается. Если же невозможно определить значения аппаратного прерывания IRQ и адреса ввода-вывода, то может понадобиться загрузка с диска с системой MS-DOS и запуск диагностической программы для сетевого адаптера. С ее помощью можно установить значения аппаратных параметров для сетевого адаптера. Возможно, когда-нибудь производители сетевых адаптеров будут включать версии диагностических программ для ОС Linux, но пока приходится поступать, как описано выше.

 

Команда ifconfig, задаваемая в командной строке, выглядит примерно так:

 
ifconfig eth0 irq 9 io_addr 0x310

Указанная команда устанавливает устройство /dev/eth0 как сетевой адаптер с прерыванием IRQ 9 и базовым адресом ввода-вывода 310 (десятичное число). После того как эта команда введена из командной строки, для сетевого устройства в таблице ядра создается запись, и система Linux обнаружит сетевой адаптер. Для того чтобы система Linux "запомнила" эти установки, данная команда должна включаться в файл сценария начальной загрузки, как это было описано выше.

 

Назначение IP-адресов

После того как аппаратные параметры были сконфигурированы, системе Linux для нормальной работы по сети требуется IP-адрес и маска подсети.

 

С помощью программы ifconfig можно назначить IP-адрес и маску подсети определенному интерфейсу. Вот пример такой команды:

 
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255

Этой командой назначается IP-адрес 192.168.1.1 устройству /dev/eth0, с маской подсети 255.255.255.0. Чтобы убедиться в том, что IP-адреса назначены интерфейсам, просто наберите в командной строке ifconfig без параметров. При этом будет представлена обновленная информация о сетевых интерфейсах.

 

Итак, для системы на базе ОС Linux, чтобы использовать аппаратные параметры при последующих загрузках, необходимо создать соответствующий сценарий загрузки с командой ifconfig.

 

Использование netcfg

Не торопитесь писать собственный сценарий для запуска программы ifconfig: существует более легкий путь. В большинство версий ОС Linux входит графическая оболочка X Window, которая устраняет многие неудобства, связанные с конфигурированием сетевых интерфейсов и с написанием сценариев загрузки. В Red Hat Linux и Mandrake Linux можно использовать программу netcfg. Те же самые функции в Caldera OpenLinux выполняет Caldera Open Administrator System (COAS).

 

Формат команды netcfg довольно прост:

 
netcfg

Да, это все. Нужно лишь помнить, что при конфигурировании сетевых интерфейсов вы должны обладать правами пользователя root. На рис. 3.4 показано главное окно программы netcfg.

 

 

Главное окно программы netcfg

Рис. 3.4.  Главное окно программы netcfg

 

 

Первое окно, которое появляется при вызове netcfg, называется Имена (Names). В этом окне вы можете изменить имя хоста, домена и сервера DNS, ранее назначенные системе. Системе могут назначаться несколько серверов DNS. В ОС Linux можно назначать до трех серверов имен.

 

Далее, щелкнув на кнопке Хосты (Hosts), можно вызвать окно, показанное на рис. 3.5. В окне Хосты можно изменять файл /etc/hosts на сервере Linux. По умолчанию здесь указываются адрес петли и локальный IP-адрес сервера. Имя хоста localhost является специальным для устройства типа "петля" с IP-адресом 127.0.0.1. Дополнительные имена хостов могут добавляться из этого окна в файл /etc/hosts. Если какие-нибудь имена хостов будут часто использоваться клиентами вашей сети, можно добавить их в файл /etc/hosts для ускорения обработки DNS-запросов. В лекции 4, "DNS и доменные имена", функции файла /etc/hosts описаны более подробно.

 

 

Окно Хосты программы netcfg

Рис. 3.5.  Окно Хосты программы netcfg

 

 

Щелчком мыши на кнопке Интерфейсы (Interfaces) можно вызвать окно, представленное на рис. 3.6. Окно Интерфейсы позволяет добавлять, удалять и редактировать сетевые интерфейсы в ОС Linux. Первым в списке всегда выступает петельное устройство. Щелчком мыши на кнопке Редактировать (Edit) выбранный интерфейс вызывается в окно Редактировать интерфейс Ethernet (Edit Ethernet/Bus Interface). В этом окне устанавливается IP-адрес и маска подсети для интерфейса. Здесь же можно указать, нужно ли активировать данный интерфейс при загрузке системы. Если в вашей сети организовано автоматическое распределение IP-адресов с помощью протоколов BOOTP или DHCP, то его также можно указать в данном окне. Все ваши настройки автоматически будут добавляться в файл сценария ifcfg-eth0. Более подробно его работа описана в разделе "Конфигурирование сетевых адаптеров во время начальной загрузки". Как видите, настройка сетевых интерфейсов в X Window намного легче, чем добавление сетевого интерфейса вручную в файл сценария.

 

 

Окно "Интерфейсы" программы netcfg

Рис. 3.6.  Окно "Интерфейсы" программы netcfg

 

 

Установка модемов

Для большинства серверов электронной почты на базе Linux модем сегодня является своеобразными воротами во внешний мир. Если имеется сервер электронной почты, подключенный к ЛВС, которая в свою очередь подключена к сети Internet, то вполне закономерно что для организации обмена электронной почтой потребуется подключение к провайдеру услуг сети Internet. Обычно такое соединение организуется с помощью модема. На сегодняшний день существует огромный выбор модемов. В этом разделе мы попытаемся рассказать, каким образом ОС Linux работает с модемными устройствами, и представим различные типы модемов, используемых с ОС Linux.

 

Последовательные порты в ОС Linux

Сетевые администраторы знакомы с работой последовательных портов под управлением операционных систем Microsoft MS-DOS и Windows в IBM-совместимых ПК. Архитектура IBM-совместимых ПК поддерживает последовательные порты, известные как COM-порты. Эти порты нумеруются с первого по четвертый, и каждый из них имеет отдельное прерывание IRQ и свою пару адресов ввода-вывода.

 

ОС Linux обнаруживает СОМ-порты в системе, но использует свою систему нумерации. В ОС Linux они называются tty-устройствами. Эти устройства находятся в /dev/ttySx, где х обозначает номер коммуникационного порта. К сожалению, ОС Linux использует систему нумерации портов, отличную от принятой компанией Microsoft. В ней нумерация последовательных портов начинается с 0, а не с 1. В табл. 3.3 приведена нумерация последовательных портов в ОС Linux и в MS-DOS.

 
Таблица 3.3. Последовательные порты в ОС Linux
MS-DOS Linux IRQ Адрес ввода-вывода
COM 1 ttyS0 4 0x3f8
COM 2 ttyS1 3 0x2f8
COM 3 ttyS2 4 0x3e8
COM 4 ttyS3 3 0x2e8
 

Мультипортовые платы

 

В ОС Linux также поддерживаются мультипортовые последовательные устройства. В таких платах совмещено несколько последовательных портов, которые могут совместно использовать одно прерывание IRQ. Для нормального функционирования они используют специальные программы-драйверы для разделения портов на плате. При использовании таких устройств ОС Linux выполняет нумерацию портов, начиная с ttyS4. Довольно часто этим устройствам требуются специальные драйверы для ядра Linux, которые обычно поставляются изготовителем мультипортовой платы.

 

В листинге 3.3 показаны устройства ttySx для стандартного IBM-совместимого ПК под управлением Mandrake Linux с двумя СОМ портами и модемом на порту СОМ4.

 
1 [alex@shadrach /dev]$ ls -al ttyS*
2 crw------- 1 root tty 4, 64 Nov 29 16:09 ttyS0
3 crw------- 1 root tty 4, 65 May 5 1998 ttyS1
4 crw------- 1 root tty 4, 66 May 5 1998 ttyS2
5 crw------- 1 root tty 4, 67 May 5 1998 ttyS3
6 [alex@shadrach /dev]$

Листинг 3.3. Список устройств /dev/ttySx

Из листинга 3.3 видно, что, хотя в данной системе используется только три СОМ-порта, по умолчанию в операционной системе Linux создаются записи для четырех основных последовательных портов. Попытка использовать устройство ttyS2 повлечет за собой появление ошибки.

 

В ОС Linux также поддерживается набор зеркальных устройств с именами /dev/cuax для каждого устройства /dev/ttySx. Устройства cua предназначены для того, чтобы упростить создание управляющих программ. Устройства cua позволяют прикладным программам подключаться к портам, даже если не представлен сигнал несущей (DCD). Сигнал DCD выдается модемом и говорит о наличии соединения с удаленным модемом. Программным обеспечением, которому в процессе работы необходимо совершать выходные звонки, используются главным образом эти устройства. При этом не требуется наличие соединения, поскольку это исходящий звонок. Поэтому в ОС Linux было принято соглашение о том, что все программы, инициирующие исходящие звонки, должны использовать устройства cua, а устройства ttyS предназначены только для входящих звонков. Ниже в листинге 3.4 приведен список cua-устройств для системы, рассмотренной в листинге 3.3, с использованием Mandrake Linux.

 
[alex@shadrach /dev]$ ls -al cua*
crw------- 1 root root 5, 64 May 5 1998 cua0
crw------- 1 root root 5, 65 May 5 1998 cua1
crw------- 1 root root 5, 66 May 5 1998 cua2
crw------- 1 root root 5, 67 May 5 1998 cua3
[alex@shadrach /dev]$

Листинг 3.4. Список устройств /dev/cuax

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

 

tty против cua

 

Избегайте использования устройств cua, даже если они имеются в вашем дистрибутиве ОС Linux. Многими программами уже сегодня генерируется предупреждающее сообщение, о прекращении поддержки устройств с именем cua в будущих ядрах ОС Linux. Лучше всего обращаться к последовательным портам по имени tty.

 

Еще одно специальное устройство, с которым вам, возможно, придется иметь дело, —устройство /dev/modem. В принципе это символическая связь с устройством cua, к которому подключен модем. Это устройство призвано упростить обращение программ, которым требуется работа с модемом, к портам. Теперь таким программам нужно лишь обратиться к стандартному устройству modem. Большинство версий ОС Linux создают это устройство еще при первой установке системы. В Red Hat и Mandrake Linux, если вы хотите установить модем позже, можно использовать программу для среды X Window modemtool для создания символической связи с устройством /dev/modem. На рис. 3.7 представлено окно программы modemtool.

 

 

Утилита modemtool

Рис. 3.7.  Утилита modemtool

 

 

Команда setserial

Команда setserial применяется для установки и настройки отдельных последовательных портов в системе на базе ОС Linux. Каждый порт, используемый операционной системой Linux, должен быть настроен командой setserial. Как видно из листинга 3.3, по умолчанию в системе на базе ОС Linux конфигурируются четыре стандартных последовательных СОМ-порта. Если имеющийся у вас модем использует нестандартные прерывания IRQ и адреса ввода-вывода или же используется мультипортовая плата, то для правильного конфигурирования портов в системе необходимо использовать программу setserial.

 

Команда setserial используется в двух форматах:

 
setserial [-abqvVW] device [parameter 1[arg] ] ...
setserial -g [-abv] device ...

Опция -g используется для запроса информации об указанных в команде устройствах. В листинге 3.5 дается пример работы команды setserial в ОС Linux.

 
1 [root@shadrach rich]$ /sbin/setserial -g /dev/ttyS0 /dev/ttyS1 /dev/ttyS2 /dev/ttyS3
2 /dev/ttyS0, UART: 16550A, Port: 0x03f8, IRO: 4
3 /dev/ttyS1, UART: 16550A, Port: 0x02f8, IRQ: 3
4 /dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
5 /dev/ttyS3, UART: 16550A, Port: 0x02e8, IRQ: 3
6 [root@shadrach rich]$

Листинг 3.5. Пример работы команды setserial

В первой строке листинга 3.5 присутствует команда setserial с опцией -g, с помощью которой на экран выводится информация о конфигурации последовательных портов. Запускать команду setserial следует только с правами пользователя root. В строках 2–5 представлена информация о последовательных портах для данной системы на базе ОС Linux в ответ на запрос команды setserial. В каждой строке представлена информация об отдельном порте. Обратите внимание, что в строке 4 не указан тип UART (стоит "unknown") для порта ttyS2, так как этот порт не используется. Это может ввести вас в заблуждение, поскольку порта просто нет физически.

 

С помощью одной или нескольких опций, введенных в командной строке с командой setserial, можно управлять выводом информации на экран. По умолчанию вывод на экран с помощью команды setserial производится с опцией -v, как это показано в листинге 3.5. Если задать опцию -b, то выводятся обобщенные данные. Например:

 
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A.

Здесь та же информация представлена в компактном виде. Опция -a используется для получения подробного отчета о конфигурации порта. Например:

 
/dev/ttyS0, Line 0, UART: 16550A,
Port: 0x03f8, IRQ: 4
Baud_base: 115200, close_delay: 50, divisor: 0
closing_wait: 3000, closing_wait2: infinite
Flags: spd_normal skip_test auto_irq session_lockout.

Опция -a отображает значения всех параметров, используемых операционной системой Linux для управления портом. Все эти параметры можно устанавливать, задавая команду setserial в первом формате, как было показано выше. В табл. 3.4 приведены параметры, которые можно изменять с помощью команды setserial.

 
Таблица 3.4. Параметры команды setserial
Параметр Описание
port N Задает устройству номер порта ввода-вывода
irq N Задает устройству номер прерывания IRQ
uart type Задает устройству тип порта UART
autoconfigure Автоматическое назначение параметров последовательному устройству
auto_irq Автоматически определить номер прерывания IRQ для последовательного устройства
^auto_irq Не пытаться автоматически определять номер прерывания IRQ для последовательного устройства во время автоконфигурирования
skip_test Пропустить тестирование UART в течение автоконфигурирования
^ skip_test Не пропускать тестирование UART в течение автоконфигурирования
baud_base Установить базовую скорость передачи для порта (как правило, тактовая частота, деленная на 16)
spd_hi Работать со скоростью 57600 бит/с при запросе приложением 38400 бит/с
spd_vhi Работать со скоростью 115200 бит/с при запросе приложением 38400 бит/с
spd_cust Использовать наибольший общий делитель при запросе приложением 38400 бит/с; установить baud_base, деленное на делитель
spd_normal Работать со скоростью 38400 бит/с при запросе приложением 38400 бит/с
divisor Устанавливает значение spd_cust
sak Использовать клавишу "Break" в качестве секретной
^sak Запретить использование клавиши "Break" в качестве секретной
fourport Конфигурировать устройство в качестве адаптера (платы) AST Fourport
^fourport Запретить конфигурировать устройство в качестве адаптера (платы) AST Fourport
close_delay D Устанавливает интервал времени, в течение которого сигнал DTR должен оставаться низким после закрытия порта, в сотых долях секунды (по умолчанию 50)
closing_wait D Устанавливает интервал времени, в течение которого ядро должно ожидать пока данные поступят с последовательного порта после его закрытия, перед тем как приемник будет отключен, в сотых долях секунды. Отсутствует значение по умолчанию, ожидать до бесконечности
closing_wait2 D Устанавливает интервал времени, в течение которого ядро должно ожидать пока данные поступят с последовательного порта после его закрытия, после того как приемник будет отключен, в сотых долях секунды. По умолчанию 30
session_lockouot Блокировать доступ к порту другим сеансам на время установки исходящего соединения (cua)
^session_lockouot Не блокировать доступ к порту другим сеансам на время установки исходящего соединения
pgrp_lockout Блокировать доступ к порту другим процессам на время установки исходящего соединения
^pgrp_lockout Не блокировать доступ к порту другим процессам на время установки исходящего соединения
hup_notify Посылать уведомление о том, что процесс ожидает установки исходящего соединения
^hup_notify Не посылать уведомление о том, что процесс ожидает установки исходящего соединения
split_termios Воспринимать параметры портов для входящих и исходящих соединений отдельно
^split_termios Не воспринимать параметры портов для входящих и исходящих соединений отдельно
callout_nohup Если порт открыт для исходящего соединения, не класть трубку при пропадании несущей
^callout_nohup Если порт открыт для исходящего соединения, класть трубку при пропадании несущей
 

Команде setserial всегда нужно задавать устройство, с которым она будет работать. Если используются значения адресов ввода-вывода и номера прерывания IRQ по умолчанию, то их можно не указывать в командной строке. Далее все параметры можно вводить в командной строке в произвольном порядке. Например:

 
setserial /dev/ttyS3 autoconfigure auto_irq skip_test

Этой строкой мы пытаемся автоматически сконфигурировать последовательный порт СОМ4.

 

Сценарии для setserial

 

Так же, как и в случае программы ifconfig, все настройки, сделанные программой setserial, при перезагрузке ядра ОС Linux стираются. Таким образом, команду setserial следует выполнять для каждого СОМ-порта в системе при каждой загрузке. Так как это довольно важная функция, то большинство распространителей ОС Linux включают в свои версии сценарии для выполнения команды setserial в процессе загрузки системы.

 

Сценарии загрузки для последовательных портов

По умолчанию сценарии для setserial находятся в файле /etc/rc.d/rc.setserial. В большинство версий ОС Linux входит обобщенная версия этого сценария, которую затем можно конфигурировать под определенный сервер. В этом сценарии имеется много строк для специфических ситуаций, таких как, например, мультипортовые платы и специальные модемные платы. В листинге 3.6 показан пример сценария из файла rc.serial.

 
1 STD_FLAGS="session_lockout"
2 SETSERIAL=/sbin/setserial
3 WILD=false
4 SUMMARY=true
5
6 echo -n "Configuring serial ports...."
8 #################################################
9 #
10 # AUTOMATIC CONFIGURATION
11 #
12 # Uncomment the appropriate lines below to enable
13 # auto-configuration of a particular board.
14 #Or comment them out to disable them....
15 ################################################
16
17 # Do AUTOMATIC_IRQ probing
18 #
19 AUTO_IRQ=auto_irq
20
21 # These are the standard COM1 through COM4 devices
22 #
23 SetSerial /dev/ttyS0 ${AUTO_IRQ} skip_test autoconfig ${STD_FLAGS}
24 SetSerial /dev/ttyS1 ${AUTO_IRQ} skip_test autoconfig ${STD_FLAGS}
25 SetSerial /dev/ttyS2 ${AUTO_IRQ} skip_test autoconfig ${STD_FLAGS}
26 SetSerial /dev/ttyS3 ${AUTO_IRQ} autoconfig ${STD_FLAGS}
27
28 ###################################################
29 #
30 # MANUAL CONFIGURATION
31 #
32 # If you want to do manual configuration of one
33 # or more of your serial ports, uncomment
34 #and modify the relevant lines.
35 #
36 ###################################################
37
38 # These are the stahdard COM1 through COM4 devices
39 #
40 #SetSerial /dev/ttyS0 uart 16450 port 0x3F8 irq 4 ${STD_FLAGS}
41 #SetSerial /dev/ttyS1 uart 16450 port 0x2F8 irq 3 ${STD_FLAGS}
42 #SetSerial /dev/ttyS2 uart 16450 port 0x3E8 irq 4 ${STD_FLAGS}
43 #SetSerial /dev/ttyS3 uart 16450 port 0x2E8 irq 3 ${STD_FLASS}
44
45 echo "done."
46 ##################################################
47 #
48 # Print the results of the serial configuration process
49 #
50 ##################################################
51
52 if [ -n "$SUMMARY" ]; then
53 SetSerlal -bg /dev/ttyS?
54
55 if [ '/dev/ttyS??' != /dev/ttyS?? ]; then
56 SetSerial -bg /dev/ttyS??
57 fi
58 fi

Листинг 3.6. Фрагмент сценария из /etc/rc.d/rc.serial

Итак, в листинге 3.6 в строках с 23 по 26 команда setserial пытается автоматически обнаружить и сконфигурировать четыре последовательных порта на сервере. Если по каким-либо причинам вы не желаете, чтобы производилось автоматическое обнаружение портов, просто закомментируйте эти строки и уберите знаки комментария со строк 39–42. В этих строках команде setserial указывается использовать специальное прерывание IRQ и адрес ввода-вывода для каждого последовательного порта. Если же в системе используется модем с нестандартными номером прерывания IRQ и адресами ввода-вывода, то можно установить соответствующие параметры в команде setserial.

 

Конфигурирование модемов в ОС Linux

На сегодняшний день на рынке предлагается огромное количество различных модемов, которые могут работать с ОС Linux. Однако следует проявить осторожность, так как довольно много модемов пока не могут работать с этой операционной системой. Выбирая модем, помните, что вы балансируете между гладкой и быстрой его установкой и ночным кошмаром для администратора. В этом разделе мы постараемся описать, на что необходимо обращать внимание при покупке нового модема или при попытке установить в ОС Linux один из модемов, который достался вам в наследство от умершей бабушки.

 

Внешние модемы

В ОС Linux лучше всего использовать стандартные внешние модемы. Модемы этого типа подключаются к серверу на базе ОС Linux через последовательный СОМ-порт посредством стандартного 9- или 25-контактного модемного кабеля, который можно приобрести в любом компьютерном магазине. На момент выхода курса текущим стандартом для модемов является протокол V.90, который позволяет работать модемам на скорости 56 Кбит/с. К сожалению, в реальных условиях эта скорость достигается очень редко. Скорость 56 Кбит/с достигается применением специальных алгоритмов сжатия данных и модуляции сигналов. В обычных линиях связи, предназначенных для передачи речи, качество сигнала недостаточно для работы на таких высоких скоростях. Поэтому модемы, рассчитанные на 56 Кбит/с, работают обычно на скорости 38,4 Кбит/с. Тем не менее использование протокола V.90 оправдано хотя бы с точки зрения использования его возможностей по коррекции ошибок.

 

Если используются высокоскоростные модемы, то с помощью внутренних регистров модема можно установить скорость его работы. Если скорость не определена, модем пытается соединиться с сервером на той же скорости, что и удаленный модем, которая, однако, может варьироваться. Это зависит от качества конкретной телефонной линии и удаленного модема. Установив скорость обмена модема с портом 115200 бит/с, можно настроить последовательный порт в ОС Linux со стандартными параметрами. Об этом более подробно далее в этой лекции.

 

Внутренние модемы

Внутренние модемы намного сложнее в работе по сравнению со своими внешними собратьями. В использовании внутренних модемов с операционной системой Linux имеется много "подводных камней". Во-первых, следует напрочь избегать модемов, маркированных как WinModem или совместимых с ними. Эти модемы специально разработаны для использования с операционными системами Microsoft Windows 95 и 98. В комплект их поставки не входит стандартный аппаратный интерфейс и, соответственно, они не будут работать с ОС Linux. Их принцип работы основан на специальном программном обеспечении, адаптированном для среды Windows 95-98.

 

Модемы PCI — еще одна головная боль. Дело в том, что архитектура системной шины PCI позволяет устройствам автоматически конфигурироваться в процессе загрузки системы. В зависимости от установленных в системе устройств, каждое из них может запросить при очередной загрузке системы любое свободное прерывание IRQ и адрес порта ввода-вывода. К моменту выхода курса в ядре Linux версии 2.2 еще не была реализована поддержка модемов на шине PCI. Однако в настоящее время в сообществе потребителей ОС Linux ходят упорные слухи, что уже в следующую версию ядра эта поддержка будет включена. Если новая версия ядра уже доступна, то можно проверить, насколько эти слухи верны.

 

А пока, если в системе имеется модем на шине PCI, можно попытаться заставить его работать с Linux вручную. В процессе загрузки системы параметры устройств на шине PCI отображаются базовой системой ввода-вывода BIOS. Посмотрите, какое прерывание назначается во время загрузки вашему модему, и вручную запустите программу setserial с соответствующим значением прерывания. Хотя этот метод и не совсем корректен, он должен сработать.

 

Обычные внутренние модемы, предназначенные для работы с шиной ISA, работают с ОС Linux вполне нормально. Чаще всего у них имеется набор перемычек для установки их на определенный СОМ-порт. Помните, что не следует использовать СОМ-порт, который уже используется в качестве внешнего порта. Также будьте осторожны, если к этому же последовательному порту подключены другие устройства. Все они могут быть восприняты как модем на одном и том же порту. Довольно часто можно столкнуться с тем, что на порту СОМ1 имеется устройство-указатель (манипулятор "мышь"). Помните, что порт СОМ1 использует то же прерывание, что и порт СОМ3 (см. табл. 3.3). Если установить внутренний модем на порт СОМ3, то вполне можно лишиться мыши, так как вы не сможете одновременно использовать их на одном и том же прерывании. Чтобы избежать этого конфликта, поставьте модем на порт СОМ4. Конечно, если на порту СОМ2 уже имеется какое-либо устройство, то это не решение проблемы. Все эти проблемы подводят вас к использованию нестандартной конфигурации для последовательных портов. Вам нужно подобрать прерывание, которое не используется никакими другими устройствами в системе. Для этой цели в большинстве случаев подходят прерывания 9, 10 и 11.

 

Модемы Plug-and-Play для шины ISA

Одна из необычных технологий в IBM-совместимых ПК — использование устройств plug-and-play для шины ISA. Эти устройства, предшественники устройств для шины PCI, являются как бы переходной ступенькой между технологиями ISA и PCI. В них еще используется архитектура шины ISA, но делается попытка автоматически конфигурировать прерывания и адреса портов ввода-вывода при загрузке системы. Linux практически так же, как и в ситуации с шиной PCI, не может автоматически определять модемы PnP для шины ISA.

 

Однако существует несколько программных утилит, которые могут помочь вам. С целью конфигурирования модемов PnP для шины ISA в ОС Linux Питер Фокс (Peter Fox) написал несколько программных утилит. Так, например, программа isapnp может считывать конфигурационный файл, который определяет все устройства PnP для шины ISA и конфигурирует их соответствующим образом в ядре ОС Linux. Если вы не знакомы с конфигурированием устройств PnP для шины ISA, не отчаивайтесь, программа pnpdump может запросить все необходимые параметры и создать файл конфигурации автоматически.

 

Формат pnpdump:

 
pnpdump [ -- config] [ --script [=outputfile] ][ --reset] [-- ignoresum ]
[ -- showmasks] [ -- dumpregs] [ [ devs ] readport ]

По умолчанию программа pnpdump сканирует все PnP-платы на шине ISA и посылает используемые ими ресурсы на стандартный вывод. Затем pnpdump сбрасывает все внутренние номера плат PnP и блокирует каждую из них для тестирования. Параметр devs, задаваемый в командной строке, определяет количество устройств, сканируемых программой pnpdump. При этом платы PnP не блокируются и не сбрасываются, но должен быть указан соответствующий значению в BIOS параметр readport.

 

По умолчанию pnpdump отображает также ресурсы, используемые платами PnP, но при этом отключает строки в конфигурационном файле, отвечающие за их настройку. Задавая параметр --config, вы даете, по сути, команду программе pnpdump на создание конфигурационного файла, который затем программа isapnp может использовать для настройки модема PnP на шине ISA. В листинге 3.7 приведены фрагменты конфигурационного файла, созданного для PnP-модема на шине ISA командой pnpdump -- config.

 
1 # $Id: pnpdump.c,v 1.16 1998/10/09 22:19:06 fox Exp $
2 # This is free software, see the sources for details.
3 # This software has NO WARRANTY, use at your OWN RISK
4 #
5 # For details of this file format, see isapnp.conf(5)
6 #
7 # For latest information on isapnp and pnpdump see:
8 # http://www.roestock.demon.co.uk/isapnptools/
9 #
10 # Compiler flags: -DREALTIME
11 #
12 #Trying port address 0203
13 # Board 1 has serial identifier 5b 10 0d 6a 0e 24 00 8c 0e
14 # Board 2 has serial identifier c5 00 00 11 11 01 00 36 10
15 #
16 # (DEBUG)
17 (READPORT 0x0203)
18 (ISOLATE PRESERVE)
19 (IDENTIFY *)
20 (VERBOSITY 2)
21 (CONFLICT (I0 FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
22
23 #Card 2: (serial identifier c5 00 00 11 11 01 00 36 10)
24 # Vendor Id DAV0001, Serial Number 4369, checksum 0xC5.
25 # Version 1.0, Vendor version 1.0
26 # ANSI string -->DAVICOM 336PNP MODEM<--
27 #
28 # Logical device id DAV0336
29 # Device support I/O range check register
30 # Device supports vendor reserved register @ 0x39
31 # Device supports vendor reserved register @ 0x3a
32 # Device supports vendor reserved register @ 0x3d
33 #
34 # Edit the entries below to uncomment out the configuration required.
35 # Note that only the first value of any range is given, this may be changed
36 #if required. Don't forget to uncomment the activate (ACT Y) when happy
37
38 (CONFIGURE DAV0001/4369 (LD 0
39
40 #Multiple choice time, choose one only
41
42 # Start dependent functions: priority acceptable
43 # Logical device decodes 16 bit 10 address lines
44 # Minimum I0 base address 0x02f8
45 # Maximum I0 base address 0x02f8
46 # I0 base alignment 8 bytes
47 # Number of I0 addresses required: 8
48 (I0 0 (SIZE 8) (BASE 0x02f8))
49 # IRQ 3.
50 # High true, edge sensitive interrupt (by default)
51 [INT 0 (IRQ 3 (MODE +E)))
52
53 (NAME "DAV0001/4369[0]{DAVICOM 336PNP MODEM}")
54
55 # End dependent functions
56 (ACT Y)
57 ))
58 # End tag... Checksum 0x00 (OK)
59
60 # Returns all cards to the "Wait for Key" state
61 (WAITFORKEY)

Листинг 3.7. Пример результатов работы команды pnpdump -- config

В листинге 3.7 представлена лишь часть файла, генерируемого pnpdump. Программа pnpdump генерирует все возможные комбинации настроек, но оставляет активными лишь те, которые, с ее точки зрения, наилучшим образом подходят для данной PnP-платы. Результаты выполнения программы pnpdump могут перенаправляться в файл, где хранятся настройки PnP-плат:

 
pnpdump -- config > /etc/isapnp.conf

Именно в файле /etc/isapnp.conf программа isapnp попытается получить конфигурационную информацию, если не указан какой-либо другой файл. После того как конфигурационный файл создан, запускается программа isapnp. Формат команды isapnp следующий:

 
isapnp conffile,

где conffile — альтернативный путь к файлу конфигурации. После запуска в системе на базе ОС Linux программа isapnp должна обнаружить модем PnP. И, наконец, для завершения процесса настройки следует запустить программу setserial для порта, к которому привязан PnP-модем.

 

Подобно работе программы setserial, вся информация, которая генерируется программой isapnp, помещается в таблицы ядра ОС Linux и теряется при перезагрузке системы. Эта проблема может быть решена запуском соответствующего сценария во время загрузки. В большинстве случаев в ОС Linux программа isapnp запускается при наличии файла /etc/isapnp.conf. Помните, что программа setserial должна запускаться уже после выполнения программы isapnp для того, чтобы соответствующим образом сконфигурировать последовательный порт с целью использования PnP-модемом для шины ISA.

 

Модемы ISDN

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

 

Модемы ISDN могут организовывать два цифровых канала передачи данных со скоростью 64 Кбит/с. Эти каналы можно объединить, получив один канал со скоростью обмена данными 128 Кбит/с. Такое решение является идеальным для небольших организаций, которым требуются такие возможности сети Internet, как доступ к Web, обмен файлами и электронной почтой.

 

Поддержка модемов ISDN в ОС Linux появилась относительно недавно и еще находится в процессе развития. В версию ядра Linux (2.2), последнюю доступную на момент выхода этого курса, включена базовая поддержка модемов ISDN. Ожидается, что в последующие версии ядра будет добавлено больше функций по поддержке ISDN. Разработки по развитию поддержки ISDN в ОС Linux велись главным образом в Германии. Группа разработчиков SuSe Linux предложила набор утилит ISDN4Linux, который помогает в установке и настройке модема ISDN на сервере под управлением ОС Linux. В табл. 3.5 представлен перечень утилит из набора ISDN4Linux.

 
Таблица 3.5. Утилиты из набора ISDN4Linux
Название утилиты Описание
isdnctrlv Общая утилита для настройки соединения
iprofd Демон для выполнения команды AT&W0 на устройствах ttyI
icnctrl Утилита для установки драйвера icn
telesctrl Утилита для установки драйвера teles
hisaxcrtl Утилита для установки драйвера HiSax
pcbitctrl Утилита для установки драйвера pcbit
avmcapictrl Утилита для установки драйвера avmb1
actctrl Утилита для установки драйвера act2000
eiconctrl Утилита для установки драйвера eicon
divertctrl Утилита для установки служб dss1
imon Утилита для мониторинга на базе Ncurse
imontty Утилита для мониторинга на базе tty
isdnlog Протоколирование работы по ISDN-соединению
ipppstats Утилита для сбора статистики по синхронному PPP- соединению
xisdnload xload-подобный монитор
isdnmon Утилита для мониторинга на базе Tcl/Tk
vbox Автоответчик + голосовой почтовый ящик
ipppd Демон, необходимый для работы по синхронному PPP и MPP
 

С набором утилит ISDN4Linux предоставляются несколько документов, в которых подробно описан процесс установки и настройки модемов ISDN в системах на базе ОС Linux. Так как поддержка ISDN в ОС Linux находится еще на стадии становления, то, несомненно, следует ожидает ее расширения в последующих версиях ОС Linux.

 

Управление модемами в ОС Linux

После того как последовательный порт сконфигурирован для использования модемом, система Linux должна запустить специальную программу для мониторинга телефонной линии, наблюдающую за состоянием линии и определяющую, используется ли она каким-либо устройством. Для управления работой последовательного порта в ОС Linux существует несколько программ, но чаще всего для этой цели используется программа getty. Программа getty позволяет модему осуществлять как исходящие звонки, так и принимать входящие звонки. При установке входящего соединения она инициирует прием входящего звонка и передает управление программе login, с помощью которой производится проверка пароля и идентификатора, введенных удаленным пользователем.

 

Формат команды getty:

 
getty [ -d defaults_file ] [ -a ] [ -h ] [ -r delay ] [-t timeout]
 [-w waitfor] line [speed [type [lined]]]

Обычно программа getty запускается программой init для управления работой модемных соединений. Чтобы программа getty запускалась, она должна быть прописана в файле /etc/inittab. Файл inittab содержит список программ, которые должны запускаться процессом init после загрузки системы. Формат строки для файла inittab следующий:

 
s1:345:respawn:/sbin/getty ttyS0 38400 vt100

Первое поле — это уникальная метка, идентифицирующая точку входа для программы getty в файле inittab. Во втором поле указываются уровни запуска init, на которых может выполняться данная программа. В нашем случае getty может выполняться на 3, 4 и 5 уровнях. В третьем поле содержится информация для программы init о режиме запуска программы. Ключевое слово respawn говорит программе init о том, что при внезапном останове программы getty ее следует перезапустить. Это необходимо, так как getty должна наблюдать за состоянием модема после завершения сеанса связи.

 

В четвертом поле следует команда getty с параметрами. В нашем примере программой getty производится мониторинг устройства /dev/ttyS0 (порт СОМ1), которому устанавливается скорость DTE 38400 бит/с. Таким образом фиксируется скорость обмена данными между модемом и последовательным портом ПК. Последний параметр определяет тип эмулируемого терминала, который будет использоваться для данной линии. При активизации модемного соединения программа getty может выдавать приветственное сообщение. Как раз для правильного форматирования приветственного сообщения и служит параметр типа эмулируемого терминала.

 

Резюме

Для связи сервера на базе ОС Linux с другими хостами и рабочими станциями следует установить соответствующее телекоммуникационное оборудование. Для взаимодействия с рабочими станциями в пределах локальной вычислительной сети на сервере нужно установить и сконфигурировать сетевой интерфейсный адаптер Ethernet. Чтобы задать соответствующие настройки IP для сетевого адаптера, можно использовать программу ifconfig. Имеются также различные программы для графической среды X-Window, с помощью которых также можно сконфигурировать сетевой адаптер. Например, в Red Hat- и Mandrake-версиях ОС Linux для этой цели можно использовать программу netcfg. Для соединения сервера электронной почты с провайдером услуг сети Internet требуется наличие модема. С серверами на базе ОС Linux могут работать различные типы модемов. Внешние модемы с протоколом V.90 наиболее удобны в настройке и работе, но их использование в системе с ОС Linux возможно только при наличии по крайней мере одного свободного СОМ-порта. С ОС Linux можно также использовать стандартные внутренние модемы для шины ISA. Модемы для шины PCI сложны в настройке, но также могут работать с ОС Linux. Программа isapnp может использоваться также при настройке модемов plug-and-play для шины ISA. После установки модема следует запустить программу setserial, которая осуществляет настройку порта для использования определенным устройством. После того как ОС Linux обнаружит это устройство, для управления установкой входящих и исходящих соединений запускается программа getty.

 
©Автор: Р. Блам  источник: http://www.INTUIT.ru 

 

 

13 центов(0,13$) за клик, выплаты через WebMoney каждый вторник +10% с рефералов

Мы выкупаем 100% трафа! $12 за 1000 хостов (РФ), и до $4 за 1000 хостов (зарубежный траф) + 10% с дохода Ваших рефералов!
 Выплаты через
WebMoney

~80-100$ за1000 хостов 2.5$ за 1 смс.
реф. процент - 10 %Выплаты происходят раз в неделю, в четверг на
WebMoney
 
 

 

____________________________

Посмотреть порно видео в онлайне »

_______________________________

 

   
   
Сайт управляется системой uCoz