Loading

В этой статье будет описан процесс настройки и установки PPPoE-подключения в Ubuntu Linux 10.10 В роли сервера доступа будет выступать Cisco
Все что необходимо знать — это имя пользователя и пароль для установки сессии.
В данном примере подразумевается, что со стороны клиента при подключении по технологии DSL модем настроен в режиме моста, при подключении по Ethernet — между клиентом и оборудованием провайдера нет промежуточных устройств по типу маршрутизатора.

Все ниже перечисленные настройки этого соединения (обращаю ваше внимание на слово «этого») будут сохранены в файле
/etc/ppp/peers/dsl-provider.
Через какой физический интерфейс будет осуществлено подключение. В нашем случае это eth0.
Запускаем из консоли конфигуратор:
sudo pppoeconf
Соглашаемся с предложенными настройками:

Смотрим как Ubuntu Linux 10.10 ищет сервер доступа:

Т.к. была настроена ранее кое-какая конфигурация, то клиент предлагает изменить ее. Соглашаемся с этим предложением:

Параметры, которые предлагает конфигуратор. Соглашаемся и тут:

Далее вводим имя пользователя:

и вводим пароль для этого пользователя:

Информация по умолчанию будет взята из файла /etc/resolv.conf о ДНС-серверах:

Соглашаемся с размером MSS=1452.

Немного теории:
MTU («Maximum Transfer Unit» — «максимальный передаваемый блок»)
Это максимальный размер пакета данных, который может быть передан за один физический кадр по протоколу TCP/IP. Данные от компьютера к компьютеру в Интернете идут не сплошным потоком, а этими самыми кадрами — пакетами строго определенного размера.
MSS («Maximum Segment Size» — «максимальный размер сегмента»)
Каждый передаваемый по сети пакет (MTU) состоит из блока данных (MSS) и служебной информации, необходимой для работы маршрутизаторов. Эта служебная информация занимает в пакете 40 байт (20 байт IP и 20 байт TCP), то есть MSS=(MTU-40).
В протоколах туннелирования, в том числе и PPPoE, MTU туннеля равно 1492 байт (меньше стандартного 1500 байт).
Рассмотрим такую ситуацию, клиент через DSL роутер устанавливает TCP сеанс с каким-нибудь сервером в Интернете. Во время этого процесса, они анонсируют друг другу свой максимальный размер сегмента MSS, указывая то, что они могут принимать TCP сегменты вплоть до этого размера. После получения опции MSS, каждое устройство вычисляет размер сегмента, который он можно послать. Сервер решает, что он может посылать пакеты длинной до 1500 байтов. Он посылает 1500-байтовый пакет клиенту, и, в IP заголовке устанавливает бит DF (don’t fragment), т.е. пакет не может быть фрагментирован. Когда пакет достигает клиентского роутера, он (этот роутер) пытается инкапсулировать его в туннельный пакет. Помним что MTU туннеля равно 1492 байт. Естественно у него ничего не получится. Так как роутер не может фрагментировать этот пакет (в IP заголовке устанавливает бит DF), он вынужден отбросить этот пакет и отправить серверу (отправителю) сообщение типа ICMP 3:4 (Хост недоступен, поскольку пакет слишком большой и роутер не будет его фрагментировать). Это ICMP сообщение содержит правильный MTU для сервера, который должен получить его и соответственно настроить размер пакета. Как итог — пакеты доходят до клиента без фрагментации.
Но, возможна такая ситуация когда ICMP сообщение будет блокировано по направлению к серверу, когда это случается, ICMP пакет никогда не достигает сервера и он не узнает правильное значение MTU, таким образом, прохождение данных между клиентом и сервером будет невозможным.

Сделаем установку РРР-сессии при запуске системы:

и проверим соединение:

Сессия устанавливается:
И как итог в консоли выполним команду ifconfig, где увидим интерфейс ppp0, и команду plog — просмотр лога соединения:

Теперь посмотри в файл настройки соединения /etc/ppp/peers/dsl-provider

root@vbox-test:~# cat /etc/ppp/peers/dsl-provider
# Minimalistic default options file for DSL/PPPoE connections
noipdefault
#Опция noipdefault необходима для динамического назначения IP адреса.
defaultroute
#Опция defaultroute устанавливает в качестве маршрута по умолчанию, адрес провайдера.
replacedefaultroute
#Опция replacedefaultroute корректно удаляет предыдущий маршрута по умолчанию.
hide-password
#Опция hide-password запрещает показ паролей в отладочных сообщениях.
#lcp-echo-interval 30
#Опция lcp-echo-interval задает интервал времени в секундах N, через который посылать эхо-запросы серверу для проверки соединения.
#lcp-echo-failure 4
#Опция lcp-echo-failure связана с предыдущей — после N неудачных запросов разорвать соединение.
noauth
#Опция noauth не требует удаленную сторону назвать себя перед тем, как начнется обмен пакетами.
persist
#Опция persist отвечает за то, что соединение будет постоянным.
#mtu 1492
#Опция mtu указывает на размер mtu на интерфейсе ppp
#persist
#maxfail 0
#Опция maxfail задает количество неудачных попыток N после после которых попытки автосоединения будут прекращены.
соединением.
#holdoff 20
#Опция holdoff определяет время в секундах N, после разрыва соединения перед повторным
plugin rp-pppoe.so eth0
#Опция plugin отвечает за загрузку модуля ядра rp-pppoe.so и интерфейс, на котором висит модем.
user «pppoeuser»
#Опция user указывает имя пользователя необходимое для подключения.
usepeerdns
#Опция usepeerdns используется для автоматической настройки DNS.

Логин и пароль, используемый при соединении, в зависимости от типа используемой аутентификации (PAP/CHAP) находятся в файлах /etc/ppp/pap-secrets или /etc/ppp/chap-secrets.

На одной машине можно организовать сколько угодно одновременных подключений. Создаем разные настройки и разные названия файлов. Например:dsl-provider1 и dsl-provider2

Также посмотрим стартовый скрипт:

root@vbox-test:~# cat /etc/ppp/pppoe_on_boot
#!/bin/sh


PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
export PATH


modprobe -q pppoe


exec pppd call dsl-provider

В заключение к этой статьи. Для того чтоб установить соединение необходимо воспользоваться командой
pon dsl-provider
для того чтоб разорвать его
poff dsl-provider