Страница 1 из 1

mpd5 вопрос

Добавлено: 2009-07-23 11:31:16
metallic
В конфиге mpd.conf добавил строчку

set iface up-script "/tmp/up.sh"

но при подключении он не выполняется, хотя права на него 777 и если руками запустить - все нормально
вот полный конфиг, в логах ничего нет на эту тему
startup:
set user admin pass admin
# set user foo1 bar1
set console self 127.0.0.1 5005
set console open
set web self 0.0.0.0 5006
set web open

default:
load pptp_server


pptp_server:
set ippool add pool1 10.10.1.50 10.10.1.99
create bundle template B
#set iface enable proxy-arp
set iface idle 1800
set iface enable tcpmssfix
set ipcp yes vjcomp
set ipcp ranges 10.10.1.1/32 ippool pool1
set ipcp dns 10.0.15.1
#set ipcp nbns 192.168.1.4
set bundle enable compression
set ccp yes mppc
set mppc yes e128
set mppc yes stateless
create link template L pptp
set link action bundle B
set link enable multilink
set link yes acfcomp protocomp
set link no pap chap
set link enable chap
load radius
set link keep-alive 10 60
set link mtu 1460
set link enable incoming
set iface up-script "/tmp/up.sh"

radius:
set radius server localhost testing123 1812 1813
set radius retries 3
set radius timeout 3
set radius me 127.0.0.1
set auth enable radius-auth
set radius enable message-authentic
в чем может быть дело?

Re: mpd5 вопрос

Добавлено: 2009-07-23 11:44:01
goshanecr
mpd перезапускал после правки конфига?
Попробуй кавычки убрать

Re: mpd5 вопрос

Добавлено: 2009-07-23 12:11:35
metallic
конечно перезапускал, изначально без кавычек было - не помогло

Re: mpd5 вопрос

Добавлено: 2009-07-23 12:29:23
goshanecr
тогда логи подавай, что при подключении происходит.

Re: mpd5 вопрос

Добавлено: 2009-07-23 12:37:12
goshanecr
ТУТ посмотри, видимо проблема в очерёдности строк у тебя. Сделай по очереди секции iface, ipcp, link и т.д.

Re: mpd5 вопрос

Добавлено: 2009-07-23 12:55:19
metallic
Действительно, последовательность параметров имела значение, спасибо!
Еще вопросец, mpd5 сам ширину канала на интерфейсе регулировать не умеет? Это надо решать на уровне фаервола ipfw или pf ?
Встроенной шейпелки у mpd нету?

Re: mpd5 вопрос

Добавлено: 2009-07-23 13:11:07
goshanecr
Зачем городить шейпер в том, что для этого не предназначено? В FreeBSD есть DUMMYNET, делить полосу можно и с помощью pf и с помощью ipfw, что больше нравится.

Re: mpd5 вопрос

Добавлено: 2009-07-23 13:13:59
metallic
goshanecr писал(а):Зачем городить шейпер в том, что для этого не предназначено? В FreeBSD есть DUMMYNET, делить полосу можно и с помощью pf и с помощью ipfw, что больше нравится.
да просто хотелось бы в таблице radius параметр задать, типа скорость такая-то, а он мпд передал этот параметр, а тот уже сам бы шейпил :) а тут с фаерволом загоняться надо, ну раз нельзя, тогда буду думать как к фаерволу прикрутить

Re: mpd5 вопрос

Добавлено: 2009-07-23 13:28:19
goshanecr
А скриптом брать эти самые данные из таблицы и динамически ставить правила шейпинга? Мне кажется нормально всё это реализуемо.. Это может быть полезным :)

Re: mpd5 вопрос

Добавлено: 2009-07-23 13:31:10
metallic
Да я так и думал делать, просто думал, что все уже придумано до нас :)

Re: mpd5 вопрос

Добавлено: 2009-07-27 5:44:32
Abigor
Ну вообще может, надо только доку почитать по MPD
http://mpd.sourceforge.net/doc5/mpd37.html#37
http://mpd.sourceforge.net/doc/mpd62.html

Re: mpd5 вопрос

Добавлено: 2009-07-27 9:02:55
metallic
да я уже сделал шейпер через PF и якоря, там все просто и удобно

Re: mpd5 вопрос

Добавлено: 2009-07-27 15:08:28
milleroff
metallic писал(а):да я уже сделал шейпер через PF и якоря, там все просто и удобно
А через mpd-limit еще легче ... тем более: "internal filter/shaper/limiter based on ng_bpf+ng_car expected to work faster with big number of active links."

Re: mpd5 вопрос

Добавлено: 2009-07-27 15:24:03
metallic
milleroff писал(а):
metallic писал(а):да я уже сделал шейпер через PF и якоря, там все просто и удобно
А через mpd-limit еще легче ... тем более: "internal filter/shaper/limiter based on ng_bpf+ng_car expected to work faster with big number of active links."
Я про этот mpd-limit не понял, это такой модуль к мпд, который на линках скорость ограничивает или он просто правила в фаервол добавляет?

Re: mpd5 вопрос

Добавлено: 2009-07-27 15:42:57
milleroff
metallic, канал можно резать/фильтровать/шейпить разными способами:

1. Через скрипты.
2. Через встроенную поддержку ipfw.
3. Через встроенный ng_bpf/ng_car.

Про последний можно прочитать тут: http://mpd.sourceforge.net/doc5/mpd30.html (внизу страницы).

Re: mpd5 вопрос

Добавлено: 2009-07-29 14:19:11
metallic
Поступил вопрос в личку, как я организовал шейпер. Отвечу публично, может еще кому пригодится.

Система FreeBSD, первым делом собираем ядро с поддержкой ALTQ, как это сделать:
добавляем в конфиг
options ALTQ
options ALTQ_CBQ # Class Bases Queuing (CBQ)
options ALTQ_RED # Random Early Detection (RED)
options ALTQ_RIO # RED In/Out
options ALTQ_HFSC # Hierarchical Packet Scheduler (HFSC)
options ALTQ_PRIQ # Priority Queuing (PRIQ)
options ALTQ_NOPCC # Required for SMP build
http://www.freebsd.org/doc/ru_RU.KOI8-R ... ls-pf.html

Дальше конфигурим PF (/etc/pf.conf)

У меня получилось вот так:
int_if="em0"
ext_if="em1"
vpn_net="10.10.1.0/24"
icmp_types="echoreq"
tarifs="{ tarif-256 tarif-512 tarif-1024 tarif-1536 tarif-2048 tarif-3072 tarif-4096 tarif-5120 tarif-unlim }"

set limit { states 20000, frags 20000, src-nodes 5000 }
set block-policy return

scrub in all

altq on $int_if cbq bandwidth 100Mb queue $tarifs
altq on $ext_if cbq bandwidth 100Mb queue $tarifs
queue tarif-unlim bandwidth 50Mb cbq(default)
queue tarif-256 bandwidth 256Kb cbq
queue tarif-512 bandwidth 512Kb cbq
queue tarif-1024 bandwidth 1024Kb cbq
queue tarif-1536 bandwidth 1536Kb cbq
queue tarif-2048 bandwidth 2048Kb cbq
queue tarif-3072 bandwidth 3072Kb cbq
queue tarif-4096 bandwidth 4096Kb cbq
queue tarif-5120 bandwidth 5120Kb cbq

set skip on lo0

nat pass from $vpn_net to any -> $ext_if

block in
pass out keep state
antispoof quick for { lo $int_if }
pass in quick on $int_if
pass in inet proto icmp from $vpn_net to any icmp-type $icmp_types
anchor "nat/*" from $vpn_net to any
int_if="em0" - локальный интерфейс, который смотрит в локальную сеть

ext_if="em1" - внешний интерфейс, смотрит в интернет

vpn_net="10.10.1.0/24" - диапазон адресов выдаваемых mpd (виртуальные адреса)

загружаем конфиг

Код: Выделить всё

pfctl -f /etc/pf.conf
Ну считаем, что у вас мпд уже сконфигурен как надо, допустим он при старте запускает скрипт /tmp/up.sh, который содержит следующее:

Код: Выделить всё

#!/bin/sh

echo "pass in from $4 to any queue tarif-256" | pfctl -a "nat/$5" -f -
После подключения для пользователя в якорь nat добавится правило, разрешающее выход в интернет и при этом, весь трафик будет пропущен через очередь tarif-256, тут можно вписать любую нужную очередь из описанных в pf.conf, т.е. tarif-512, tarif-1024 и т.д.

Пример скрипта, который после отключения пользователя удалит правила и все записи из таблицы состояний об этом пользователе(этот скрипт тоже должен быть прописан в конфиге mpd):

Код: Выделить всё

#!/bin/sh

pfctl -a "nat/$5" -F rules
pfctl -k $4
Вроде все, еще пару комманд для диагностики:

Код: Выделить всё

Просмотр списка вложенных якорей
pfctl -a 'nat' -sA

Просмотр списка правил в якоре
pfctl -a 'nat/username' -s rules

Re: mpd5 вопрос

Добавлено: 2011-04-07 11:43:44
byteplayer
самое интересное -- как нормальный полисер сделать без mpd с помощью ng_bpf+ng_car
чтобы активировать эту связку на физическом интерфейсе или на влане и резать клиентов по src_ip & dst_ip без особого ущерба для ЦПУ