forum.bitel.ru http://forum.bitel.ru/ |
|
Справочник коммутаторов и привязка к порту http://forum.bitel.ru/viewtopic.php?f=44&t=12335 |
Страница 1 из 1 |
Автор: | mhollow [ 27 мар 2017, 19:04 ] |
Заголовок сообщения: | Справочник коммутаторов и привязка к порту |
Добрый день У нас есть физические и юридические лица, для юрлиц тарифы в несколько раз выше естественно, поэтому некоторые люди используют логин и пароль для физ лица на предприятии. Мы бы хотели, чтобы порты коммутаторов доступа можно было бы привязывать абонентов к определённому порту коммутатора, чтобы нельзя было выйти логином физ лица с коммутатора, где могут быть только юрлица! Речь идеть только про PPPoE по RADIUS. никаких netflow. Абонента подключает монтажник, настраивает роутер, роутер подключается используя логин и пароль Биллинг через атрибуты RADIUS узнает с какого коммутатора и порта подключен новый абонент и привязывает абонента к порту коммутатора Оператор может изменить привязку в случае переезда абонента на другой адрес, выбрав новое значение коммутатора и абонентского порта из справочника. Скажите пожалуйста, реализован ли такой функционал? Спасибо. |
Автор: | Amir [ 27 мар 2017, 19:25 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
Одновременного поиска по логину и по порту сейчас нет - либо то, либо это. В том числе потому, что для PPPoE по логину обычно не заводят в дереве коммутаторов, а только NAS'ы. Как вариант, можно использовать поле Идентификатор https://docs.bitel.ru/pages/viewpage.action?pageId=73597961&src=search#id-Процессорru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor-MAC-адресиидентификатор Только нужно будет его в предобработке RADIUS-пакетов проставлять (вытащить значение из атрибута и положить по специальному ключу request.setOption( InetRadiusProcessor.IDENTIFIER, myIdentifier )): Код: Pattern identifierPattern = Pattern.compile( "(.+) vlan-id (\\d+)" );
String nasPortId = request.getStringAttribute( -1, 87, null ); if( nasPortId != null ) { Matcher m = identifierPattern.matcher( nasPortId ); if( m.find() ) { String identifier = m.group( 2 ); request.setOption( InetRadiusProcessor.IDENTIFIER, identifier ); } } |
Автор: | mhollow [ 29 мар 2017, 11:36 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
Нужен именно справочник, причем с точностью до порта, иначе где в интерфейсе осуществлять привязку? От NAS прихоидит Calling-Station-Id=28:D2:44:A6:C3:FA::10.3.2.6::3 (MAC абонента::IP коммутатора::порт коммутатора) Нужно иметь возможность в любой момент выбрать новые данные для привязки. Что можно придумать? Я пока вижу два способа: 1) Создавать объект, в котором в параметрах определять IP и порт. Определив предварительно списочные параметры объектов - список всех IP коммутаторов и список портов (1-48). Привязать логин к объекту. Получится ли потом в каком-нибудь сервис-активаторе вытащить эти данные и сверив с Calling-Station-Id принимать решение пускать не пускать? 2) Определить в дереве устройств отдельную папку, вбить в нее все коммутаторы, в параметрах каждого устройства определив его IP, привязывать сервис к этому устройству, ну а порт определять например в идентификаторе. Получится ли так на этапе активации определить IP устройства к которому привязан сервис и его порт содержащийся в идентификаторе? Кстати что это за идентификатор? Это просто поле в которое можно поместить любое значение для сервиса, а потом его на этапе активации или обработки достать и посмотреть? Для чего предполагается его использовать? Я бы с удовольствием обратился бы с этим вопросом к документации, по каким-то досадным и нелепым причинам, описание этого параметра сервиса я в руководстве не нашел. https://docs.bitel.ru/pages/viewpage.action?pageId=73598076. На скришоте он есть, но задокументировать его поленились. Наверное пятница была, очень хотелось побыстрее свалить домой и попить пивка. |
Автор: | stark [ 29 мар 2017, 13:06 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
Можно было бы сделать так, заводится тип сервиса в котором поставить галочку напротив логина, устройства и порта и mac. Заводится сервис с этими параметрами(устройство, порт, mac, логин, пароль). Потом пишется скрипт обработчика протокола, который на основе вашей строки Calling-Station-Id проставит нужны опции AGENT_REMOTE_ID, AGENT_CIRCUIT_ID, MAC_ADDRESS. И проставляется radius.servSearchMode одним из этих значений: https://docs.bitel.ru/pages/viewpage.ac ... d=73597961 Цитата: 0 - поиск по логину из атрибута User-Name; 1 - поиск по интерфейсу на (найденном) устройстве; 2 - поиск по VLAN'у на устройстве (в предобработке должны быть проставлены опции AGENT_REMOTE_ID и AGENT_CIRCUIT_ID или VLAN_ID); 4 - поиск по VLAN'у на устройстве и его дочерних устройствах (в предобработке должны быть проставлены опции AGENT_REMOTE_ID и AGENT_CIRCUIT_ID или VLAN_ID); 5 - поиск по MAC-адресу на устройстве (в предобработке должна быть проставлена опция MAC_ADDRESS); 6 - поиск по MAC-адресу на устройстве и дочерних устройствах (в предобработке должна быть проставлена опция MAC_ADDRESS); 7 - поиск по адресу, указанному в User-Name, из диапазона адресов сервиса (в типе сервиса должно быть указано serv.search.address=1); 9 - поиск по адресу, указанному в User-Name, из диапазона адресов сервиса (в типе сервиса должно быть указано serv.search.address=1) на агентских (дочерних) устройствах; 10 - поиск по MAC-адресу на всех устройствах. Есть там еще один режим( доработали буквально на днях по заказу одного из клиентов), в документации пока нет Цитата: 13 - поиск по MAC-адресу на устройстве и интерфейсе(в предобработке должна быть проставлена опция MAC_ADDRESS, AGENT_REMOTE_ID и AGENT_CIRCUIT_ID ); В этом случае он найдет по идее сервис по этим параметрам и после этого вроде проверит User-Name и пароль . Если абонент выйдет с другого адреса или Mac, то сервис не найдет и его не пустит. Тут вопрос а нужно ли вам привязка mac ? Если нет, то можно его выкинуть,оставить только устройство и порт. |
Автор: | mhollow [ 29 мар 2017, 13:22 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
MAC не нужен. То есть это вариант 2? 1) Сначала завести все коммутаторы в отдельной папке в дереве устройств. 2) На этапе создания сервиса определить устройство и интерфейс. 3) Какие именно опции скрипт должен проставить для устройства и мака? AGENT_REMOTE_ID, AGENT_CIRCUIT_ID ? 4) Какой именно тип поиска выбрать, если мак не нужен? 1 - поиск по интерфейсу на (найденном) устройстве ? Что будет если у сервиса не будет скажем привязки к порту? Пустит или не пустит? Иногда же хочется определить сервисы для которых не должны действовать эти ограничения. Спасибо. |
Автор: | Amir [ 29 мар 2017, 16:45 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
Цитата: Нужен именно справочник, причем с точностью до порта, иначе где в интерфейсе осуществлять привязку? По ссылке там описано, что идентификатор в сервис подставляется автоматически, в следующий раз когда он будет подключаться - будет идти проверка идентификатора. Если же надо, чтобы зашел с нового места - можно очистить идентификатор в редакторе и при новом подключении проставится новый идентификатор. Если нужно, чтобы заходил с любого "идентификатора", то можно указать в поле * (а для поля MAC-адреса - FF:FF:FF:FF:FF:FF). Еще можно сделать два типа сервиса, один с логин/пароль, второй - с устройство/порт, соответственно в одном случае указывать логин/пароль (если ему можно с разных мест заходить), во втором - только устройство/порт а в конфиге указать: radius.servSearchMode=1,0 Тогда сначала будет искать по устройству/порту (проверка пароля может быть включена или выключена для типа сервиса, проверки логина - не будет), затем, если по устройству/порту ничего не найдено - по логину. |
Автор: | mhollow [ 29 мар 2017, 16:57 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
По ссылке не помню чтобы было это описано, а сейчас там 502 Bad Gateway Короче я начинаю понимать, нельзя спрашивать больше одного вопроса в посте длинной больше одного предложения. Иначе с вероятностью 0.99 на них ответа не будет)) Ну и хорошо. Тем лучше) Внимание вопрос. Скажите пожалуйста, что хранится в поле идентификатор? Спасибо. |
Автор: | Amir [ 29 мар 2017, 17:20 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
Любая строка, которая передается из предобработки RADIUS-запроса. Т.е. универсальное поле. Цитата: При RADIUS Access-Request можно также использовать MAC-адрес, чтобы авторизовывать запросы только с
определенным MAC-адресом. MAC-адрес из Access-Request пакета устанавливается в Обработчике процессора протокола, в методе preprocessAccessRequest: request.setOption( InetRadiusProcessor.MAC_ADDRESS, macAddress ). Стандартные обработчики процессора протокола, поставляемые с модулем уже реализуют этот функционал, нужно только прописать в конфигурации устройства или типа устройства: Код: # Вендор атрибута, где хранится MAC-адрес Или:radius.macAddress.vendor=-1 # Код атрибута, где хранится MAC-адрес radius.macAddress.type=31 # Префикс атрибута (если есть), где хранится MAC-адрес. Например, для cisco avpair #radius.macAddress.prefix=client-mac-address= Код: # Вендор атрибута, где хранится MAC-адрес Таким образом, при извлечении MAC-адреса из RADIUS-пакета, он будет сравнен с MAC-адресом изradius.macAddress.vendor=9 # Код атрибута, где хранится MAC-адрес radius.macAddress.type=1 # Префикс атрибута (если есть), где хранится MAC-адрес. Например, для cisco avpair radius.macAddress.prefix=client-mac-address= аутентифицированного сервиса при условии, что в этом сервисе заведен MAC-адрес. Для автоматического привязывания MAC-адреса к сервису в конфигурации модуля/типа сервиса/устройства/типа устройства можно прописать: Код: # Нужно ли автоматически проставлять в сервис MAC-адрес, если его еще нет. Таким образом при первой удачной авторизации MAC-адрес будет привязан к сервису и с другим MAC-адресом# Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса. # 0 - не привязывать, 1 - привязывать, если поле сервиса пустое, 2 - перетирать новым значением, 3 - добавлять # (в последних двух случаях отказа в авторизации по MAC-адресу не будет) serv.macAddress.auto=1 клиент уже не сможет авторизоваться. Аналогично MAC-адресу можно использовать поле Идентификатор сервиса. Например, в качестве идентификатора использовать значение атрибута Calling-Station-Id, устанавливая в Обработчике процессора протокола, в методе preprocessAccessRequest: request.setOption( InetRadiusProcessor.IDENTIFIER, callingStationId ). Для автоматического привязывания идентификатора к сервису в конфигурации модуля/типа сервиса/устройства/типа устройства можно прописать: Код: # Нужно ли автоматически проставлять в сервис идентификатор, если его еще нет. # Можно указать в конфигурации модуля, конфигурации устройства, конфигурации типа сервиса. # 0 - не привязывать, 1 - привязывать, если поле сервиса пустое, 2 - перетирать новым значением, 3 - добавлять # (в последних двух случаях отказа в авторизации по идентификатору не будет) serv.identifier.auto=1 |
Автор: | mhollow [ 29 мар 2017, 17:38 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
Я никак не пойму, что с чем будет сверено? 1)То что содержится в поле идентификатор с тем что можно вытащить через preprocessAccessRequest: request.setOption( InetRadiusProcessor.IDENTIFIER, callingStationId ). из любого атрибута? Например если я руками вобью в поле идентификатор "kissMyAss" то потом могу сверить эту строку со значением любого из атрибутов предварительно установив его через request.setOption() ? 2) При serv.identifier.auto=1 из какого атрибута или еще откуда будет автоматически проставлено значение? Эту "простановку" сделает тот же request.setOption() ? |
Автор: | Amir [ 29 мар 2017, 17:58 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
Если поле Идентификатор не пусто - после предобработки пытается вытащить request.getOption( InetRadiusProcessor.IDENTIFIER ). Если значение не пусто и не совпадает со значением в поле - ошибка авторизации. Если serv.identifier.auto=1 и поле Идентификатор пусто, то значение из request.getOption( InetRadiusProcessor.IDENTIFIER ) (если значение не пусто) подставляется в поле Идентификатор. |
Автор: | mhollow [ 29 мар 2017, 18:25 ] |
Заголовок сообщения: | Re: Справочник коммутаторов и привязка к порту |
Спасибо, О солнцеликие ) Даже я теперь понял.)) И что дальше? Как решается моя задача? Допустим при первом входе, в поле Identificator запишется то, что я выдерну из Calling-Station-ID Пусть это будет IP:порт_ коммутатора например 192.168.0.1:24 И далее будет сверяться и (не) пускаться. Изменить потом эту привязку можно только руками правя поле идентификатор? Справочник хотя бы коммутаторов (порт уж как-нибудь можно выставить в ручную) нельзя прикрутить? Просто монтажник при подключении знает порт, и может его сказать, а вот IP коммутатора он не знает и не видит, и оператор тоже. Хотелось бы выбирать из списка коммутаторов по более мнемоническим именам. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |