Ключевые слова:pppoe, linux, ppp, ethernet, gentoo, (найти похожие документы)
From: NetUP <info@netup.ru.>
Date: Mon, 26 Nov 2007 18:21:07 +0000 (UTC)
Subject: Настройка PPPoE сервера на базе ОС Linux и клиента на базе ОС Windows
Оригинал: http://www.netup.ru/articles.php?n=21
Все права защищены (c) 2001-2006 NetUP (www.netup.ru)
Перепечатка материалов разрешается только с предврительного разрешения
компании NetUP (info@netup.ru.">info@netup.ru)
Настройка PPPoE сервера на базе ОС Linux и клиента на базе ОС Windows
Протокол PPPoE (Point-to-Point Protocol over Ethernet) представляет
собой сетевой протокол позволяющий передавать PPP кадры поверх
Ethernet. Так же как и pptp позволяет организовать доступ абонентов, в
сеть, используя авторизацию, шифрование, сжатие и т.д.
Для предоставления доступа по протоколу PPPoE необходим PPPoE-сервер и
абонентское устройство (клиент) с поддержкой протокола PPPoE. В
качестве PPPoE-сервера будем использовать свободно распространяемый
пакет rp-pppoe [1] работающий в режиме ядра (KERNEL MODE) под
управлением ОС Gentoo Linux. В качестве клиента будем использовать
персональный компьютер под управлением ОС Microsoft Windows 2003 и
пакет raspppoe .
Авторизация абонентов будет производиться по протоколу RADIUS через
единое хранилище абонентской информации в биллинговой системе
NetUP UTM 5.
Настройка PPPoE-сервера
Для установки сервера необходимо произвести установку пакетов pppd с
поддержкой протокола RADIUS и rp-pppoe. Для установки pppd необходимо
добавить строку
net-dialup/ppp radius
в файл
/etc/portage/package.use
После этого необходимо произвести установку командой:
emerge ppp
После установки необходимо отредактировать конфигурационные файлы. В
частности необходимо в файле /etc/ppp/radius/radiusclient.conf указать
корректно переменные authserver и acctserver. В этих полях указывается
доменное имя либо IP-адрес сервера, где запущен RADIUS-сервер (процесс
utm5_radius). Пример:
authserver localhost:1812
acctserver localhost:1813
Для корректной работы авторизации и аккаунтинга по протоколу RADIUS
необходимо указать секретное слово в файле /etc/ppp/radius/servers.
Пример:
localhost secret
После этого необходимо установить пакет rp-pppoe командой:
emerge rp-pppoe
Для корректной работы rp-pppoe в режиме ядра (KERNEL MODE) необходимо
в файле /etc/ppp/pppoe.conf указать строку:
LINUX_PLUGIN=rp-pppoe.so
Так же в файле /etc/ppp/pppoe-server-options необходимо указать
следующие настройки:
require-chap
require-mschap-v2
proxyarp
nologfd
plugin radius.so
Согласно этим настройкам разрешены безопасные протоколы авторизации
CHAP и MSCHAPv2. Так же указано, что необходимо загружать модуль для
работы с протоколом RADIUS (radius.so).
Перед запуском сервера необходимо произвести загрузку модуля ядра
Linux. Для этого выполните команду:
modprobe pppoe
Для того, что бы данный модуль загружался автоматически при старте
операционной системы необходимо добавить строку pppoe в файл
/etc/modules.autoload.d/kernel-2.6. В случае если у вас появляется
ошибка, сигнализирующая об отсутствии этого модуля в системе, то
необходимо установить следующую опцию при сборке ядра Linux:
<M> PPP over Ethernet
После того как модуль загружен, можно произвести запуск сервера
командой:
pppoe-server -k
На этом настройка PPPoE-сервера закончена.
Настройка PPPoE-клиента
Для настройки клиентского компьютера необходимо скачать и распаковать
пакет raspppoe с сайта производителя. В результате у вас должна
получится папка RASPPPOE_099. Для установки необходимо зайти в раздел
Control panel->Network Connections и в свойствах любого соединения
выбрать пункт Install Protocol -> Have Disk ->Browse. Укажите путь к
папке RASPPPOE_099 и выберите файл RASPPPOE.INF. Нажмите "OK" когда
будет предложено установить протокол "PPP over Ethernet Protocol".
После того как установка протокола будет закончена можно запустить
файл RASPPPOE.EXE из папки RASPPPOE_099. В предложенном меню выберите
Ethernet адаптер, подключенный к локальной сети, и нажмите "Query
Available Services". После непродолжительного поиска будут отображены
найденные PPPoE-сервера.
Выделите необходимый PPPoE-сервер и нажмите кнопку "Create a Dial-Up
Connection for the selected Service". В результате в ОС Windows должно
появиться соединение "Connection to zavidovo". Для установки этого
соединения необходимо перейти в раздел "Control panel"->"Network
Connections" и произвести двойной клик по соединению. Введите ваши
логин и пароль и нажмите "Dial".
Отладка и тестирование
Протоколирование сообщений PPPoE-сервера производится в файл
/var/log/messages. Ниже приведена выдержка из этого файла в случае
успешной авторизации абонента:
Oct 7 22:27:29 zavidovo pppoe-server[18595]: Session 10 created for client 00:80:48:30:4b:f8
(10.67.15.10) on eth0 using Service-Name ''
Oct 7 22:27:29 zavidovo pppd[18595]: Plugin /etc/ppp/plugins/rp-pppoe.so loaded.
Oct 7 22:27:29 zavidovo pppd[18595]: RP-PPPoE plugin version 3.3 compiled against pppd 2.4.3
Oct 7 22:27:29 zavidovo pppd[18595]: Plugin radius.so loaded.
Oct 7 22:27:29 zavidovo pppd[18595]: RADIUS plugin initialized.
Oct 7 22:27:29 zavidovo pppd[18595]: pppd 2.4.3 started by root, uid 0
Oct 7 22:27:29 zavidovo pppd[18595]: using channel 66
Oct 7 22:27:29 zavidovo pppd[18595]: Using interface ppp0
Oct 7 22:27:29 zavidovo pppd[18595]: Connect: ppp0 <--> eth0
Oct 7 22:27:29 zavidovo pppd[18595]: sent [LCP ConfReq id=0x1 ]
Oct 7 22:27:29 zavidovo pppd[18595]: rcvd [LCP ConfReq id=0x0 ]
Oct 7 22:27:29 zavidovo pppd[18595]: sent [LCP ConfRej id=0x0 ]
Oct 7 22:27:29 zavidovo pppd[18595]: rcvd [LCP ConfReq id=0x1 ]
Oct 7 22:27:29 zavidovo pppd[18595]: sent [LCP ConfAck id=0x1 ]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [LCP ConfReq id=0x1 ]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [LCP ConfAck id=0x1 ]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [CHAP Challenge id=0x47
<139c175d3a37a56422dd83540583188f38a8c8>, name = "net11"]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [LCP Ident id=0x2 magic=0x19595f15 "MSRASV5.20"]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [LCP Ident id=0x3 magic=0x19595f15 "MSRAS-0-MONDIALE"]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [CHAP Response id=0x47 , name = "pppoe"]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [CHAP Success id=0x47 ""]
Oct 7 22:27:32 zavidovo pppd[18595]: peer from calling number 00:80:48:30:4B:F8 authorized
Oct 7 22:27:32 zavidovo pppd[18595]: sent [IPCP ConfReq id=0x1 ]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [CCP ConfReq id=0x4 ]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [CCP ConfReq id=0x1]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [CCP ConfRej id=0x4 ]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [IPCP ConfReq id=0x5 ]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [IPCP ConfRej id=0x5 ]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [IPCP ConfAck id=0x1 ]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [CCP ConfAck id=0x1]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [CCP TermReq id=0x6 19 59 5f 15 00 3c cd 74 00 00 02 dc]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [CCP TermAck id=0x6]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [IPCP ConfReq id=0x7 ]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [IPCP ConfNak id=0x7 ]
Oct 7 22:27:32 zavidovo pppd[18595]: rcvd [IPCP ConfReq id=0x8 ]
Oct 7 22:27:32 zavidovo pppd[18595]: sent [IPCP ConfAck id=0x8 ]
Oct 7 22:27:32 zavidovo pppd[18595]: Cannot determine ethernet address for proxy ARP
Oct 7 22:27:32 zavidovo pppd[18595]: local IP address 10.0.0.1
Oct 7 22:27:32 zavidovo pppd[18595]: remote IP address 172.16.0.102
Oct 7 22:27:32 zavidovo pppd[18595]: Script /etc/ppp/ip-up started (pid 18608)
Oct 7 22:27:32 zavidovo pppd[18595]: Script /etc/ppp/ip-up finished (pid 18608), status = 0x1
В результате успешной авторизации utm5_radius выделяет абоненту
IP-адрес 172.16.0.102. Протоколирование работы RADIUS-сервера
utm5_radius производится в файл /netup/utm5/log/radius_main.log. Ниже
приводится выдержка из этого файла при успешной авторизации абонента:
?Debug : Oct 07 22:27:32 AuthServer: User connecting
?Debug : Oct 07 22:27:32 AuthServer: Session for sessionid not found in <127.0.0.1> cache
?Debug : Oct 07 22:27:32 RADIUS DBA: Info for login found. type <1>
?Debug : Oct 07 22:27:32 AuthServer: Auth scheme: CHAP
?Debug : Oct 07 22:27:32 AuthServer: CHAP: Challenge size: 19
?Debug : Oct 07 22:27:32 AuthServer: CHAP: Authorized user
?Debug : Oct 07 22:27:32 AuthServer: IP claimed: 0xac100066 (<172.16.0.102>)
?Debug : Oct 07 22:27:32 AuthServer: Calling fill radius attributes for service. Attr storage size <0>
?Debug : Oct 07 22:27:32 AuthServer: Calling fill radius attributes for slink.Attr storage size <0>
?Debug : Oct 07 22:27:32 AuthServer: Calling fill radius attributes for NAS. Attr storage size <0>
Notice: Oct 07 22:27:32 AuthServer: Login OK from NAS <127.0.0.1> CLID <>
Notice: Oct 07 22:27:32 AuthServer: Login OK from NAS <127.0.0.1> CLID <>
?Debug : Oct 07 22:27:32 AuthServer: Setting interim update interval from config
При успешной авторизации на сервере создается выделенный ppp-интерфейс
для данного абонента:
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.1 P-t-P:172.16.0.102 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:133 (133.0 b) TX bytes:115 (115.0 b)
1. Страница проекта rp-pppoe в Интернете http://www.roaringpenguin.com/penguin/open_source_rp-pppoe.php
2. Страница проекта raspppoe в Интернете http://www.raspppoe.com/