Страница 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
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 (виртуальные адреса)
загружаем конфиг
Ну считаем, что у вас мпд уже сконфигурен как надо, допустим он при старте запускает скрипт /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 без особого ущерба для ЦПУ