pppoe - клиент PPPoE, работающий в пространстве пользователя
НАЗВАНИЕ
pppoe − клиент PPPoE, работающий в пространстве пользователя
ОБЗОР
pppd pty ’pppoe [опции−pppoe]’ [опции−pppd]
pppoe −A [опции−pppoe]
ОПИСАНИЕ
pppoe − это клиент PPPoE (Point−to−Point Protocol over Ethernet − протокол точка−точка через Ethernet) для Linux и
других UNIX−систем, работающий в пространстве пользователя. pppoe работает совместно с pppd − демоном PPP, чтобы создать PPP−соединение через
Ethernet, которое используется многими DSL−провайдерами.
ОПЦИИ
−I интерфейс
Опция −I указывает используемый интерфейс Ethernet. В Linux это обычно eth0 или eth1. Интерфейс должен быть в состоянии "up"
перед запуском pppoe, но на нём не должен быть настроен IP−адрес.
−T таймаут
Опция −T заставляет pppoe завершить работу, если в течение таймаут секунд в сеансе не обнаружен трафик. Я
рекомендую чтобы вы использовали эту опцию в качестве дополнительной меры безопасности. Но если вы используете эту опцию, вы должны убедиться, что PPP
генерирует достаточно трафика, чтобы таймаут не срабатывал в обычном режиме работы. Лучший способ достичь этого − использовать опцию lcp−echo−interval
pppd. Вы должны установить таймаут PPPoE примерно в 4 раза больше интервала LCP−эха.
−D имя−файла
Опция −D заставляет сбрасывать каждый пакет в файл с именем имя−файла. Предполагается, что она используется только
для отладки; она выводит большое количество информации и сильно ухудшает производительность.
−V
Опция −V заставляет pppoe вывести номер его версии и завершить работу.
−A
Опция −A заставляет pppoe отправить пакет PADI и затем выводит имена концентраторов доступа из каждого принятого пакета PADO. Не используйте
эту опцию совместно с pppd, опция −A предназначена только для интерактивного использования, чтобы получить интересующую информацию о
концентраторе доступа.
−S имя−службы
Указывает имя желаемой службы. pppoe начнёт установку сеанса только с тем концентратором доступа, который может предоставить
указанную службу. В большинстве случаев вы не должны указывать эту опцию. Используйте её только если вы знаете, что имеется несколько концентраторов
доступа или знаете, что вам нужно определённое имя службы.
−C имя−концентратора−доступа
Указывает имя желаемого концентратора доступа. pppoe начнёт установку сеанса с указанным концентратором доступа. В
большинстве случаев вы не должны указывать эту опцию. Используйте её только если вы знаете, что имеется несколько концентраторов доступа. Если указаны
обе опции, −S и −C, они обе должны подойти, чтобы pppoe начал установку сеанса.
−U
Заставляет pppoe использовать метку Host−Uniq в своих пакетах обнаружения. Это позволит запустить несколько pppoe демонов, не создавая помехи
наложением пакетов обнаружения. Вы должны снабдить этой опцией всех демонов pppoe, если вы собираетесь запустить несколько демонов
одновременно.
−s
Заставляет pppoe использовать синхронную инкапсуляцию PPP. Если вы используете эту опцию, тогда вы должны использовать опцию sync в
pppd. Предпочтительно использовать эту опцию если она работает, потому что она сильно снижает накладные расходы CPU на pppoe. Однако она МОЖЕТ
быть ненадёжной на медленных машинах – существует соревнование между записью данных pppd и чтением их pppoe. Если вы обнаружите ошибки или аварийные завершения
программ при использовании синхронного PPP, отключите его –− не пишите мне о поддержке!
−m MSS
Заставляет pppoe фиксировать максимальный размер сегмента TCP на заданном значении. Поскольку из−за накладных расходов PPPoE максимальный
размер сегмента PPPoE меньше, чем при нормальной инкапсуляции Ethernet. Это может вызывать проблемы на компьютерах в локальной сети за пределами шлюза,
использующего PPPoE. Если у вас имеется локальная сеть за шлюзом, и шлюз подключается к Интернет посредством PPPoE, строго рекомендуется использовать опцию
−m 1412. Это позволит не устанавливать MTU на всех узлах в локальной сети.
−H MAC
Заставляет pppoe использовать указанный Ethernet MAC−адрес в качестве исходного адреса для отправки пакетов. MAC должен быть указан в виде
AA:BB:CC:DD:EE:FF. Если указана эта опция, pppoe переведёт интерфейс в неразборчивый режим.
−p файл
Заставляет pppoe записывать его идентификатор процесса в указанный файл. Это можно использовать для поиска и принудительного
завершения процессов pppoe.
−e sess:mac
Заставляет pppoe пропускать фазу обнаружения и перейти прямо к фазе сеанса. Сеанс задаётся идентификатором sess и
MAC−адресом партнёра, указанным в mac. Этот режим не предназначен для обычного использования; он предназначен только для pppoe−server(8).
−n
Заставляет pppoe не открывать сокет обнаружения. Этот режим не предназначен для обычного использования; он предназначен только для
pppoe−server(8).
−k
Заставляет pppoe завершить существующий сеанс отправкой кадра PADT, и затем выйти. Вы должны использовать опцию −e совместно с этой опцией для
указания завершаемого сеанса. Это может быть использовано для закрытия сеансов, когда партнёр имеет ошибки в реализации процедуры завершения сеанса.
−d
Заставляет pppoe произвести обнаружение, вывести информацию о сеансе и завершить работу. Информация о сеансе печатается в соответствии с форматом,
ожидаемым опцией −e. Эта опция позволяет вам начать обнаружение PPPoE, произвести некоторую другую работу, и затем начать действующий сеанс PPP.
Будьте аккуратны; если вы используете эту опцию в цикле, вы можете создать много сеансов, которые могут раздражать вашего партнёра.
−f disc:sess
Опция −f задаёт типы кадров Ethernet для кадров обнаружения и кадров сеансов PPPoE. Типы указываются как шестнадцатеричные
числа, разделённые двоеточиями. Стандарт PPPoE использует типы кадров 8863:8864. Вы не должны использовать эту опцию, если вы не абсолютно уверены, что
ваш партнёр работает с использованием нестандартных типов кадров. Если ваш провайдер использует нестандартные типы кадров, жалуйтесь!
−h
Опция −h заставляет pppoe вывести информацию об использовании и завершить работу.
ЗА КУЛИСАМИ PPPOE
PPPoE (Point−to−Point Protocol over Ethernet − протокол точка−точка через Ethernet) описан в RFC2516 и является
протоколом, который предоставляет абстракцию сеанса, работающего поверх соединённых мостом сетей Ethernet.
PPPoE работает инкапсулируя кадры PPP в кадры Ethernet. Протокол имеет два чётких этапа: этап обнаружения и
этап сеанса.
На этапе обнаружения узел отправляет широковещательно особый кадр PADI (PPPoE Active Discovery Initiation −
инициация активного обнаружения PPPoE) для обнаружения любых концентраторов доступа. Концентраторы доступа (обычно только один концентратор доступа)
отвечают пакетами PADO (PPPoE Active Discovery Offer − предложение активного обнаружения PPPoE), анонсируя присутствие и предоставляемые ими службы. Узел
выбирает один из концентраторов доступа и передаёт пакет PADR (PPPoE Active Discovery Request − запрос активного обнаружения PPPoE), запрашивающий сеанс.
Концентратор доступа отвечает пакетом PADS (PPPoE Active Discovery Session−Confirmation − подтверждение сеанса активного обнаружения PPPoE). Затем протокол
переходит на этап сеанса.
На этапе сеанса узел и концентратор доступа обмениваются кадрами PPP вложенными в кадры Ethernet. Обычный MTU
Ethernet − 1500 байт, но PPPoE добавляет к накладным расходам PPP−кадра два байта, что означает наибольший MTU PPP−интерфейса − 1492 байта. Это приводит к
различным проблемам, если вы используете Linux−машину как фильтрующий шлюз, и интерфейс за пакетным фильтром имеет MTU больше 1492. Фактически, для
безопасности, я рекомендую установить на машины за фильтрующим шлюзом MTU 1412, чтобы в наихудшем случае разрешить TCP и IP опции в соответствующих
заголовках.
Обычно PPP использует LCP (Link Control Protocol − протокол управления каналом) чтобы отключить соединение PPP.
Однако спецификация PPPoE разрешает завершать канал с помощью специального пакета PADT (PPPoE Active Discovery Terminate − завершение активного обнаружения
PPPoE). Если был принят запрос завершения сеанса PPP, данный клиент распознает этот пакет и попытается корректно отключить соединение.
ЦЕЛИ ПРОЕКТИРОВАНИЯ
Мои цели для этого PPPoE клиента были следующими, в порядке убывания важности:
o
Он должен работать.
o
Он должен быть программой, работающей в пространстве пользователя, а не частью ядра.
o
Код должен быть прост для чтения и сопровождения.
o
Он должен быть полностью совместим с RFC2516, предложенным стандартом PPPoE.
o
Он никогда не должен зависать –− если соединение повреждено, он может обнаружить это и выйти, позволяя сценарию−обёртке (wrapper) перезапустить
соединение.
o
Он должен быть довольно эффективным.
Я верю, что я достиг всех этих целей, но (конечно) открыт для предложений, исправлений и идей. Посетите мою
домашнюю страницу http://www.roaringpenguin.com, чтобы узнать контактную информацию.
ЗАМЕЧАНИЯ
Для наилучших результатов, вы должны задать pppd опцию mtu 1492. Я наблюдал проблемы с чрезмерно большими
кадрами, если я не устанавливал эту опцию. Также, если pppoe запущен на фильтрующем шлюзе, все машины за фильтрующим шлюзом должны иметь MTU 1412.
Если у вас есть проблемы, проверьте системные журналы. pppoe помещает интересную информацию в системный
журнал. Вы можете включить журналирование сообщений уровня отладки (debug) для получения полной диагностики.
АВТОРЫ
pppoe был написан Дэвидом Ф. Сколлом (David F. Skoll) <dfs@roaringpenguin.com> под влиянием более
ранних версий Люка Страса (Luke Stras).
Домашняя страница pppoe − http://www.roaringpenguin.com/pppoe/.
АВТОР ПЕРЕВОДА
Перевод на русский язык выполнил Владимир Ступин <vladimir@stupin.su>.
СМОТРИ ТАКЖЕ
pppd(8), pppoe−sniff(8), pppoe−server(8), pppoe−relay(8), /usr/share/doc/pppoe/README.Debian.gz