BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 27 апр 2024, 16:26

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 08 дек 2010, 15:42 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Добрый день!

Долго читал документацию по BgDHCP, но что-то запутался. Помогите расставить все на свои места. Задача в общем то тривиальная - авторизовать клиентов по Opt.82 и выдавать им адреса на основе привязки switch:port:mac. Свитчи - 3Com2920. Для их отображения в системе был сделан фиктивный тип шлюза MAC_STORAGE (который хранит исключительно нужные привязки ip:port:mac) с вот такой вот конфигурацией:
user_rule.editor.class=bitel.billing.module.services.ipn.editor.vlan.CiscoSSHSwitchRuleEditor
gate_manager.class=bitel.billing.server.ipn.vlan.CiscoSSHSwitchGateWorker
use.script=1

Теперь хочется увязать все это дело с DHCP сервером от BG. Вроде понятно, что надо поставить сервер, настроить шлюз DHCP и сделать мои шлюзы дочерними по отношению к нему. Но вот тут впал в ступор. Дело в том, что коммутаторы передают agent id в виде mac адреса, а в BG (если я правильно понял) используется ip? Как быть. Может что не дочитал - ткните носом пожалуйста.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 23 дек 2010, 17:59 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Нужно смотреть настройки свича, у некоторых есть возможность выбирать или редактировать этот параметр, или в дшсп ставить вместо ip адреса mac адрес в agent id


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 дек 2010, 13:59 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Я пишу свой шлюз dhcp, какое поле является agentid? dhcp.agentid или все же dhcp.gateId?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 2010, 00:29 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Установка параметров для шлюза свича
Код:
     stream.startElement( "gate" );
     stream.addAttribute( "id", String.valueOf( DHCP.get("gateId")) );
     stream.addAttribute( "host", DHCP.get("Relay") );   // ip - адрес свича
     ParamDHCP(stream, "dhcp.router", gateSetup);
     ParamDHCP(stream, "dhcp.subnetMask", gateSetup);
     ParamDHCP(stream, "dhcp.dns", gateSetup);
     ParamDHCP(stream, "dhcp.ipAddressLeaseTime", gateSetup);
     ParamDHCP(stream, "dhcp.timeOffset", gateSetup);
     ParamDHCP(stream, "dhcp.option.121", gateSetup);
     ParamDHCP(stream, "dhcp.option.249", gateSetup);
     stream.endElement( "gate" );

ParamDHCP(stream, paramStr, gateSetup)
{
      param = gateSetup.getStringValue( paramStr, null );
      if (param != null){
           stream.startElement( "param" );
         stream.addAttribute( "id", paramStr );   
         stream.addAttribute( "value", param );   
           stream.endElement( "param" );
      }
}

Привязка к шлюзу ip адреса и порта клиента
Код:
     ip = DHCP.get("ip").split(",");
      for (int i = 0; i < id.length; i++)
      {
         stream.startElement( DHCP.get("start") );
         stream.addAttribute( "gateId", DHCP.get("gateId") );
         stream.addAttribute( "id", String.valueOf( id[i] ) );
         ip[i] = ip[i].substring(0 , 9);
         Hex_ip = Integer.toHexString(Integer.parseInt(ip[i]));
         if(Hex_ip.length() < 8){
            Hex_ip = "0" + Hex_ip;
         }
         Hex_ip   = Hex_ip.substring(0,2) + " " + Hex_ip.substring(2,4) + " " +Hex_ip.substring(4,6) + " " +
                  Hex_ip.substring(6,8);
           stream.addAttribute( "ip", Hex_ip.toUpperCase() );                           
           stream.endElement( DHCP.get("start") );
    }

Нужно в свиче посмотреть, что передает он в качестве agentid. Лучше снифером посмотреть что находится в пакете на запрос адреса.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 2010, 19:49 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Спасибо! У меня схема такая, коммутаторы работают в режиме dhcp snooping и исключительно добавляют Opt.82. Далее это все идет на relay, в качестве которого выступает Cisco ME3400. Она эту Opt.82 не трогает, и пропускает прозрачно. В результате до сервера доходит оригинальный набор opt.82, где в качестве agent id стоит MAC адрес клиентского коммутатора. К сожалению коммутаторы довольно туповаты, и нет возможности изменить формат agent id. Вот я и ищу возможность подсунуть BGDHCPD вместо IP коммутатора его MAC.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 дек 2010, 13:59 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Подсунуть не проблема вместо ip адреса mac, только тогда нужно будет к разработчикам обращаться, чтобы поиск по нему осуществляли. Хотя нужно попробовать, может и так все нормально будет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 дек 2010, 16:28 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Попробуй заполнить файл dhcp.data в BGDHCP, как тебе надо, вместо host=ip address, поставь mac, запусти DHCP сервер, попробуй получить адрес и посмотри в логах чего пишет, а потом уже можно писать свой скрипт, как тебе надо.
Код:
<?xml version="1.0" encoding="UTF-8"?><sync><gate id="79" host="10.38.6.216"></gate>
<port gateId="79" id="1179" ip="0A 26 92 D8"/><port gateId="79" id="1239" ip="0A 26 C4 D8"/>
<port gateId="79" id="1170" ip="0A 26 7E D8"/><port gateId="79" id="1171" ip="0A 26 88 D8"/>
<port gateId="79" id="1278" ip="0A 26 EC D8"/><port gateId="79" id="1108" ip="0A 26 24 D8"/>
<port gateId="79" id="1164" ip="0A 26 74 D8"/></sync>

gate id="79" id шлюза в базе
port gateId="79" id="1179" в зависимости, что стоит в конфиге dhcp.82.key.option.code=1 - влан, 2 порт


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.504s | 32 Queries | GZIP : On ]