Как работает PPPoE

PPPoE (англ. Point-to-point protocol over Ethernet) — сетевой протокол передачи кадров Протокол PPP, стандарт которого определён в документе RFC 2516, является установление соединения «точка-точка» поверх общей среды Ethernet. Настройка подключения отличается для абонентов сетей Что такое Ethernet и ADSL. В основном используется xDSL-сервисами. Предоставляет дополнительные возможности (Аутентификация, сжатие данных, шифрование).

К сожалению, его MTU ниже, чем на стандартном Что такое Ethernet, что иногда вызывает проблемы с плохо настроенными межсетевыми экранами.

Работа PPPoE осуществляется следующим образом. Существует Ethernet-среда, то есть несколько соединённых сетевых карт, которые адресуются MAC-адресами. Заголовки Ethernet-кадров содержат адрес отправителя кадра, адрес получателя кадра и тип кадра. Одну из карт слушает PPPoE сервер. Клиент посылает широковещательный Ethernet кадр, на который должен ответить PPPoE сервер (адрес отправителя кадра — свой MAC-адрес, адрес получателя кадра — FF:FF:FF:FF:FF:FF и тип кадра — PPPoE Active Discovery Initiation). PPPoE сервер посылает клиенту ответ (адрес отправителя кадра — свой MAC-адрес, адрес получателя кадра — МАС-адрес клиента и тип кадра — PPPoE Active Discovery Offer). Если в сети несколько PPPoE серверов, то все они посылают ответ. Клиент выбирает подходящий сервер и посылает ему запрос на соединение. Сервер посылает клиенту подтверждение с уникальным идентификатором сессии, все последующие кадры в сессии будут иметь этот идентификатор. Таким образом, между сервером и клиентом создается виртуальный канал, который идентифицируется идентификатором сессии и MAC-адресами клиента и сервера. Затем в этом канале устанавливается PPP соединение, а уже в PPP пакеты упаковывается IP-трафик.

Для Ethernet необходима установка клиента РРРоЕ (для всех ОС за исключением Windows XP). В настройках сетевой карты можно отключить все протоколы (в том числе и TCP\IP), так как они не используются для создания РРРоЕ сессии. После установки драйвера клиента РРРоЕ необходимо из командной строки один раз запустить утилиту конфигурации «raspppoe», где в списках всех обнаруженных серверов доступа необходимо будет выбрать свой городской сервер. Автоматически будет создано новое соединение удаленного доступа. При запуске этого соединения будет запрошен логин и пароль и установлена сессия РРРоЕ. После этого становится возможен доступ в локальную сеть и Интернет. Пользователь идентифицируется по логину, паролю, МАС адресу (фиксируется при установлении первой сессии, поэтому важно первую сессию устанавливать со своего компьютера), IP адрес (назначается автоматически, но не меняется от сессии к сессии). Для Windows XP, где поддержка РРРоЕ встроена в ОС настройка сводится с созданию нового соединения, дополнительно устанавливать и настраивать специальное ПО не требуется.

Для ADSL настройка доступа через РРРоЕ производится следующим образом. Для USB ADSL модемов необходимо установить WAN драйвер модема. При этом будет создано соединение Dial-up через ADSL модем и нет необходимости устанавливать и настраивать программное обеспечение PPPoE клиентов, так как его роль выполняет ADSL оборудование. Чтобы установить РРРоЕ сессию необходимо ввести логин и пароль. Для модемов, имеющих Ethernet выход, через WEB интерфейс модема выбирается соединение через РРРоЕ, указывается логин и пароль. Сессия устанавливается модемом автоматически при подаче на него питания. Сетевой интерфейс компьютера настраивается на локальное подключение к ADSL модему (возможно использование встроенного в модем DHCP для автоматической настройки сетевой карты компьютера). При этом при включении компьютера автоматически устанавливается соединение с локальной сетью и Интернетом. Чтобы разорвать соединение, необходимо отключить питание модема или отключить сетевой интерфейс компьютера.

Рабочий пример настройки PPPoE на маршрутизаторе OS FreeBSD.

> ee /etc/ppp/ppp.conf
default:
 set log Phase tun command  # параметры протоколирования, где
 # log - включает ведение log-файла (по умолчанию все сообщения записываются в файл /var/log/ppp.log
 # Phase - поэтапный вывод сообщений в лог (соответствует этапам подключения), позволяет исключить малоинформативные сообщения
 # tun - виртуальное сетевое устройство, которое будет задействовано при соединении (в данном случае tun, т.к. протокол точка-точка)
 # command - производить запись в лог как команд, полученных с командной строки, так и тех, которые были считаны стартовым скриптом ppp из
 # конфигурационного файла
 set mru 1492
 set mtu 1492
 disable ipv6cp # отключить поддержу IPv6
 enable lqr     # Link Quality Reporting - по умолчанию выключено

ispgateway:
 set device PPPoE:xl0       # где PPPoE - задаёт уточнение протокола (в рамках протоколов, поддерживающихся ppp), xl0 имя устройства вашей Ethernet карты
 set authname YourLoginName # выдает ваш ISP
 set authkey YourPassword   # выдает ваш ISP
 add default HISADDR        # установить шлюз по умолчанию (default route) на этого провайдера, HISSADR - отображать IP адрес присоединённой стороны

Для запуск Протокол PPP при загрузке добавим в /etc/rc.conf следующее строки:

> ee /etc/rc.conf
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="NO" #для NAT -преобразования я использую PF, потому NAT в ppp выключен. ppp_nat по умолчанию включен.
ppp_profile="ispgateway"

Настройка PPPoE на маршрутизаторе OS Операционная система Debian 7 Wheezy/sid.

  • Установить pppoeconf
    # aptitude install pppoeconf pppoe ppp
  • Запустить pppoeconf для создания и/или изменения файлов /etc/ppp/peers/dsl-provider, /etc/ppp/*ap-secrets и /etc/network/interfaces
    # pppoeconf

PF MTU PPPoE

> ifconfig
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
...

tun0 соединение имеет MTU 1492. Это значит, что ваше соединение с интернет имеет окно в 1492 байт (MTU - Maximim Transmission Unit) - это наибольший пакет, который ваша машина может передать по данному соединению. В тоже время, почти все веб и ftp серверы соединены с интернет с MTU 1500.

В логе ppp появилась запись tun0: Warning: deflink: Reducing configured MRU from 1500 to 1492. Для устранения зададим явным образом максимальные значения MTU и MRU для Протокол PPP.

FreeBSD:

> ee /etc/ppp/ppp.conf
default:
 set mru 1492
 set mtu 1492

Debian:

# nano /etc/ppp/peers/dsl-provider
mtu 1492

Ссылки

PQ VPS сервера в 28+ странах.