grizzly_ripper Опубликовано 29 мая, 2012 · Жалоба Существует ли возможность изменения параметров ng интерфейса уже поднятой сессии непосредственно на NAS'e? То есть при поднятии сессии mpd получает параметры с RADIUS и в зависимости от какого-либо параметра (IP не подойдет) повышает лимит скорости интерфейса, либо оставляет его без изменений. Через pipe и ipfw, как я понимаю, скорость можно только урезать. Есть какие варианты через консоль mpd, если они вообще есть? Нужно это для реализации "турбо-кнопки". Понятно, что это можно сделать через билинг/RADIUS, чтобы на NAS приходили уже правильные параметры, но ввиду некоторых специфических особенностей организации сети и тарифных планов, хотелось бы сделать все на NAS. mpd5.5 FreeBSD 8.2 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
terrible Опубликовано 29 мая, 2012 · Жалоба из консоли - никак, только ковырянием ng ноды этого интерфейса походу Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kaN5300 Опубликовано 29 мая, 2012 · Жалоба Присоединяюсь. Только мы ищем вариант обхода ng_car. Хотим просто снимать скоростные ограничения сразу для всех авторизованных абонентов ночью. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 29 мая, 2012 · Жалоба CoA же вроде как поддерживается, и изменение скорости по CoA запросу - тоже... Да и снимать ограничения тождественно установке скажем 100 мбит ограничения в общем-то... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 29 мая, 2012 · Жалоба CoA же вроде как поддерживается, и изменение скорости по CoA запросу - тоже... Да и снимать ограничения тождественно установке скажем 100 мбит ограничения в общем-то... ВОт наша turbo кнопка. #!/usr/bin/env python from datetime import datetime import string import sys import os hosts = ["192.168.53.2", "192.168.53.7", "192.168.53.8", "192.168.53.9", "192.168.53.10", "192.168.53.11", "192.168.53.14", "192.168.53.15", "192.168.53.13"] port = 3799 password = "password" radclient = "/usr/local/bin/radclient" logins = [] logFile = open("/var/log/billing/turbo.log", "a+") logFile.write("%s [sTART] Set Turbo Mode\n" % datetime.now()) if len(sys.argv) > 1 and os.path.isfile(sys.argv[1]): logFile.write("%s [ARGUMENTS] %s \n" % (datetime.now(), sys.argv[1])) lgns = open(sys.argv[1]) for login in lgns: logins.append(login.rstrip()) logFile.write("%s [ADD] To List %s\n" % (datetime.now(), login.rstrip())) lgns.close() os.unlink(sys.argv[1]) for login in logins: for host in hosts: lgn = login.split("-")[0] speed = login.split("-")[1] set_speed_command = "echo \"User-Name := %s, mpd-limit += 'in#1=all rate-limit %s', mpd-limit += 'out#1=all rate-limit %s'\" | %s %s:%d coa %s" % (lgn, speed, speed, radclient, host, port, password) os.system(set_speed_command) logFile.write("%s [sEND] %s\n" % (datetime.now(), set_speed_command)) logFile.write("%s [TURBO] Username: %s\n" %(datetime.now(), lgn)) logFile.write("%s [sTOP]\n" % datetime.now()) logFile.close() Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mrlexus Опубликовано 29 мая, 2012 · Жалоба Кусок моего старого скрипта динамического шейпера под utm5. Как один из вариантов управления скоростью: $ebs=floor($speed_shape/8); $cbs=$ebs/2; $if_up="/usr/sbin/ngctl msg ".$interface.":inet.1-0-m setconf { upstream={ cbs=".$cbs." ebs=".$ebs." cir=".$speed_shape." greenAction=1 yellowAction=1 redAction=2 mode=3 } downstream={ cbs=".$cbs." ebs=".$ebs." cir=".$speed_shape." greenAction=1 yellowAction=1 redAction=2 mode=3 } }"; $if_dw="/usr/sbin/ngctl msg ".$interface.":inet.0-0-m setconf { upstream={ cbs=".$cbs." ebs=".$ebs." cir=".$speed_shape." greenAction=1 yellowAction=1 redAction=2 mode=3 } downstream={ cbs=".$cbs." ebs=".$ebs." cir=".$speed_shape." greenAction=1 yellowAction=1 redAction=2 mode=3 } }"; exec($if_up); exec($if_dw); Где: $speed_shape - скорость в Кбит/с, $interface - ngXX Соотвественно, надо заранее знать имя ноды. У меня сохранялость в самодельную табличку скриптами up/down значения login/ip/ng* и пр., затем оттуда бралось. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
grizzly_ripper Опубликовано 30 мая, 2012 · Жалоба mrlexus Да, спасибо, что-то в этом духе - теперь понятно куда копать :) Остается актуальным вопрос, что использовать в качестве триггера. IP не подойдет, остальные параметры mpd, как я понимаю, тоже. Можно ли как-то поймать "неважный" параметр от RADIUS'a или включить в словарь новый, чтобы mpd отработал скрипт исходя из его значения? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 30 мая, 2012 · Жалоба mrlexus Да, спасибо, что-то в этом духе - теперь понятно куда копать :) Остается актуальным вопрос, что использовать в качестве триггера. IP не подойдет, остальные параметры mpd, как я понимаю, тоже. Можно ли как-то поймать "неважный" параметр от RADIUS'a или включить в словарь новый, чтобы mpd отработал скрипт исходя из его значения? я не понял вашего вопроса. По логину можно обратится к mpd5 и сменить скорость Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
grizzly_ripper Опубликовано 9 июня, 2012 · Жалоба roysbike Просто хотелось, чтобы все происходило на NAS в момент поднятия сессии. Пока остановился на том, что скрипт на NAS периодически будет проверять сессии на наличие условного параметра, и при наличии такого менять скорость в зависимости от значения этого параметра. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...