Наши
Сайдбары
   
IRC-канал
Linuxportal.ru
   
Импорт новостей
 
Вход Быстрая регистрация На главную

Поиск:
 
   БИБЛИОТЕКА
     Другие статьи этого раздела:
 

    Сеть
Другие разделы библиотеки:
   БИБЛИОТЕКА Сеть    
Автор статьи:
Дата: 23.07.2003

Знакомство с pppd

Автор: ezhikov


PPP (Point2PointProtocol) нужен нам для организации соединения типа "точка-точка" , что следует из названия. Зачем же нам нужно такое соединение ? Чаще всего мы используем такое соединения для подключения компьютера к удаленной сети посредством модема (также этот протокол используется для организации VPN) . Итак, ppp нужен нам чтобы устройство терминала могло выполнять роль сетевого интерфейса сродни обычно сетевой карте. Как известно, свойства терминала достаточно разнятся со свойствами сетевой карты , из этого в большинстве своем и следуют особенности ppp . Надежность модемного соединения уступает надежности соединения посредствам сетевой карты, качество передачи сетеовй карты много выше чем качество передачи модема, пропускная способность сетевой карты фактически является константой в отличии от модемного соединения, динамика организации соединениний тоже различна - вот основные различия . Таким образом, учитывая все вышеперечисленные особенности, pppd, как одна из реализаций протокола ppp, помогает нам из терминала сделать виртуальное устройство pppX (где X - номер устройства) .
Как уже говорилось, ppp соединения досточно динамичны - этим обуславливаются встроенные системы авторизации - это pap и chap авторизации. Не углубляясь в устройство pap/chap скажу лишь, что chap система более совершенна, она заставляет системы переодически авторизоваться даже после установки соединения, в то время как pap производит авторизацию единовременно при организации соединения, но все-таки chap не получил широкого распространения и чаще всего используется авторизация pap. ppp позволяет авторизовать обе "точки" , хотя этим мало кто пользуется, также можно производить соединение без авторизации.
Второй обязанностью, возложенной на ppp, является повышение надежности соединения - этому служит LineControlProtocol, являющийся частью ppp. В процессе соединения "точки" согласовывают параметры, правильное согласование параметров помогает уменьшить дублирование передаваемой информации для коррекции ошибок. ppp соединение передает информацию в виде датаграмм и использует сжатие для ускорения скорости передачи. Чаще всего ppp используется для организации соединений по протоколам tcp/ip , но сам ppp предусматривает передачу информации при помощи любых сетевых протоколов, например ipx.
pppd позволяет организовать полный цикл ppp соединения - это установка соединения, настройка маршрутизации, поддержание соединения ,завершение соединения и приведение таблиц маршрутизации в исходное состояние. Аналогичные манипуляции для обычных сетевых интерфейсов делаются в большинстве случаев один раз из init скриптов.
Пакет pppd содержит в себе как минимум 2 бинарника - это chat и сам pppd. chat - утилита, предназначенная для настройки линии перед организацией соединения - обычно это вызов или ожидание вызова удаленной системы. chat можно использовать для организации как входящих так и исходящих соединений . По желанию можно использовать какую либо другую утилиту вместо chat. Основные настройки pppd принято держать в файле /etc/ppp/options, хотя это не обязательно . Вследствии того, что одна система может организовывать множество разных ppp соединений в pppd, есть возможность хранить настрйки для каждого из соединений в директории /etc/ppp/peers. Так, например, если файл настройки соединения с вашим провайдером лежит в файле /etc/ppp/peers/isp, то для организации соединения с ним достаточно набрать pppd call isp, тогда pppd стартует, считает инструкции, указанные в /etc/ppp/options, потом считает инструкции из файла /etc/ppp/peers/isp, причем второй файл имеет приоритет и в соответствии с прочитанными инструкциями организует соединение. pppd является так называемой kernel-level реализацией ppp - это значит, что сам протокол ppp реализован в ядре, а не в бинарнике pppd - бинарник только настраивает соединения и делает прочую утилитарную работу. Здесь следует отметить, что BSD системы имеют наравне с kernel-level ppp еще и user-level ppp - в такой реализации ppp весь протокол реализуется в обычном пользовательском процессе, а в качестве сетевого интерфейса используется так называемый туннельный интерфейс - фиктивный сетевой интерфейс, доступный из пользовательских программ.
Основными опциями настроек pppd, указываемых в /etc/ppp/options, являются

tty TERM - TERM - имя терминального устройвства
connect SCRIPT_NAME, где SCRIPT_NAME - это исполняемый файл, подготавливающий TERM для ppp; STDIN и STDOUT SCRIPT_NAME перенаправляются в TERM
LOCAL_IP_ADDRESS:REMOTE_IP_ADRESS - необязательные параметры, устанавливающие адреса "точек"

полный перечень опций можно получить из документации pppd.

Рассмотрим цикл работы pppd. Есть 2 типичных способа организации соединения, начнем с более простого -

1. Запуск pppd , считывание опций.
2. Выполнение опции connect если такая есть.
3. Соединение с оппонентом, согласование параметров, авторизация , результатом работы этого этапа является рабочий сетевой интерфеймс pppX
4. Настройка маршрутизации.
В простейшем случае если указана опция defaultroute, то все пакеты, которые не были распределены уже имеющимися правилами маршрутизации, отправляются удаленной "точке" соединения . Это самый простой и часто неприменимый метод. Для того, чтобы иметь возможность более гибко настраивать маршрутизацию после организации соединения, pppd исполняет /etc/ppp/ip-up. Именно из этого скрипта и принято настраивать маршрутизацию, хотя никто не мешает его использовать для чего-либо другого.
5 Поддержание соединения
6 Разрыв соединения.
Если указана опция defaultroute, то маршут по умолчанию убирается. Исполняется скрипт /etc/ppp/ip-down, цель его работы - обычно приведение системы в исходное состояние после работы ip-up.
(списки параметров ip-up и ip-down и их окружение смотреть в документации pppd)

Также pppd умеет работать в режиме dial on demand - для организации такой работы требуется указать опцию demand, тогда цикл работы несколько иной -

1. Запуск pppd, считывание опций
2. Начало слежения за туннельным интерфейсом и организация роутинга
3. Как только в туннельный интерфейс начали течь пакеты, pppd исполняет connnect , подключается к провайдеру и перенаправляет все пакеты, идущие в туннельный интерфейс, во вновь организованный интерфейс pppX
4. Обычно при таком соединении используется опция idle, чтобы разрывать его после некоторого времени отсутствия активности на туннельном интерфейсе.
5. Разрыв соединения .
6. Возвращение к пункту 3 или завершение работы в зависимости от настроек.

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

Это краткое описание предназначено лишь для ознакомления с работой pppd , более подробную информацию можно получить из документации pppd.

Для работы pppd в ядре будь то BSD или Linux требуется поддержка ppp , для работы в режиме dial on demand требуется также поддержка туннельных устройвств.

Практические рекоммендации по использованию pppd можно посмотреть на .



Все статьи раздела "Сеть"
©"Linuxportal.Ru". Материалы сайта можно
использовать свободно при условии
сохранения этой свободы при дальнейшем
распространении, если явно не указано иное

Дизайн и программирование:

Поставьте
нашу кнопку:
Получить код кнопки
Linux Portal.ru ::: Линукс Портал.ру
Наш партнер: