Это старая версия документа.
Exppp
FreeBSD Point to Point Protocol deamon with extended futures. Данная реализация является развитием версии стандартного ppp сервера.
Возможности
- Раздиление траффика на 3 группы:
- 0 - внешний (весь интернет 0.0.0.0/0);
- 1 - внутрений;
- 2 - бесплатный (траффик не попадает в счётчики).
- Установка лимита траффика на сессию.
Общие настройки
Переходим в каталог с программами
cd abills/soft tar zxvf exppp_asm-0.2.4.tar.gz cd exppp_asm-0.2.4 make cp ppp /usr/sbin/ cp raddb/exppp /usr/local/radiusd/etc/raddb/
Дописываем дополнительный словарь для exppp
/usr/local/radiusd/etc/raddb/dictionary
$INCLUDE /usr/local/radiusd/etc/raddb/exppp
Разделитель после $INCLUDE табуляция
перезагружаем радиус
Конфигурационный файл для подключения к радиусу
/etc/radius.conf
auth 127.0.0.1:1812 radsecret 4 4 acct 127.0.0.1:1813 radsecret 4 4
127.0.0.1 - адрес Radius сервера
Скрипты для поднятия шейпера.
/etc/ppp/ppp.linkup
MYADDR: !bg /usr/abills/libexec/linkupdown up INTERFACE USER HISADDR
/etc/ppp/ppp.linkdown
MYADDR: !bg /usr/abills/libexec/linkupdown down INTERFACE USER HISADDR
При использовании FreeBSD ipfw pipe
номера правила задаются в конфигурационом файле
libexec/config.pl по умолчанию:
@START_FW = (3000, 2000, 1000);
Обязательно включите следующие опции в ядро
options IPFIREWALL options IPFIREWALL_DEFAULT_TO_ACCEPT options DUMMYNET options NETGRAPH options NETGRAPH_PPPOE
Правим файл настройки ppp
/etc/ppp/ppp.conf
default: set log Warning Phase
PPPoE
Правим файл настройки ppp
/etc/ppp/ppp.conf
pppoe-in: # Метка (идентификатор правил) set mtu 1492 set mru 1492 allow mode direct enable lqr set lqrperiod 5 set timeout 6000 disable acfcomp protocomp deny acfcomp # если авторизация из UNIX базы паролей enable pap enable chap set speed sync accept dns #set dns xxx.xxx.xxx.xxx # Номер порта для контроля и пароль set server +3000 password set radius /etc/radius.conf set rad_service_type 11 # Таймаут для Alive пакетов set rad_alive 60
Не забывайте делать отступы для правил расположеных после метки. В противном случае, они не будут приниматься.
Запускаем PPPoE демон
/usr/libexec/pppoed -l pppoe-in -p \* fxp2
Для автоматического поднятия PPPoE демона после перезагрузки в OS FreeBSD правим файл
/etc/rc.conf
pppoed_enable="YES" pppoed_flags="-l pppoe-in" pppoed_interface="fxp2" # Интерфейс на котором демон будет слушать
Для слежения за работой PPPoE сервера
# touch /var/log/pppoed.log
и добавте в /etc/syslog.conf
!pppoed *.* /var/log/pppoed.log
# killall -1 syslogd
PPTP
Правим файл настройки ppp /etc/ppp/ppp.conf
pptp: set mtu 1460 set mru 1460 allow mode direct enable lqr set timeout 6000 disable acfcomp protocomp deny acfcomp # если авторизация из UNIX базы паролей enable pap enable chap accept dns #set dns xxx.xxx.xxx.xxx # Номер порта для контроля и пароль set server +3000 password set radius /etc/radius.conf set rad_service_type 11 # Таймаут для Alive пакетов set rad_alive 300 set accmap ffffffff
Настройка pptp демона
Для полечения Calling-Station-Id и Called-Station-Id нужно пропатчить pptpd
# cd /usr/ports/net/poptop/ && make extract
Открываем:
/usr/ports/net/poptop/work/pptpd-1.2.3/pptpctrl.c
Ищим:
inet_ntoa(inetaddrs[1]), ntohs(((struct pptp_out_call_rply *) (rply_packet))->call_id_peer), ntohs(((struct pptp_out_call_rply *) (rply_packet))->call_id));
после этих строк вставляем:
setenv("clid",inet_ntoa(inetaddrs[1]),1); setenv("cid",inet_ntoa(inetaddrs[0]),1);
# cd /usr/ports/net/poptop/ # make # make install
правим конфигурационный файл /usr/local/etc/pptpd.conf
options /etc/ppp/options.pptpd noipparam
# /usr/local/etc/rc.d/pptpd start
Для автоматического запуска после перезагрузки
# echo pptpd_enable=\"YES\" >> /etc/rc.conf
Дополниетльна информация:
Фильтры
Программа PPP имеет возможность применять правила фильтрации пакетов для контроля трафика, который она маршрутизирует. Несмотря на то, что эти правила действуют далеко не так как обычный брандмауэр, они обеспечивают некоторый контроль доступа по мере того, как используется соединение.
Правим
/etc/ppp/ppp.conf или /etc/ppp/ppp.linkup
(Если хотите передавать параметр через radius)
# # Разрешить доступ внутри локальной сети # set filter in 6 permit 0/0 192.168.101.0/24 set filter out 6 permit 192.168.101.0/24 0/0 # # Разрешить telnet-подключения к Интернет # set filter in 1 permit tcp src eq 23 estab set filter out 1 permit tcp dst eq 23 # # Разрешить доступ в Интернет по ftp # set filter in 2 permit tcp src eq 21 estab set filter out 2 permit tcp dst eq 21 set filter in 3 permit tcp src eq 20 dst gt 1023 set filter out 3 permit tcp dst eq 20 # # Если пакет не удовлетворяет ни одному указанному выше условию, то он будет # блокирован. #-------
В каждом классе правил фильтрации пакетов можно применить до 20 явных фильтров. Правила в каждом классе представляют собой последовательные номера от 0 до 20, но ни одно из правил для конкретного класса фильтров не будет активизировано до тех пор, пока будет определено правило с номером '0'!
!
Если Вы решили не использовать правила фильтрации пакетов в конфигурации PPP, то в этом случае, на время соединения с Вашим Интернет-провайдером, через Вашу систему будет разрешен ВЕСЬ входящий и исходящий трафик.
Если Вы решите, что Вам необходимо использовать правила фильтрации пакетов, добавьте строки, описанные выше в Ваш файл /etc/ppp/ppp.conf в одну из секций «стандартную:», «demand:» или «интерактивную:» (или же во все, по Вашему усмотрению).
Пример фильтра:
Гостевой акаунт
- разрешить доступ только к станицы проверки баланса.
- 10.10.10.10 - Сервер биллинга
- 9433 - Порт веб интерфейса
- 10.10.20.20 - DNS сервер
/etc/ppp/ppp.linkup
GUEST_MODE: #Доступ к веб серверу set filter in 0 permit 0/0 10.10.10.10 tcp dst eq 80 set filter out 0 permit 10.10.10.10 0/0 tcp src eq 80 #DNS сервер set filter in 4 permit 0/0 10.10.20.20 udp dst eq 53 set filter out 4 permit 10.10.20.20 0/0 udp src eq 53 #Доступ к странице биллинга set filter in 7 permit 0/0 10.10.10.10 tcp dst eq 9443 set filter out 7 permit 10.10.10.10 0/0 tcp src eq 9443
Пример 2
Блокировать доступа только к определённым ресурсам
MYADDR: !bg /usr/abills/libexec/linkupdown up INTERFACE USER HISADDR set filter in 0 deny 0/0 192.168.0.0/24 set filter out 0 deny 192.168.0.0/24 0/0 set filter in 1 deny 0/0 10.0.0.0/8 set filter out 1 deny 10.0.0.0/8 0/0 set filter in 2 permit 0/0 0/0 set filter out 2 permit 0/0 0/0
ABillS
/ System configuration/ NAS/
Type | exppp |
---|---|
:Manage: | |
IP:PORT: | IP-адрес и порт,, на котором ppp слушает команды |
Password: | пароль для управления (задан в /etc/ppp/ppp.conf set server +3000 password ) |
Если Вам нужно разделение траффика, обязательно отмечайте поле EXPPP_NETFILES (По умолчанию не отмечено) в секции заведения цены трафика. После создания проверти наличие файлов сетей в каталоге /usr/abills/cgi-bin/admin/nets.
Иногда ppp сессию подвисают, чтобы избежать дублирование IP-адресов в ABillS предусмотрен механизм контроля подвисших сессий.
/etc/crontab
*/2 * * * * root /usr/abills/libexec/billd checkppp