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 
8.Протокол РРР
  

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

 

Итак, для подключения почтового сервера на базе ОС Linux к сети Internet требуется посредник. Чаще всего в роли такого посредника выступает сервис-провайдер Internet. Как правило, провайдер Internet предлагает определенный набор услуг для подключения небольших сетей к Internet. Один из методов подключения к провайдеру заключается в использовании отдельного маршрутизатора, который подключен к сети компании, и по мере необходимости устанавливает соединение по телефонной линии с провайдером Internet. Такое подключение приемлемо для небольших офисов, которые могут позволить себе отдельный маршрутизатор и поддержку соединения с провайдером Internet. Еще один метод заключается в том, что сервер на базе ОС Linux с помощью стандартного модема дозванивается в сеть провайдера Internet и устанавливает с ним соединение, пригодное для передачи IP-пакетов, по телефонной линии. Тогда сервер электронной почты под управлением ОС Linux сможет передать почту, равно как и другой IP-трафик, через такое соединение. После того как передача почты или другого IP-трафика завершена, почтовый сервер может разорвать соединение. Благодаря этому экономится время, которое затрачивается на поддержку соединения.

 

Протокол, с помощью которого сервер электронной почты на базе ОС Linux может вести обмен IP-пакетами через модемное соединение, называется протоколом "точка-точка" (Point-to-Point Protocol — PPP). Протокол РРР как метод передачи сетевого трафика между двумя равнозначными точками через полнодуплексное двустороннее соединение описан в документе RFC 1661. После того как пакеты из вашей сети попали к провайдеру, их дальнейшая судьба целиком зависит от сервера РРР провайдера Internet. Другими словами, в обязанности провайдера Internet входит их доставка получателю.

 

Обзор протокола РРР

Как правило, в сеансе протокола РРР имеется четыре фазы.

 
  • Установление соединения.
  • Проверка подлинности пользователя (необязательная фаза).
  • Фаза переговоров.
  • Завершение соединения.
 

Во время этих четырех фаз в протоколе РРР используется еще несколько различных протоколов. Ядром протокола РРР является протокол передачи кадров, в который включаются кадры РРР для их дальнейшей передачи через обычное модемное соединение. Имеется в виду протокол высокого уровня управления каналом передачи данных (High-Level Data Link Control Protocol — HDLC).

 

Прежде чем данные будут переданы по телефонной линии, между двумя устройствами на концах линии должно быть установлено соединение. При установке соединения в РРР используется специальный протокол — протокол управления соединением (Link Control Protocol — LCP). Главная задача протокола LCP — установить оптимальные параметры связи между двумя устройствами на линии, чтобы качество связи позволяло вести передачу пакетов между ними. Например, нужно согласовать с приемной и передающей сторона длину пакета, который будет передаваться между ними без искажений. После того как фаза установления соединения закончена, РРР переходит к следующей фазе.

 

Фаза проверки подлинности официально оговорена в RFC как необязательная, однако в наши дни требования к сетевой безопасности достаточно высоки, и практически ни одно соединение не обходится без этой фазы. В настоящее время в РРР поддерживаются два типа проверки подлинности пользователя — протокол аутентификации запрос-ответ (Challenge-Handshake Authentication Protocol — CHAP) — и протокол установления подлинности пароля (Password Authentication Protocol — PAP). Протокол CHAP более безопасный, но PAP легче реализовать, поэтому он получил более широкое распространение. После того как удаленный хост прошел аутентификацию соединения, в сеансе РРР начинается следующая фаза.

 

Фаза переговоров во время РРР-соединения делает протокол РРР уникальным среди других сетевых протоколов. Так, его предшественник, протокол последовательного соединения с Internet (Serial Line Internet Protocol — SLIP) поддерживал передачу только протокола IP через телефонную линию. Если протокол РРР поддерживается устройствами на обоих концах линии, то он позволяет виртуально передавать через модемное соединение любой сетевой трафик. После проверки подлинности соединения клиентское устройство РРР должно определить, какие протоколы оно будет передавать по этому соединению. Далее удаленный хост РРР обязан принять или отвергнуть протоколы, которые им не поддерживаются. Для переговоров о возможности передачи тех или иных протоколов через РРР-соединение используется протокол управления сетью (Network Control Protocol — NCP). В течение переговоров хост и клиент должны согласовать параметры для передачи каждого протокола. Например, в течение переговоров о передаче протокола IP-хост снабжает клиента информацией об IP-адресе и сервере DNS, чтобы клиент мог нормально обращаться к сети хоста РРР. После того как переговоры о протоколе успешно завершены, между хостом и клиентом начинается передача пакетов данных.

 

Когда клиент желает завершить сеанс РРР, то организуется еще один сеанс по протоколу LCP с целью завершения соединения. Сервер РРР должен правильно опознать этот запрос и закрыть модемное соединение с клиентом РРР.

 

Кадры протокола РРР

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

 

Кадр HDLC

На протяжении многих лет HDLC применялся для связи мэйнфрэймов. Он показал свою надежность при передаче данных между двумя устройствами, соединенными с помощью модемов. В RFC 1662 описан метод инкапсуляции протокола РРР в кадр HDLC. На рис. 8.1 представлен формат кадра HDLC.

 

 

Формат кадра HDLC

Рис. 8.1.  Формат кадра HDLC

 

 

Формат кадра HDLC состоит из пяти отдельных полей, в которые инкапсулируются данные протокола РРР, посылаемые по модемной линии.

 

Поле Флаг используется для идентификации начала кадра HDLC. Определено, что в него заносится двоичное значение 01111110 или, в шестнадцатеричном выражении, 0x7e. При этом программное обеспечение HDLC должно обнаружить это поле и опознать значение как начало нового кадра.

 

В поле Адрес всегда установлена двоичная величина 11111111 или 0xff в шестнадцатеричном выражении. Это широковещательный адрес. Все станции должны уметь опознавать данные, которые направлены на этот адрес. Так как в "сети" HDLC обычно всего два устройства, то очевидно, какому устройству предназначены данные с широковещательным адресом.

 

Для РРР-пакетов в поле Управление в HDLC всегда установлено двоичное значение 00000011 (шестнадцатеричное 0x03). Приемной стороной должны отвергаться кадры с другими значениями в этом поле.

 

Так как поля управления и адреса всегда содержат одни и те же значения, то с целью экономии полосы пропускания они часто опускаются. Таким образом, первое значение после поля флага может восприниматься либо как начало пакета РРР, либо как поле Протокол (см. описание кадра РРР). Именно поэтому в поле Протокол кадра РРР не могут использоваться величины 0xff и 0x03, так как это может ввести в заблуждение принимающую сторону, которая может "решить", что получает поля адреса и управления HDLC. Сокращение полей HDLC при передаче называется сжатием кадра.

 

Поле проверочной последовательности кадра FCS (Frame Check Sequence) используется для обнаружения ошибок во время передачи кадра. Значение FCS вычисляется с помощью полей Адрес, Управление и данных из пакета HDLC. При вычислении проверочной последовательности кадра не учитывается поле Флаг, а также старт- и стоп-биты, которые используются в большинстве модемов.

 

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

 

Иногда данные РРР имеют те же значения, что и поле флага в HDLC. Это может привести к путанице, так как приемник понимает появление такой последовательности как конец передачи. Чтобы исключить такую возможность, используется так называемая прозрачная передача кадров. После вычисления FCS передатчик проверяет поля между двумя полями флага и вставляет специальный контрольный октет (Control-Escape octet) 01111101 или шестнадцатеричное 0x7d перед каждым значением данных, которое соответствует значению флага. Затем передатчик выполняет логическую операцию "Исключающее ИЛИ" над данными с величиной 0x20, чтобы полученная величина не равнялась значению в поле Флаг. Конечно, если значение данных равно значению контрольного октета, то перед ним также должен быть помещен еще один контрольный октет с последующим выполнением операции "Исключающее ИЛИ" с величиной 0x20. Когда приемник принимает контрольный октет, он уже "знает", что необходимо провести обратное преобразование данных к их нормальному значению.

 

Удаленный РРР-хост может автоматически определять запрос на установление соединения от удаленного модема путем проверки первой группы октетов, полученных от клиента. Запрос на установку РРР-соединения может быть идентифицирован одной из трех групп октетов, приведенных в листинге 8.1.

 
1: 7e ff 03 с0 21
2: 7e ff 7d 23 C0 21
3: 7e 7d df 7d 23 c0 21

Листинг 8.1. Стартовые кадры РРР-соединения

В строке 1 листинга 8.1 показан стандартный кадр HDLC (7e ff 03) со стандартным полем протокола LCP (с0 21). В строках 2 и 3 представлены методы создания прозрачности кадров, после которых передаются те же кадры. Принимая любую из этих трех последовательностей по модемной линии, сервер под управлением ОС Linux делает вывод о том, что предпринимается попытка установления РРР-соединения, и реагирует на нее. Программа mgetty+sendfax использует этот механизм для автоматической инициализации сеанса РРР по входящему звонку на стандартной телефонной линии. Если ни одна из трех последовательностей кадров не принята, то сервер под управлением ОС Linux делает вывод, что поступающие данные не являются запросом на организацию сеанса РРР. В роли таких данных могут выступать попытки пользователя ввести свое имя или пароль в обычном терминальном сеансе по модемному или факс-соединению. Как видите, одну и ту же модемную линию можно использовать и в качестве обычного терминала, и для передачи факсов, и для сеансов РРР. При этом для работы со всеми перечисленными службами используется один и тот же телефонный номер.

 

Кадр РРР

Кадры РРР помещаются в поля данных кадра HDLC. Формат кадра РРР представлен на рисунке 8.2.

 

 

Формат кадра РРР

Рис. 8.2.  Формат кадра РРР

 

 

Поле Протокол может иметь длину в один или два октета; оно идентифицирует протокол, который используется в поле Информация. В табл. 8.1 приведены некоторые значения поля Протокол, которые поддерживаются протоколом РРР.

 
Таблица 8.1. Значения поля Протокол в кадре РРР
Значение Описание
0001 Заполнение пропусками
0021 Протокол IP (Internet Protocol)
002b Протокол Novell IPX
002d Протокол сжатия TCP/IP Van Jacobson
002f Протокол TCP без компрессии
8021 Протокол управления IP (IP Control Protocol — IPCP)
802b Протокол управления Novell IPX
c021 Протокол управления соединением (Link Control Protocol — LCP)
c023 Протокол установления подлинности пароля (Password Authentication Protocol — PAP)
c223 Протокол аутентификации запрос-ответ (Challenge-Handshake Authentication Protocol — CHAP)
 

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

 

Фазы переговоров в протоколе РРР

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

 

Фаза установки соединения

После того как модемное соединение по протоколу HDLC между двумя сторонами установлено, устройство, инициировавшее соединение, пытается начать переговоры о параметрах, необходимых для передачи данных через это соединение. Подобно TCP-соединению, для определения состояния соединения между устройствами используется несколько параметров. Для выполнения этой задачи используется протокол управления соединением (Link Control Protocol — LCP). Все эти параметры показаны на рис. 8.3 и подробно описаны в последующих разделах.

 

 

Параметры соединения согласно протоколу LCP

Рис. 8.3.  Параметры соединения согласно протоколу LCP

 

 

Протокол LCP

Протокол LCP состоит из форматированных пакетов, которые позволяют двум сторонам обмениваться информацией для определения параметров соединения. На рис. 8.4 представлен формат пакета LCP.

 

 

Формат пакета протокола LCP

Рис. 8.4.  Формат пакета протокола LCP

 

 

Поле Код пакета LCP имеет длину в один байт и используется для идентификации типа пакета. Пакеты LCP используются в основном для переговоров о параметрах соединения, но с их помощью можно изменять текущее состояние соединения (например, прекратить соединение о чем мы будем говорить позже). В RFC 1661 определено 11 типов пакетов LCP, которые представлены в табл. 8.2.

 
Таблица 8.2. Значения поля Код протокола LCP
Код Описание
1 Пакет типа Configure-Request
2 Пакет типа Configure-Ack
3 Пакет типа Configure-Nak
4 Пакет типа Configure-Reject
5 Пакет типа Terminate-Request
6 Пакет типа Terminate-Ack
7 Пакет типа Code-Reject
8 Пакет типа Protocol-Reject
9 Пакет типа Echo-Request
10 Пакет типа Echo-Reply
11 Пакет типа Discard-Request
 

Поле Идентификатор имеет длину в один октет и используется для уникальной идентификации пакета LCP. Таким образом, передатчик может однозначно определить, на какой именно запрос он посылает ответ.

 

Поле Длина имеет длину в два октета. В нем указывается общая длина пакета LCP (включая поля Код, Идентификатор, Длина и поле Данные). Общая длина пакета LCP не должна превышать максимальный принимаемый блок соединения (maximum recieve unit — MRU).

 

В поле Данные может быть столько октетов, сколько определено полем Длина. В нем содержатся данные согласно полю Код.

 

Назначение пакета LCP также определяется полем Код. Как видно из табл. 8.2, существуют различные типы пакетов LCP. Ниже детально описаны некоторые типы пакетов LCP.

 

Пакет LCP типа Configure-Request

Пакет LCP типа Configure-Request используется для установления РРР-соединения между двумя устройствами. Параметры конфигурации, которые клиент хочет согласовать с удаленным хостом, находятся в поле данных пакета. Все параметры, для которых клиент запрашивает значения, отличные от значений по умолчанию, должны включаться в этот пакет. Все параметры, значения которых не отличаются от значений по умолчанию, в пакет LCP типа Configure-Request не включаются. Некоторые параметры Configure-Request описаны в табл. 8.3.

 

Пакет LCP типа Configure-Ack

Пакет LCP типа Configure-Ack посылается хостом РРР, если он согласен со значениями всех параметров, заявленных в пакете Configure-Request. Значения всех параметров в этом пакете должны полностью соответствовать параметрам, заявленным в пакете Configure-Request. Если имеется расхождение хотя бы в одном из параметров, то сервер РРР не выдает пакет Configure-Ack.

 

Пакет LCP типа Configure-Nak

Пакет LCP типа Configure-Nak используется для сигнализации о том, что по крайней мере один из параметров, заявленных в пакете Configure-Request, не принят сервером РРР. При этом сервер должен указать, какой именно параметр не принят, и предложить альтернативное значение этого параметра в поле Опции этого пакета.

 

Пакет LCP типа Configure-Reject

Пакет LCP типа Configure-Reject применяется с целью уведомления клиента о том, что параметры, указанные в пакете Configure-Request, либо не опознаны (являются ошибочными), либо не приняты сервером РРР. Когда клиент получает пакет типа Configure-Reject, то он должен сделать вывод о том, что ни один из предложенных им параметров недоступен для согласования с сервером РРР.

 

Пакет LCP типа Terminate-Request

Пакет LCP типа Terminate-Request используется клиентом для завершения текущего сеанса РРР. Поле данных в таком пакете может состоять из нулевых байт или заполняться данными, которые не имеют значения. Хост РРР должен обнаруживать пакеты такого типа и реагировать на них соответствующим образом в течение всего сеанса РРР.

 

Пакет LCP типа Terminate-Ack

Пакет LCP типа Terminate-Ack используется сервером РРР для уведомления клиента о том, что его запрос на завершение сеанса РРР получен. Поле данных этого пакета может заполняться нулевыми байтами или другой бессмысленной информацией. Когда сервер РРР принимает пакет типа Terminate-Request, он должен ответить на него пакетом типа Terminate-Ack и инициировать завершение соединения.

 

Пакет LCP типа Code-Request

Пакет LCP типа Code-Request используется в том случае, когда сервер РРР получает от клиента пакет РРР с искаженным значением в поле Код. Это говорит о том, что версия РРР у клиента не совпадает с версией РРР на сервере или же у клиента неправильно установлена поддержка РРР. После того как сервер послал пакет такого типа, он немедленно разрывает РРР-соединение.

 

Пакет LCP типа Protocol-Request

Пакет LCP типа Protocol-Request применяется, если сервер РРР получает пакет РРР либо с искаженным значением в поле Протокол, либо с протоколом, который им не поддерживается. При этом в поле данных пакета этого типа включается копия отвергнутого пакета. Получение такого пакета клиентом свидетельствует о том, что указанный протокол не поддерживается сервером, о чем он сообщает пользователю.

 

Пакет LCP типа Echo-Request

Пакет LCP типа Echo-Request применяется для реализации метода обратной связи в РРР-соединении. Получив пакет Echo-Request, устройство РРР должно выдать в ответ на него пакет Echo-Reply. Довольно часто эта процедура используется для того, чтобы предотвратить преждевременное завершение соединения из-за отсутствия активности. Она может использоваться также в диагностических целях. Во время переговоров о параметрах соединения может быть определен параметр Magic-Number, который затем можно использовать в данном пакете для идентификации соединения.

 

Пакет LCP типа Echo-Reply

Как уже отмечалось, пакет LCP типа Echo-Reply используется в ответ на пакет Echo-Request. Если для соединения был определен параметр Magic-Number, то он должен включаться в этот пакет.

 

Пакет LCP типа Discard-Request

Пакет LCP типа Discard-Request применяется для тестирования соединения. Приемное устройство должно немедленно отбросить пакет Discard-Request. Никакого ответа на этот пакет приемное устройство посылать не должно. Пакет типа Discard-Request также должен содержать параметр Magic-Number, который был определен на стадии установления соединения.

 

Параметры переговоров LCP

При обмене пакетами Configure-Request в течение фазы переговоров клиент РРР может попросить изменить тот или иной параметр соединения. Если параметр не включен в пакет Configure-Request, то его значение принимается равным значению по умолчанию. На рис. 8.5 представлен формат полей параметров в пакете Configure-Request.

 

 

Поля параметров пакета LCP типа Configure-Request

Рис. 8.5.  Поля параметров пакета LCP типа Configure-Request

 

 

Поле Тип используется для идентификации параметра, о величине которого ведутся переговоры. В табл. 8.3 показаны возможные параметры.

 
Таблица 8.3. Параметры, задаваемые в пакетах LCP типа Configure-Request
Тип параметра Описание
0 Зарезервирован
1 Максимальный принимаемый блок (MRU)
3 Протокол аутентификации (Authentication Protocol)
4 Контроль качества (Quality-Control)
5 Параметр "магическое число" (Magic-Nubmber)
7 Параметр сжатия поля протокола (Protocol Field Compression)
8 Параметр сжатия полей адреса и управления (Address and Control Field Compression)
 

Поле Длина имеет один октет в длину и определяет длину полей Параметры.

 

Максимальный принимаемый блок (Maximum Receive Unit — MRU)

Основной параметр LCP, о величине которого ведутся переговоры, — это максимальный принимаемый блок (Maximum Receive Unit) или MRU. Его значение определяет размер пакетов, которые будут передаваться через соединение. Чем больше размер пакета, тем больший объем данных может быть передан без перегрузки полосы. Однако слишком большой размер пакета может снижать производительность на плохих линиях, в которых часто появляются искажения, так как при появлении ошибки производится повторная передача всего пакета. Когда это возможно, устанавливается значение MRU равное 1500, что соответствует размеру пакета в сети Ethernet. Однако при низкоскоростном соединении рекомендуется снижать MRU до 296, благодаря этому снижается вероятность появления ошибок и, как следствие, уменьшается количество повторных передач.

 

Контроль качества (Quality Control)

Параметр контроля качества (Quality Control) используется, когда устройства желают определить качество установленного соединения. При возрастании количества ошибок желательно проверить качество соединения, и если оно не удовлетворяет определенным нормам, разорвать его. По умолчанию контроль качества соединения не производится. В RFC описан лишь один тип протокола контроля качества — протокол отчета о состоянии соединения Link Quality Report типа с025. При этом обе стороны, участвующие в соединении, должны согласовать использование контроля качества и его тип, прежде чем начать наблюдение за состоянием соединения.

 

Параметр "магическое число" (Magic-Number)

Параметр "магическое число" (Magic-Number) используется для реализации в РРР-соединении обратной связи. При этом образуется петля и клиент имитирует РРР-соединение с самим собой. Когда в пакет Configure-Request включен параметр Magic-Number, то получивший его хост РРР сравнивает это число с параметром Magic-Number из предыдущего пакета Configure-Request. Если они совпадают, то, скорее всего, имеет место соединение типа "петля". После того как параметр Magic-Number для сеанса РРР был определен, его можно употреблять в пакетах Echo-Request и Echo-Reply с целью проверки целостности соединения.

 

Параметр сжатия поля протокола (Protocol Field Compression)

Параметр сжатия поля протокола (Protocol Field Compression) применяется для идентификации метода сжатия, который используется обоими устройствами в РРР-соединении с целью экономии эффективной полосы пропускания. По умолчанию поле Протокол состоит из двух октетов. Если оба устройства РРР согласны использовать протокол сжатия, то это поле может быть сокращено на один октет. Если учесть, что во время сеанса РРР обычно передается несколько тысяч кадров, то мы получим значительную экономию полосы пропускания. Однако следует отметить, что в пакетах LCP нельзя использовать возможности сжатия поля Протокол. Кроме того, проверочная последовательность кадра FCS должна вычисляться со сжатым, а не с действительным полем Протокол.

 

Параметр сжатия полей адреса и управления (Address and Control Field Compression)

Параметр сжатия полей адреса и управления (Address and Control Field Compression) позволяет производить сжатие кадра РРР за счет сокращения полей HDLC Адрес и Управление. При этом полоса пропускания экономится даже на низкоскоростных линиях, а объем экономии больше, чем при сжатии поля Протокол. Подобно предыдущему параметру, значение проверочной последовательности кадра FCS вычисляется без этих полей.

 

Параметр протокола аутентификации (Authentication Protocol)

Параметр протокола аутентификации (Authentication Protocol) позволяет устройствам вести переговоры о методе проверки подлинности клиента при установлении соединения с хостом. Поскольку к сетевой безопасности в настоящее время предъявляются довольно высокие требования, то при установке РРР-соединения практически всегда проводится аутентификация клиента. На сегодняшний день поддерживаются два типа проверки подлинности клиента: тип с223 для протокола CHAP и тип с023 для протокола PAP. Более детально эти протоколы будут рассмотрены в следующем разделе.

 

Фаза аутентификации РРР

В качестве альтернативы проверки пользователя с помощью текстовой процедуры userid/password были разработаны два метода аутентификации. Широкое распространение в реализациях РРР получил протокол аутентификации PAP. По сравнению с PAP, протокол CHAP более безопасен и сейчас приобретает все большую популярность. В реализации РРР для ОС Linux реализованы оба этих метода проверки подлинности пользователей.

 

Протокол CHAP

Протокол аутентификации запрос-ответ Challenge-Handshake Authentication Protocol (CHAP) используется для реализации функций безопасности при установлении РРР-соединения. В протоколе CHAP применяется трехразовая проверка подлинности при регистрации клиента на хосте. В RFC 1994 описан алгоритм, реализуемый в протоколе CHAP. Формат пакета протокола CHAP представлен на рис. 8.6.

 

 

Формат пакета протокола CHAP

Рис. 8.6.  Формат пакета протокола CHAP

 

 

Поле Код имеет в длину один октет и идентифицирует тип пакета CHAP. В табл. 8.4 представлены возможные значения поля Код.

 
Таблица 8.4. Значения поля Код протокола CHAP
Код Описание
1 Вызов
2 Ответ
3 Успешная аутентификация
4 Отказ
 

Поле Идентификатор имеет в длину один октет. С помощью этого поля происходит идентификация пакета CHAP. Затем клиент и хост по этому идентификатору могут согласовывать свои запросы и ответы на них.

 

Поле Длина составляет два октета. Это поле используется для задания длины пакета CHAP. Длина пакета считается с учетом полей Код, Идентификатор, Длина и Данные.

 

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

 

На рис. 8.7 показан протокол, подтверждающий установление соединения, который применяется в CHAP для проверки подлинности клиента. Подтверждение установления соединения в CHAP проходит в три фазы.

 
  • Хост посылает пакет запроса CHAP-клиенту со случайным значением.
  • Клиент отвечает пакетом ответа CHAP, в который включено значение, вычисленное с помощью наложения на значение вызова секретного ключа. Ключ выводится с помощью односторонней функции хеширования.
  • Далее хост сверяет значение в ответе клиента, с полученным им самим таким же способом (наложение значения вызова на ключ). Если они совпадают, то хост высылает пакет "Success" (Успешная аутентификация), и сеанс РРР продолжается. В противном случае хост посылает клиенту пакет "Failure"(Отказ), сеанс РРР прекращается и формируется LCP-пакет типа Terminate-Request.
 

 

Фазы подтверждения установления соединения в протоколе CHAP

Рис. 8.7.  Фазы подтверждения установления соединения в протоколе CHAP

 

 

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

 

Протокол PAP

В отличие от протокола CHAP, протокол установления подлинности пароля Password Authentication Protocol (PAP) не является столь изощренным. В этом протоколе используется простой механизм проверки подлинности пользователя с помощью userid/password. Идентификатор пользователя userid посылается в текстовом виде в формате ASCII. Пароль может шифроваться, а может передаваться и в текстовом виде. Это зависит от возможностей клиента.

 

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

 

Метод проверки подлинности с помощью PAP легко реализуется, но имеет меньший уровень безопасности. Одна из причин его популярности у провайдеров услуг сети Internet заключается в том, что безопасность коммутируемых соединений не является определяющим фактором при организации подключения к сети Internet. Прослушивание телефонной линии с целью перехвата сеанса РРР довольно затруднительно, в отличие от перехвата пароля, который посылается по локальной сети Ethernet в текстовом виде. Таким образом, простота настройки PAP перевешивает возможную угрозу, связанную с низким уровнем его безопасности.

 

Фаза согласования сетевых протоколов

После установления соединения в фазе переговоров LCP могут организовываться отдельные сетевые сеансы. В протоколе РРР предусмотрена возможность одновременной передачи данных нескольких сетевых протоколов. Организация сеанса передачи для каждого сетевого протокола происходит в фазе согласования сетевых протоколов. Согласование параметров сетевых протоколов в сеансе РРР осуществляется с помощью протокола сетевых соединений Network Connection Protocol (NCP). Для работы сервера электронной почты на базе ОС Linux по РРР требуется лишь один протокол — IP. Протокол NCP используется для согласования параметров IP-соединения, и сеанс РРР называется протоколом управления IP или IPCP.

 

Протокол IPCP

Для поддержки сети IP через РРР обеими сторонами должен поддерживаться протокол управления IP. Протокол IPCP используется для согласования параметров протокола IP между двумя сторонами. Когда в кадре РРР содержится пакет IPCP, то в поле Протокол кадра РРР будет установлена величина 8021 (см. табл. 8.1).

 

Формат кадра IPCP идентичен формату кадра LCP (см. рис. 8.4). В поле Код пакета IPCP используются те же самые коды, что и в пакетах LCP, но распознаются только два из них — 1 и 7 (согласно табл. 8.2). Метод согласования параметров в IPCP полностью совпадает с процедурой ведения переговоров в LCP. Для согласования параметров клиент посылает на хост пакет типа Configure-Request. Если хост согласен с параметрами, предлагаемыми клиентом, он отвечает пакетом Configure-Ack, в противном случает он отвечает пакетом Configure-Nak.

 

Параметры IPCP

С помощью протокола IPCP два устройства РРР производят согласование параметров IP-протокола перед установкой IP-соединения. Параметры IPCP включаются в пакет Configure-Request, подобный пакету протокола LCP. В табл. 8.5 приведены параметры IPCP, регулируемые RFC.

 
Таблица 8.5. Параметры протокола IPCP
Значение параметра Описание
1 IP-адреса
2 Протокол сжатия IP
3 Удаленный IP-адрес
 

Параметр 1 был исключен из новой редакции RFC и в настоящее время не используется. В его функции входило назначение IP-адресов устройствам РРР, которые принимают участие в сеансе. Однако было экспериментально доказано, что устройствам довольно трудно установить взаимно приемлемые IP-адреса. Поэтому вместо этого параметра был введен параметр 3.

 

Параметр 2 используется для согласования метода сжатия IP-пакетов с целью экономии полосы пропускания во время сеанса РРР. В настоящее время поддерживается метод сжатия заголовков TCP/IP Ван Якобсона (Van Jacobson). С его помощью можно сократить заголовок TCP/IP до трех октетов. Значение, посылаемое в пакете Configure-Request для включения функции сжатия IP, — 002d.

 

Параметр 3 используется для назначения IP-адреса клиентскому устройству РРР. С помощью этого параметра клиент может выбрать для себя приемлемый IP-адрес. Если хост РРР по какой-либо причине не может использовать, предложенный ему клиентом IP-адрес, то он может возвратить в пакете Configure-Nak альтернативный IP-адрес для клиента. По умолчанию никакой IP-адрес не назначается.

 

После успешного завершения переговоров IPCP через РРР-соединение могут пересылаться пакеты IP с одним из трех значений в поле Протокол: 0021 — для обычных, несжатых IP-пакетов, 002b — для TCP/IP-пакетов, сжатых по алгоритму Ван Якобсона, и 002f — для несжатых TCP-пакетов со сжатыми IP-заголовками (называемые несжатыми по Ван Якобсону).

 

Фаза завершения соединения

Когда клиенту требуется закончить сеанс РРР, он выдает пакет LCP типа Terminate-Request (описание пакетов LCP см. выше). Приняв такой пакет, сервер РРР должен ответить пакетом типа Terminate-Ack и разорвать соединение. Причем это не зависит от текущего состояния активных IP-соединений. Клиент может завершить сеанс РРР даже при активном IP-соединении. После того как сеанс РРР завершен, для открытия нового сеанса клиент должен выдать соответствующие пакеты LCP для установления соединения, даже если физическое соединение между модемами не было утеряно.

 

Реализации протокола РРР в ОС Linux

Операционная система Linux поддерживает протокол РРР, разбивая его функции на две части. Первая часть поддерживается на уровне ядра Linux, а вторая часть протокола РРР реализуется в прикладной программе для ОС Linux.

 

Функции РРР, которые необходимы для передачи пакетов HDLC через последовательное соединение, являются частью ядра ОС Linux. Благодаря этому достигается большая гибкость в работе по обычным телефонным линиям. Начиная с ядра Linux версии 2.0, был введен модульный принцип организации ядра. Теперь модули ядра можно загружать по мере необходимости и выгружать их, когда в них отпадает надобность, без компиляции ядра с новыми параметрами. В старых версиях ядра требовалась перекомпиляция ядра при добавлении или удалении из него каких-либо параметров. Теперь поддержка РРР в ядре включается намного легче. В большинство версий ядра поддержка РРР включается по умолчанию, так как сегодня он пользуется широкой популярностью.

 

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

 

Как уже отмечалось ранее, вторая часть айсберга РРР — это программа, которая управляет РРР-соединениями на сервере. Стандартом де факто для систем на базе ОС Linux стал программный пакет pppd, написанный Элом Лонгейром (Al Longyear), Полом Макеррасом (Paul Mackerras) и Майклом Калагеном (Michael Callahan). В большинство дистрибутивов ОС Linux включен бинарный пакет этой программы. В Red Hat 6.0 включена версия ppp-2.3.7, а в Caldera OpenLinux 2.2 входит ppp-2.3.5. Пакет pppd можно получить по FTP с сайта cs.anu.edu.au в каталоге /pub/software/ppp. Текущей версией на момент написания книги была ppp-2.3.10. Так как данный программный пакет сильно зависит от конфигурации ядра, настоятельно рекомендуем вам использовать версию РРР, которая поставляется с версией имеющегося ядра ОС Linux. Однако если вы любите приключения или имеете веские причины использовать именно последнюю версию РРР, то можно получить ее исходный код, а затем скомпилировать и установить ее самостоятельно. Текущую версию pppd можно получить в сети Internet по адресу:

 

ftp://cs.anu.edu.au/pub/software/ppp/ppp-2.3.10.tar.gz.

 

После получения файла извлеките его из архива tar. Далее выполните следующие шаги.

 
  • Запустите программу ./configure в рабочем каталоге ppp-2.3.5. С ее помощью создается Makefile для специфической версии ОС Linux.
  • Запустите GNU-программу make с параметром kernel (make kernel). Таким образом создаются файлы include для вашей версии Linux с необходимыми частями ядра для поддержки pppd.
  • Перекомпилируйте и установите новое ядро с поддержкой pppd (обратитесь к документации на имеющуюся версию ОС Linux, чтобы исключить любые неожиданности).
  • Запустите GNU программу make для компиляции программы pppd.
  • С правами пользователя root запустите программу GNU make с параметром install для создания выполняемых модулей и помещения их в соответствующие каталоги.
 

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

 

Реализация клиента РРР в ОС Linux

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

 

Параметры клиента в pppd

Для использования pppd в клиентском режиме необходимо настроить несколько параметров, которые отвечают за подключение и установление соединения с сервером РРР. Формат команды pppd следующий:

 
pppd <tty line> <speed> [options]

Здесь в роли <tty line> выступает последовательный СОМ-порт, к которому подключается модем (см. лекцию 3 "Установка телекоммуникационного оборудования в ОС Linux"). Параметр <speed> обозначает скорость соединения модема с портом компьютера. Искусство применения программы заключается в подборе правильных параметров для команд, отдаваемых клиенту и серверу. Далее в этом разделе описываются некоторые параметры pppd для выполнения функций клиента РРР.

 

С помощью параметра connect в программе pppd можно использовать выполняемый сценарий оболочки для установки последовательных соединений перед началом работы программы pppd.

 

Параметр crtscts используется для включения аппаратного управления потоком RTS/CTS на последовательной линии.

 

Параметром defaultroute в таблице маршрутов задается маршрут по умолчанию, указывающий на IP-адрес удаленного сервера РРР. Запись в таблице маршрутов автоматически удаляется после прекращения сеанса РРР. Таким образом, Linux-серверу всегда будет известно, куда направлять IP-трафик, предназначенный для других сетей.

 

Параметр lock используется для создания специального файла в стиле UUCP для сигнализации о том, что модем занят.

 

Параметры mru и mtu позволяют регулировать максимальную величину принимаемого блока (mru) и максимальную величину передаваемого блока (mtu) во время фазы переговоров LCP. Помните, что принятие решения о величине этих блоков по-прежнему возлагается на сервер РРР. Довольно часто регулирование этих величин применяется на низкоскоростных линиях для уменьшения размера РРР-пакета.

 

С помощью параметра modem ОС Linux может использовать линии управления модемом. Так, если этот параметр задан, программа pppd будет ожидать появления сигнала несущей CD (carrier detect) при установлении соединения по модемной линии и сбрасывать сигнал готовности терминала DTR (data terminal ready) при разрыве соединения.

 

Программа chat

Программа chat является частью дистрибутива pppd и используется для упрощения строк при установлении соединения программой pppd. Для установления соединения с сервером РРР программой chat используется простой файл сценария. В сценарии chat используются текстовые строки, которые посылаются в ответ на текстовые строки, принятые от сервера. Далее chat приводит в соответствие текстовые строки в сеансе — один ответ на одну принятую строку. В листинге 8.2 показан пример сценария chat, который используется с pppd.

 
1 ""
2 ATDT5551234
3 CONNECT
4 ""
5 "ogin:"
6 rich
7 "word:"
8 guitar
9 "rich]$"
10 "exec /usr/sbin/pppd silent modem crtscts proxyarp
10.0.0.100:10.0.0.2"

Листинг 8.2. Пример chat сценария файл isp.chat

В строке 2 листинга 8.2 показана команда, которую посылает на модем pppd для звонка провайдеру Internet. В строке 3 указывается, какую строку текста должна ожидать pppd для инициализации установления соединения с РРР-сервером. Строка 4 сигнализирует о том, что программа chat принимает отклик модема об установлении соединения, на что она должна ответить обычной пустой строкой с символом возврата каретки. В строке 5 указывается, какую строку следует далее ожидать от сервера. Если на сервере разрешена регистрация модемного терминала, то он должен выдать соответствующую строку-приглашение login. В строке 6 программа pppd посылает идентификатор пользователя на сервер РРР, а в строке 8 — пароль. Получив доступ к командной строке сервера (см. строку 9), pppd запускает программу pppd для поддержки хоста РРР. Более детально параметры обсуждаются в разделе "Реализация сервера РРР в ОС Linux" далее в этой лекции.

 

Сценарий chat может использоваться клиентом pppd для дозвона на сервер РРР, где запускается программа pppd. Параметр pppd connect вызывает сценарий chat с использованием следующего формата:

 
pppd ttyS1 38400 connect '/usr/sbin/chat -v -f /home/rich/isp.chat'\modem crtscts defaultroute

Параметр connect вызывает сценарий chat для подключения к серверу РРР. Приведенная выше командная строка автоматически вызывает сервер РРР и запускает программу pppd на сервере. Параметр -v используется в программе для детализации вывода в файле отчета /var/log/messages. Его можно использовать при отладке и настройке соединения и не задавать, когда соединение работает нормально. В листинге 8.3 представлены строки, которые программы chat и pppd помещают в файл отчетов в течение сеанса РРР.

 
Sep 22 86 56 56 shadrach pppd[663] pppd 2.3.5 started by root, uid 0
Sep 22 06 56 56 shadrach kernel: registered device ppp0
Sep 22 06 56 57 shadrach chat[664]: send (ATZS7=100^M)
Sep 22 06 56 57 shadrach chat[664]: expect (OK)
Sep 22 06 56 57 shadrach chat[664]: ATZS7=100^M^M
Sep 22 06 56 57 shadrach chat[664]: OK
Sep 22 06 56 57 shadrach chat[664]: -- got it
Sep 22 06 56 57 shadrach chat[664]: sehd (ATDT5551234^M)
Sep 22 06 56 58 shadrach chat[664]: expect (CONNECT)
Sep 22 06 56 58 shadrach chat[664]: ^M
Sep 22 06 57 18 shadrach chat[664]: ATDT5551234^M^M
Sep 22 06 57 18 shadrach chat[664]: CONNECT
Sep 22 06 57 18 shadrach chat[664]: -- got it
Sep 22 06 57 18 shadrach chat[664]: send (^M)
Sep 22 06 57 18 shadrach chat[664]: expect (ogin:)
Sep 22 06 57 18 shadrach chat[664]: 28800/V42BIS^M
Sep 22 06 57 19 shadrach chat[664]: ^M
Sep 22 06 57 19 shadrach chat[664]: ^MRed Hat Linux release 5.2 (Apollo)
Sep 22 06 57 19 shadrach chat[664]: ^MKerhel 2.0.36 on an 1486
Sep 22 06 57 19 shadrach chat[664]: ^M
Sep 22 06 57 19 shadrach chat[664]: ^M^M
Sep 22 06 57 19 shadrach chat[664]: mail1.isp.net login:
Sep 22 06 57 19 shadrach chat[664]: --got it
Sep 22 06 57 19 shadrach chat[664]: send (rich^M)
Sep 22 06 57 19 shadrach chat[664]: expect (word:)
Sep 22 06 57 19 shadrach chat[664]: rich^M
Sep 22 06 57 19 shadrach chat[664]: Password:
Sep 22 06 57 19 shadrach chat[664]: -- got it
Sep 22 06 57 19 shadrach chat[664]: send (guitar^M)
Sep 22 06 57 20 shadrach chat[664]: expect (rich]$)
Sep 22 06 57 20 shadrach chat[664]: ^M
Sep 22 06 57 20 shadrach chat[664]: Last login: Tue Sep 21 20:45:47^M
Sep 22 06 57 21 shadrach chat[664]: [rich@mail1 rich]$
Sep 22 06 57 21 shadrach chat[664]: -- got it
Sep 22 06 57 21 shadrach chat[664]: send (exec /usr/sbih/pppd passive silent modem crtscts^M)
Sep 22 06 57 22 shadrach pppd[663]: Serial connection established.
Sep 22 06 57 23 shadrach pppd[663]: Using interface ppp0
Sep 22 06 57 23 shadrach pppd[663]: Connect: ppp0 <--> /dev/ttyS1
Sep 22 06 57 27 shadrach pppd[663]: local IP address 10.0.0.100
Sep 22 06 57 27 shadrach pppd[663]: remote IP address 10.0.0.2

Листинг 8.3. Строки из файла /var/log/messages для chat и pppd

Как видите, с помощью сценария chat и команд клиента pppd организуется сеанс РРР с сервером. Все эти процедуры можно поместить в файл сценария, с помощью которого по мере необходимости можно запускать сеанс РРР. Однако при использовании такого метода организации РРР-соединения требуется наличие какого-либо события, которое запускает сценарий. В качестве такого события может использоваться процесс cron, с помощью которого запускается сценарий РРР, когда требуется забрать или отправить почту. Ниже приведена программа, с помощью которой можно запускать клиента РРР по мере надобности.

 

Программа diald

Теперь, имея отлаженный сценарий chat и получив возможность звонить на сервер РРР и устанавливать соединение с ним, вы, возможно, захотите автоматизировать этот процесс. Если локальный сервер электронной почты на базе ОС Linux непосредственно подключается к провайдеру Internet, то необходимо разработать график частоты его подключений для обмена электронной почтой с сервером провайдера Internet (см. лекцию 13, "Подключение почтового сервера к провайдеру Internet"). Один из методов — использование IP-маршрутизации по запросу. Под этим подразумевается, что соединение РРР устанавливается автоматически, как только обнаруживаются данные, которые направлены вне локальной сети (в сеть провайдера Internet).

 

Прекрасным средством для осуществления маршрутизации по запросу является программа diald, написанная Эриком Сченком (Eric Schenk). Как правило, в большинство версий ОС Linux входит бинарный пакет diald, уже готовый к установке. Если в имеющейся версии Linux эта программа отсутствует, ее можно получить в сети Internet на Web-сайте: http://diald.unix.ch.

 

Формат запуска программы diald следующий:

 
/usr/sbin/diald [device1....] [options...] [-- [pppd options]]

Здесь device — строка в ОС Linux для устройства tty, к которому подключается модем, options — параметры программы diald, а pppd options — параметры, которые diald передает программе pppd, когда вызывает ее. Параметры diald можно также задавать с помощью файла конфигурации.

 

Файл конфигурации для программы diald применяется для установки параметров, используемых ею при вызове программ pppd и chat, а также для задания списка сценариев, которые будут выполняться для старта и останова pppd. Файл конфигурации находится в каталоге /etc и называется diald.conf. В листинге 8.4 приведен пример файла diald.conf, который заменяет параметры pppd, приведенные ранее в примере.

 
1 ###
2 # /etc/diald.conf - diald configuration
3 #
4 # see /usr/lib/diald for sample config files
5 #
6 mode ppp
7 connect '/usr/sbin/chat -f /home/rich/isp.chat -t 35000'
8 connect-timeout 180
9 device /dev/ttyS1
10 speed 115200
11 modem
12 lock
13 crtscts
14 local 10.0.0.100
15 remote 10.0.0.2
16 defaultroute
17 include /usr/lib/diald/standard.filter
18 fifo /etc/diald/diald.ctl

Листинг 8.4. Пример файла конфигурации /etc/ diald.conf

В строке 7 листинга 8.4 задан параметр connect, который вызывает программу chat с помощью сценария chat, использованного в примере с pppd. Строка 8 предусматривает, что модем хоста РРР находится в режиме ответа на четвертый звонок (так что это не будет мешать вашим родным и друзьям, если они звонят по той же телефонной линии). Таким образом, задается интервал времени для выполнения сценария chat. В нашем случае это три минуты (180 секунд). В строке 17 программа diald обращается к файлу standard.filter, который используется diald для описания условий запуска и останова сеанса РРР. В строке 18 указывается на специальный файл, который используется сопутствующей программой dctrl для мониторинга сеанса РРР. Программа dctrl — это графический пакет для мониторинга РРР-соединения. Он позволяет оценить пропускную способность соединения, а также немедленно сигнализирует о любых ошибках в течение сеанса РРР.

 

После конфигурирования параметров diald можно произвести их тестирование. Программа diald запускается в фоновом режиме и запускать ее нужно с правами пользователя root. Когда diald обнаруживает в сети условия, которые требуют соединения с сервером РРР, она запускает программу chat. Та, в свою очередь, организует сеанс с сервером РРР и запускает программу pppd на локальном компьютере. Когда работа diald отлажена, можно написать для нее сценарий запуска, согласно которому она будет стартовать во время загрузки системы. Всякий же раз, когда какая-либо программа должна получить доступ к удаленному хосту по IP (например, fetchmail), будет запускаться diald и открывать сеанс РРР. Великолепно!

 

Программа kppp

Если в системе Linux используется менеджер окон типа K Desktop Environment (KDE), для упрощения настройки и использования РРР-соединений можно воспользоваться программой kppp. Эта программа представляет собой графическую оболочку, с помощью которой можно сконфигурировать и в дальнейшем запускать программу pppd. На рис. 8.8 показано основное окно, которое появляется при запуске kppp.

 

 

Основное окно программы kppp

Рис. 8.8.  Основное окно программы kppp

 

 

В основном окне предоставляется возможность выбора хоста РРР и запуска pppd после ввода пароля и щелчка на кнопке Соединение (Connect). Щелчок на кнопке Установка (Setup) в основном окне вызывает окно Конфигурация kppp (kppp Configuration). На вкладке Учетные записи (Accounts) окна Конфигурация kppp (kppp Configuration) можно сконфигурировать несколько пользователей. На рис. 8.9 показан внешний вид вкладки Учетные записи.

 

 

Закладка вкладке Учетные записи в программе kppp

Рис. 8.9.  Закладка вкладке Учетные записи в программе kppp

 

 

Индивидуально параметры каждой учетной записи можно задать, щелкнув на кнопке Новая (New) — рис. 8.10.

 

 

Окно для настройки параметров учетной записи пользователя в программе kppp

Рис. 8.10.  Окно для настройки параметров учетной записи пользователя в программе kppp

 

 

Свойства нового пользователя можно отредактировать в окне Редактирование учетной записи (Edit Account). Здесь же можно задать телефонный номер для дозвона и метод проверки подлинности, который будет использоваться во время сеанса РРР.

 

Доступные методы проверки подлинности включают аутентификацию с помощью протокола PAP, CHAP, сценария chat и терминального сеанса, где необходимо вручную зарегистрироваться на сервере и выполнить команду pppd на удаленном сервере. С помощью закладки IP можно задать способ получения IP-адреса: динамически — от хоста РРР или статически — вручную. Точно так же можно задать способ получения клиентом РРР IP-адресов DNS и маршрутизатора на вкладках DNS и Шлюз (Gateway): динамически — от хоста РРР или статически — вручную.

 

На рис. 8.11 показаны установки kppp, которые находятся на вкладке Устройство (Device). С ее помощью можно задавать настройки модема, который будет использоваться для дозвона до провайдера Internet. В их число входит аппаратное управление потоком и метод сброса линии. Флаг Использовать lock-файл (Use Lock File) позволяет использовать параметр pppd lock для создания специальных файлов в стиле UUCP. Тогда другие процессы не будут пытаться использовать модем, когда он занят в сеансе РРР.

 

 

Конфигурационная вкладка kppp Устройство (Device)

Рис. 8.11.  Конфигурационная вкладка kppp Устройство (Device)

 

 

На рис. 8.12 представлена вкладка Модем (Modem) для установки параметров модема. Воспользовавшись кнопкой Команды модема (Modem Commands), можно добавить строку инициализации модема перед установкой соединения. С помощью кнопки Опрос модема (Query Modem) осуществляется считывание текущих настроек модема. После щелчка на этой кнопке будут выводиться одновременно восемь параметров модема. А кнопка Терминал (Terminal) может пригодиться при создании сценариев дозвона. При щелчке на нее вызывается мини-терминал, с помощью которого вы можете общаться с модемом напрямую и выполнять дозвон на сервер РРР. Работа с терминалом весьма эффективна, когда требуется проследить ответы сервера, например, при отладке сценария дозвона.

 

 

Вкладка kppp Модем

Рис. 8.12.  Вкладка kppp Модем

 

 

После того как настройка всех параметров завершена, установление соединения представляет собой процесс дозвона до провайдера Internet и регистрацию у него на сервере с соответствующими именем пользователя и паролем. После этого требуется лишь щелкнуть на кнопке Соединить (Connect). Программа kppp будет автоматически запускать pppd с параметрами, которые были ранее заданы для данного бюджета пользователя. Для бюджетов пользователя также имеется полезная опция, с помощью которой можно получать подробный отчет о работе РРР за месяц.

 

Реализация сервера РРР в ОС Linux

Программа pppd, которая используется в качестве клиента РРР, может работать и в режиме сервера РРР. Обратите внимание на строку 10 в листинге 8.2. В этой строке клиент запустил pppd на сервере РРР с целью открытия сеанса РРР. Кроме возможности запуска вручную, для ОС Linux были разработаны специальные программы для автоматического запуска pppd при обнаружении на входной линии запроса на открытие сеанса РРР. В этом разделе также рассматриваются преимущества совместного использования программ pppd и mgetty+sendfax.

 

Параметры сервера в pppd

С помощью определенных параметров программа pppd может выполнять функции сервера РРР. Несмотря на то что протокол РРР рассматривает обе стороны, участвующие в соединении, как равноправные, одна из сторон всегда выступает в роли сервера и ожидает запросов на установление соединения от клиентов. Некоторые из параметров, используемые сервером РРР, описаны в последующих разделах.

 

Параметры passive и silent используются программой pppd для ожидания пакета LCP типа Configure-Request с целью инициализации сеанса РРР.

 

Параметр proxyarp применяется для предоставления хост-комьютеру РРР возможности обрабатывать ARP-запросы в локальной сети от имени клиента РРР. Таким образом, другие компьютеры могут подключаться к клиенту РРР.

 

Предупреждение

 

С помощью параметра proxyarp другие компьютеры могут подключаться к РРР-клиенту. Например, когда ваш сервер на базе ОС Linux устанавливает РРР-соединение с провайдером Internet, он становится сетевым устройством в сети провайдера и вполне может быть подвержен атакам извне, как и любое другое устройство, напрямую подключенное к сети. Мы настоятельно рекомендуем использовать программное обеспечение для организации брандмауэра (firewall) с целью контроля доступа удаленных клиентов на ваш сервер. Особенно следует быть внимательным, если не применяется никаких мер безопасности при установке РРР-соединения. Внимательно анализируйте файлы отчетов системы на предмет попыток несанкционированного доступа.

 

С помощью параметра Local_IP:Remote_IP программой могут назначаться IP-адреса для удаленных устройств. При этом Local_IP — это адрес хоста РРР, а Remote_IP — адрес удаленного клиента.

 

Параметры pppd, которые задаются при запуске из командной строки, также можно заносить в конфигурационные файлы. По умолчанию программа pppd проверяет файл /etc/ppp/options и запускается с параметрами, которые в нем заданы. Еще одно полезное свойство pppd состоит в том, что она может устанавливать параметры в зависимости от используемого устройства tty. Благодаря этому для каждого устройства tty (порта) можно задать специфические параметры, например IP-адрес удаленной стороны. Тогда, если задействованы линии ttyS0, ttyS1 и ttyS2, для каждой из них можно задать свой набор параметров в файлах /etc/ppp/options.ttyS0, /etc/ppp/options.ttyS1 и /etc/ppp/options.ttyS2. При этом в каждом файле параметров будут указаны различные пары адресов Local_IP:Remote_IP, т.е. исключается возможность получения несколькими клиентами РРР одинакового IP-адреса.

 

Программа mgetty+sendfax

Если необходимо, чтобы сервер на базе ОС Linux выступал в качестве сервера РРР и принимал от клиентов запросы на установление соединений, то лучше всего для этой цели подходит программа mgetty+sendfax, написанная Гертом Доерингом (Gert Doering). Бинарный пакет этой программы, уже готовый к установке, входит в большинство версий ОС Linux. Если по какой-либо причине он отсутствует в вашей версии Linux, можно получить его с сервера sunsite.unc.edu в каталоге /pub/Linux/system/serial.

 

Как правило, в ОС Linux для обработки входящих соединений используется программа getty. Обнаружив попытку соединения на линии, она использует для аутентификации пользователя процедуру login, для которой требуется идентификатор пользователя и пароль. В состав mgetty+sendfax входит новая программа mgetty, которая заменяет старую программу getty для работы с последовательными линиями. Эта программа обладает большей гибкостью, чем getty, так как она способна автоматически определять тип входного звонка с помощью lock-файлов.

 

Для управления работой mgetty используются как параметры командной строки, так и конфигурационные файлы. В ОС Linux все указания этой программе, касающиеся взаимодействия с другими программами и обслуживания последовательных соединений, задаются в файле /etc/inittab. Каждое устройство tty на сервере под управлением ОС Linux имеет в этом файле свою строку конфигурации. Строка в файле inittab, с помощью которой mgetty управляет последовательной линией, выглядит примерно так:

 
#Set serial line for modem
s1:12345:respawn:/sbin/mgetty -D -s 38400 -n 4 ttyS0

Знаки двоеточия используются здесь для разделения параметров. Первый параметр — уникальный идентификатор терминальной линии. Второй параметр указывает на уровень init, на котором терминал будет активен. Как видите, для данной линии терминал будет активен для всех уровней init. Третий параметр обуславливает реакцию процесса init на активность в линии. Ключевое слово respawn указывает, что программу можно запускать на указанном уровне запуска и перезапускать ее снова после завершения работы. Таким образом, после отключения клиента модемная линия снова будет готова к приему нового соединения. Четвертым параметром является программа, которую init запускает для управления терминальной линией. Формат команды на запуск mgetty следующий:

 
mgetty [options] ttydevice

Под параметрами [options] подразумеваются параметры для управления модемной линией, а ttydevice — устройством tty в ОС Linux, которым будет управлять mgetty. В табл. 8.6 представлены все параметры mgetty.

 
Таблица 8.6. Параметры командной строки для mgetty
Параметр Описание
-x LEVEL Устанавливает уровень отладки в LEVEL
-s SPEED Устанавливает скорость в линии равной SPEED
-a Автоматическое определение скорости модема
-k SPACE Устанавливает размер (в килобайтах) каталога входного буфера для факса равным SPACE
-m 'EXPECT SEND' Определяет сценарий для инициализации модема
-r Сигнализирует об использовании прямой линии
-p LOGIN_PROMPT Определяет оболочку для входа в систему по модемной линии
-n RINGS Устанавливает число звонков, после которых mgetty должна ответить удаленному модему
-D Переводит модем в режим работы с данными
-F Переводит модем в режим факса
-R SEC Разрешает процедуру обратного дозвона
-i 'issue' Определяет, какой файл выдать при установлении соединения
-S 'FAX DCC' Определяет, какой документ по умолчанию высылать по запросу с удаленного факса
 

Как показано в примере inittab, модем переведен в режим передачи данных (т.е. в режим модема) с фиксированной скоростью 38400 бит/с. Кроме того, модем будет отвечать на звонок только после четвертого звонка. Однако есть одно свойство mgetty, которое может привести вас в замешательство. Дело в том, что mgetty не поддерживает для модема режим автоответа. Она лишь анализирует служебные сообщения, получаемые от модема. Приняв нужное количество строк RING (в зависимости от параметра -n), она выдает на модем команду на поднятие трубки ATA. Таким образом, модем не сможет ответить на входной звонок, если программа mgetty заблокирована. Вероятно, вам знакома ситуация, когда модем на сервере отвечал на входной звонок, но при этом приглашение системы login не выдавалось.

 

Для управления работой mgetty, кроме параметров командной строки, можно использовать и конфигурационные файлы. Для указания программ, которым mgetty должна передать управление после установления соединения, используется файл /etc/mgetty+sendfax/login.conf. Как уже отмечалось ранее, обычно управление в терминальном сеансе передается процедуре регистрации в системе login. Точно так же mgetty умеет автоматически определять, что новое соединение является соединением РРР, и передавать дальнейшее управление им программе pppd. Строка в файле /etc/mgetty+sendfax/login.conf, с помощью которой передается управление, выглядит так:

 
/AutoPPP/ - ppp /usr/sbin/pppd auth -chap +pap login modem \ crtscts lock proxyarp

Все данные в строке AutoPPP чувствительны к регистру букв, так что будьте осторожны. Далее mgetty передает управление РРР-соединением программе pppd с параметрами, которые приведены выше в строке AutoPPP. Все они будут добавлены к параметрам, заданным в конфигурационных файлах pppd. Кстати, очень важным для клиентов РРР на базе ОС Windows, которые открывают соединение с сервером, является параметр +pap. Об этом более подробно читайте в лекции 16, "Поддержка удаленных клиентов".

 

После того как информация о mgetty добавлена в файл /etc/inittab, нужно чтобы она возымела действие. Для этого в ОС Linux следует задать команду telinit Q (или KILL HUP 1), чтобы процесс init перечитал файл inittab.

 

Следует отметить, что программа mgetty ведет собственные файлы отчетов в каталоге /var/log. Каждая модемная линия имеет свой файл отчета с именем mgetty.log + номер устройства tty. Пример сеанса работы mgetty приведен ниже в листинге файла отчета.

 
1 09/19 06 43 56 yS0 mgetty: experimental test release 1.1.14-Apr02
2 09/19 06 43 56 yS0 check for lockfiles
3 09/19 06 43 56 yS0 locking the line
4 09/19 06 43 56 yS0 lowering DTR to reset Modem
5 09/19 06 43 57 yS0 send: \dATQ0V1H0[0d]
6 09/19 06 43 57 yS0 waiting for ``OK'' ** found **
7 09/19 06 43 58 yS0 send: ATS0=0Q0&D3&C1[0d]
8 09/19 06 43 58 yS0 waiting for ``OK'' ** found **
9 09/19 06 43 58 yS0 waiting...
10 09/19 06 45 23 yS0 waiting for ``RING'' ** found **
11 09/19 06 45 23 yS0 waiting for ``RING'' ** found **
12 09/19 06 45 29 yS0 waiting for ``RING'' ** found **
13 09/19 36 45 35 yS0 waiting for ``RING'' ** found **
14 09/19 06 45 59 yS0 send: ATA[0d]
15 09/19 06 45 59 yS0 waiting for ``CONNECT'' ** found **
16 09/19 06 46 13 yS0 send:
17 09/19 06 46 13 yS0 waiting for ``_'' ** found **
18 09/19 06 46 16 ##### data dev=ttyS0, pid=2766, caller='none', conn='38400/ARQ/28800 LAP-M',
name='', cmd= '/usr/sbin/pppd' , user='/Autoppp/'

Листинг 8.5. Файл отчета mgetty

Как видно из данного листинга, в строках 1–9 mgetty инициализирует модем для использования с устройством ttyS0 (порт COM1). В строках 10–14 mgetty принимает от модема служебное слово RING, которое сигнализирует о получении модемом входного звонка. Как видим, после четвертого звонка mgetty выдает модему команду ATA, что означает "поднять трубку". Далее, в строке 18, mgetty определяет, что соединение является запросом на установление РРР-соединения, и запускает программу pppd с помощью команды /usr/sbin/pppd.

 

Резюме

Итак, протокол типа "точка-точка" (Point-to-Point Protocol (PPP)) служит для передачи сетевого трафика между двумя устройствами через модемное соединение. Для сервера электронной почты на базе ОС Linux это означает, что для установления соединения с провайдером сети Internet и получения IP-соединения требуется стандартный модем для асинхронных линий, который подключается к последовательному СОМ-порту ПК. С помощью такого соединения почтовый сервер может обмениваться электронной почтой с внешним миром (сетью Internet). Протокол РРР поддерживается в ОС Linux посредством программы pppd. Она разработана специально для работы с протоколом РРР и может выполнять как функции сервера РРР при обслуживании входящих соединений, так и клиента РРР для запроса на установление таких соединений. Сопутствующей pppd программой является программа chat. С ее помощью сервер на базе ОС Linux может общаться с модемом для установления соединения с провайдером Internet по телефонной линии и организации сеанса РРР с сервером провайдера. С целью более полной автоматизации установления РРР-соединений можно использовать программу diald. При наличии в сети IP-трафика, который адресован в Internet, она автоматически устанавливает РРР-соединение с провайдером. Для реализации функций сервера РРР можно использовать программу mgetty+sendfax, с помощью которой, при наличии входных запросов, автоматически запускается программа pppd и открываются сеансы РРР для клиентов. Она весьма успешно работает с клиентами РРР, которые используют операционные системы Windows 95, 98 и NT.

 
Автор: Р. Блам  источник: 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