Простейшая установка и настройка PPPoE сервера под Linux

Простейшая установка и настройка PPPoE сервера под Linux
https://bugzilla.redhat.com/show_bug.cgi?id=222295
Исправление ошибки LCP Config Request

Протестировано на:
* Fedora Core 8, Red Hat 9.0
* ppp 2.4.4
* rp-pppoe 3.8

1. Установка ppp

На момент написания данного документа на всех системах от Red Hat,
pppoe отказывался работать в режиме демона (по поводу kernel mode
ничего сказать не могу потому как не пробовал). Ошибка кроется в
демоне ppp, который отказывается посылать ответы на клиентские запросы
LCP Config Request.

Признаком такой ошибки является остановка подключения к серверу на
этапе проверки имени пользователя и пароля.

В /var/log/messages можно наблюдать такие ошибки:

Jan 30 03:24:51 Dark-server pppd[1979]: LCP: timeout sending Config-Requests
Jan 30 03:24:51 Dark-server pppd[1979]: Connection terminated.
Jan 30 03:24:51 Dark-server pppd[1979]: Modem hangup

Для устранения данной ошибки необходимо исправить файл main.c из
комплекта pppd. После чего ppp надо заново откомпелировать и
установить.

1.1 Качаем ppp 2.4.4 , распоковываем, заходим в дирректорию pppd,
правим файл main.c:

Строки 1567-1572

if (errfd == 0 || errfd == 1)
errfd = dup(errfd);
closelog(); ## ДОБАВЛЯЕМ СТРОКУ!!!
/* dup the in, out, err fds to 0, 1, 2 */
if (infd != 0)
dup2(infd, 0);

Строки 1575-1581

if (errfd != 2)
dup2(errfd, 2);
## УДАЛЯЕМ СТРОКУ!!!!
if (log_to_fd > 2)
close(log_to_fd);
if (the_channel->close)

(Скачать патч и более подробно о данной проблеме можно прочитать
сдесь: https://bugzilla.redhat.com/show_bug.cgi?id=222295)

1.2 Выясняем где распологается старая версия:

whereis pppd
pppd: /usr/sbin/pppd

Т.е. Станая версия находится в /usr/sbin/

1.3 Запускаем скрипт конфигурации ppp, указывая параметр "prefix",имея
в виду, что установка должна выполняться заменяя предидущую версию.
Компелируем, устанавливаем:

/configure --prefix=/usr
make
make install

2. Установка pppoe

Тут всё довольно тривиально и обычно.

2.1 Качаем rp-pppoe 3.8, распоковываем, запускаем скрипт

./go

По идеи если не будет не каких ошибок, то на этом установка завершена.

2.2 Редактируем файл опций /etc/ppp/pppoe-server-options, это самый
обычный файл конфигурации ppp. Пример файла который работает у меня:

name pppoe
logfile /var/log/log.pppoe
require-pap
require-chap
require-mschap
require-mschap-v2
lcp-echo-interval 20
lcp-echo-failure 3
ms-dns 212.188.4.10
ms-dns 195.34.32.116
netmask 255.255.255.0
nobsdcomp
lock

2.3 Заводим пользователей в файлах /etc/ppp/pap-secrets и /etc/ppp/chap-secrets

Приведу пример такого файла:

# Secrets for authentication using CHAP
# client server secret IP addresses
"testlogin" * "testpass" *

Т.е. Именем пользователя будет testlogin а паролем testpass

2.4 Запускаем сервер:

pppoe-server -I eth0 -L 192.168.0.1 -R 192.168.0.2

Где:

eth0 - имя интерфейса на котором запущен сервер
192.168.0.1- IP адрес сервера
192.168.0.2 - начальный IP адрес клиентов

Всё, сервер запущен и работает, теперь к нему можно подсоединяться.