Все ниже приведенные настройки тестировались на win 9x/2000/xp !!!
Что будет непонятно пиши !
----------------------------------------------------------------------------
Настройка сервера PPPoE под FreeBSD.
В при настройки использовались следующие программные продукты :
1. Операционная система FreeBSD ver. 4.2
2. Демон PPPoE от системы OpenBSD (не использующий NETGRAPH)
можно получить на сайте (ftp://ftp.vsi.ru/pub/unix/pppoe/pppoed.tgz)
в дальнейшей работе мы будем использовать именно его.
(Можно так же использовать "родной" демон PPPoE поставляющийся
c FreeBSD основанный на NETGRAPH, но в версии FreeBSD 4.2
он имеет ошибки которые приводят к падению всей ОС, возможно
в следующих версиях ОС эту ошибку устранили)
3. Клиентская часть для Windows 98/2000/XP реализуемая
драйвером PPPoE от Robert Schlabbach.
можно получить на сайте (http://user.cs.tu-berlin.de/~normanb/)
4. Пакет user-level ppp. Для работы с системой учета
ниже необходимо версия пакета ppp-020417.src.tar.gz или более поздняя !
можно получить на сайте (http://www.Awfulhak.org/ppp.html)
(в любом случае желательно обновить данный пакет).
В ядро системы дожно быть собранно со следующими устройствами:
# данное устройство необходимо для работы PPPoE демона
pseudo-device bpf # Berkeley packet filter
# данное устройство необходимо для работы user-level ppp
pseudo-device tun # Packet tunnel
Настройка PPPoE серевера.
Необходимо распаковать архив коммандой
# tar -xvzf pppoed.tgz
скомпилировать демон коммандой
# make
готовый демон скопировать в каталог
# cp pppoe /usr/sbin/
Добавить в файл /etc/ppp/ppp.conf следущие запись
необходимые для работы pppoe демона.
pppoe:
set device !/usr/sbin/pppoe
set mtu 1450
set mru 1450
set speed sync
set timeout 300
set server /var/tmp/pppuser%d "" 0177
allow mode direct
enable pap passwdauth
enable chap
disable acfcomp protocomp
deny acfcomp
set ifaddr 192.168.3.1 192.168.3.3-192.168.3.253
# ip адрес DNS сервера назначаемое соединению
set dns 213.24.96.233
accept dns
------------------------------------------
Описание некоторых комманд:
set timeout 300 - определяем время в секундах закрытия соединения
в случае неактивности канала (не желательно ставить 0 могут оставаться
незакрытые сесии )
set server /var/tmp/pppuser%d "" 0177 - имя sock файла через который
будет осуществлятся взаимодействие с конкретным соединением, опция %d
заставляет создавать файлы с именами pppuser0,pppuser1 ... итд.
enable pap passwdauth - определяется способ авторизации при наличии
опции passwdauth пароли и пользователи могут проверятся в
/etc/master.passwd (имя и пароль пользователя передаются по каналу
в открытом виде)
enable chap - (имя и пароль передаются по каналу в шифрованном виде)
disable acfcomp protocomp
deny acfcomp - отключает компрессию для того, что бы заработала
поддержка MPPE - алгоритма криптографии от Microsoft.
set ifaddr 192.168.3.1 192.168.3.3-192.168.3.253 -
ip адрес шлюза и диапазон адресов доступный для назначения
соединению клиента
set dns 213.24.96.233 - ip адрес DNS сервера назначаемое соединению клиента
Создать файл-скрипт /usr/local/etc/rc.d/pppoe.sh
для автоматичекого запуска PPPoE демона при загрузки ОС
зделать его выполняемым # chmod +x pppoe.sh
следующего содержания:
------------------------------------------
#!/bin/sh
case "$1" in
start)
echo "PPPoE server"
/usr/sbin/pppoe -s -p pppoe -i rl0 &
;;
stop)
;;
*)
echo "Usage: `basename $0` { start | stop }"
exit 64
;;
esac
------------------------------------------
Где rl0 интерфейс сервера на котором необходимо принимать запросы
от клиентов.
Принципы организации системы учета и контроля
трафика на базе PPPoE сервера.
При подключении пользователя к pppoe серверу последний запускает процесс
user-level ppp. Далее этот процесс ppp открыват псевдо-устройство tun и
создает файл unix sock заданный в файле конфигурации коммандой
set server /var/tmp/pppuser%d "" 0177.
Через этот файл можно с помощью программы /usr/sbin/pppctl задав в
качестве параметра его имя управлять конкретным соединением:
устанавливать различные режимы работы соединения, получать информацию
о соединении , принудительно закрывать конкретное соединение.
Вот пример некоторых комманд:
#pppctl /var/tmp/pppuser0 close - закрывает соединение
#pppctl /var/tmp/pppuser0 ! echo USER - показывает имя пользователя
которым открыто данное соединение.
#pppctl /var/tmp/pppuser0 ! echo UPTIME OCTETSIN OCTETSOUT - показывает
сколько времени открыто соединие , сколько принято и отправлено байт
пользователем. (эти комманды доступны начиная версии ppp-020417.src.tar.gz)
Так как нас есть возможность в любой момент получить информацию о
любом соединении следовательно можно постороить систему учета которая
позволила бы весть учет для каждого пользователя по следующим пунктам:
1. Лимитировать трафик
2. Учитывать время проведенное пользователем на линии
3. Задавать временные промежутки в какие пользователю разрешено работать