=====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 Дополниетльна информация: \\ * [[http://poptop.sourceforge.net/|Poptop]] =====Фильтры===== Программа 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 =====Дополнительно===== * [[http://code.google.com/p/exppp/source/checkout|Новая версия работающая с FreeBSD 7.0]] * [[http://www.asmodeus.com.ua/library/os/freebsd/ppp-primer/|Подробное руководство по PPP]]