forum.bitel.ru http://forum.bitel.ru/ |
|
Непонятная ошибка шлюза DHCP http://forum.bitel.ru/viewtopic.php?f=7&t=4880 |
Страница 1 из 1 |
Автор: | borisk [ 08 дек 2010, 21:01 ] |
Заголовок сообщения: | Непонятная ошибка шлюза DHCP |
Добрый день! Есть следующая связка шлюзов Zyxel -> Cisco2 -> DHCP Zyxel определен как: Код: user_rule.editor.class=bitel.billing.module.services.ipn.editor.vlan.CiscoSSHSwitchRuleEditor gate_manager.class=bitel.billing.server.ipn.vlan.CiscoSSHSwitchGateWorker use.script=1 Скрипт пустой Cisco2 определен как: Код: gate_manager.class=bitel.billing.server.ipn.vlan.CiscoVlanParentGateWorker use.script=1 Скрипт пустой Шлюз DHCP определен как: Код: user_rule.editor.class=bitel.billing.module.services.ipn.editor.EmptyContractRuleEditor gate_manager.class=bitel.billing.server.ipn.DHCPGateWorker В договоре на шлюзе определяю соответствие ip mac port 10.128.17.1 4 00-90-27-59-95-E7 Сервер DHCP пробовал определять и как Код: processor.class=bitel.billing.server.ext.dhcp.DHCPRelayProcessor и как processor.class=bitel.billing.server.ext.dhcp.DHCPVlanRelayProcessor #Номер субопции в Option 82, в которой хранится vlan клиента(нумерация с 1) dhcp.82.key.option.code=1 #Позиция(номер байта) внутри субопции, в которой хранится vlan клиента(нумерация с 0). dhcp.82.key.position=2 (5 тоже ставил) при открытии/закрытии шлюза в логах DHCPD вот такая ошибка: DEBUG 08.12.2010 19:54:53,975 Thread-7 admin command DEBUG 08.12.2010 19:54:53,977 Thread-7 set gate 61 127.0.0.1 INFO 08.12.2010 19:54:53,979 Thread-7 setGatePortMacIp: gateId = 61;port=-1;adress=10.128.17.1;mac=00 90 27 59 95 E7 WARN 08.12.2010 19:54:53,979 Thread-7 Bad port or ip to gateId or mac=61 Клиент: вер. 5.1 сборка 432 от 30.11.2010 20:27:37 os:Windows XP; java:Sun Microsystems Inc., v.1.6.0_22 Сервер: вер. 5.1 сборка 544 от 30.11.2010 20:27:27 os:FreeBSD; java:Sun Microsystems Inc., v.1.6.0 bill вер. 5.1 сборка 220 от 03.12.2010 19:00:21 card вер. 5.1 сборка 153 от 08.11.2010 11:30:50 dialup вер. 5.1 сборка 163 от 03.12.2010 17:27:16 email вер. 5.1 сборка 148 от 29.09.2010 13:00:35 ipn вер. 5.1 сборка 213 от 29.11.2010 19:07:45 npay вер. 5.1 сборка 166 от 24.11.2010 19:21:13 phone вер. 5.1 сборка 222 от 01.12.2010 11:46:09 reports вер. 5.1 сборка 162 от 29.09.2010 13:00:39 ru.bitel.bgbilling.plugins.documents вер. 5.1 сборка 116 от 29.09.2010 13:01:09 voiceip вер. 5.1 сборка 152 от 03.12.2010 17:27:32 BGDHCP_IPN 5.1_137 |
Автор: | borisk [ 11 дек 2010, 11:59 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
Up. Пожалуйста, горит. |
Автор: | borisk [ 15 дек 2010, 13:45 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
up, пожалуйста |
Автор: | borisk [ 20 дек 2010, 11:42 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
up |
Автор: | mrustik [ 23 дек 2010, 20:00 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
у тебя не определен похоже port, у меня нет значения -1 |
Автор: | borisk [ 23 дек 2010, 21:14 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
port чего? DHCP сервера? Определен. Но мне кажется что это порт клиента имеется в виду. |
Автор: | mrustik [ 24 дек 2010, 10:54 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
Все правильно, порт клиента, он прописан в дшсп, его посылает в пакете свич |
Автор: | borisk [ 24 дек 2010, 13:41 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
Хорошо. Но есть, допустим, такая вот связка шлюзов: DHCP -> Cisco2 -> Zyxel где можно посмотреть реализацию этих шлюзов, чтобы понять как шлюз Zyxel сообщает наверх данные о портах? Вот ни где этой информации не нашел. То бишь как шлюз DHCP отправляет данные серверу - понятно, а вот как шлюз Zyxel отправляет данные шлюзу DHCP не понятно. |
Автор: | mrustik [ 26 дек 2010, 00:09 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
Что конкретно не понятно? В настройках шлюза указывается ip адрес клиента, порт, mac адрес и все это привязывается к шлюзу. Вот реализация шлюза для в.4.6 Код: /------- шлюз BGDHCP---------
setDHCP( DHCP, gateSetup ) { Socket socket = null; socket = new Socket( DHCP.get("dhcp.ip"), DHCP.get("dhcp.port") ); InputStreamReader isr = new InputStreamReader( socket.getInputStream() ); BufferedReader in = new BufferedReader( isr ); ToXMLStream stream = new ToXMLStream(); stream.setOutputStream( socket.getOutputStream() ); stream.setEncoding( "UTF-8"); stream.startDocument(); stream.startElement( "sync" ); stream.addAttribute( "type", "dhcp" ); stream.startElement( "gate" ); stream.addAttribute( "id", String.valueOf( DHCP.get("gateId")) ); stream.addAttribute( "host", DHCP.get("Relay") ); 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" ); id = DHCP.get("id"); 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; } //log.info("ip["+i+"]= " + Hex_ip.toUpperCase()); 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") ); /*log.info("id["+i+"] = " + id[i]); log.info("ip["+i+"]= " + ip[i]); log.info("ip["+i+"]= " + Hex_ip.toUpperCase()); */ } //-------BGDHCP--------- stream.flushPending(); stream.getWriter().flush(); stream.endElement( "sync" ); stream.endDocument(); stream.getWriter().flush(); if( socket != null ) { try { socket.close(); } catch (Exception e) {} } //-------BGDHCP--------- } |
Автор: | borisk [ 26 дек 2010, 19:52 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
Я понял как сделано в вашей реализации. В фирменной же, похоже сделано через parentSync. Но для 5.1 отсутствует часть документации на API, потому и непонятно. |
Автор: | mrustik [ 27 дек 2010, 13:21 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
В доке 5.1 написано, как и в 4.6: Цитата: Должна быть обязательно реализована функция doSync() - именно она и отвечает за взаимодействие со шлюзом. Вот минимальный код шлюза: protected void doSync() { } Также дополнительно может быть определена дополнительная функция синхронизации со шлюзом предком. Она определяется у шлюза предка и вызывается потомком перед вызовом doSync(). protected void parentSync( Gate child, GateWorker childWorker) { } где child - объект типа bitel.billing.server.ipn.bean.Gate, представляющий шлюз , который вызывал этот метод. childWorker - объект типа bitel.billing.server.ipn.GateWorker, представляющий шлюз , который вызывал этот метод. В скрипт передаются такие переменные: con — объект java.sql.Connection для соединения с БД. gate — объект bitel.billing.server.ipn.bean.Gate. ruleTypeMap — объект java.util.Map<Integer, bitel.billing.server.ipn.bean.RuleType>. В нем содержаться все типы правил из БД. Ключ — id правила. gateTypeMap — объект java.util.Map<Integer, bitel.billing.server.ipn.bean.GateType> gateTypeMap. В нем содержаться все типы шлюзов из БД. Ключ — id типа шлюза. Log — объект org.apache.log4j.Logger. Для вывода сообщений , ошибок шлюза. StatusList — объект List<bitel.billing.server.ipn.UserStatus> statusList. В нем содержаться статусы пользователей, которые синхронизируются на данном шлюзе. Ключ — id статуса. GateErrors — объект java.lang.StringBuilder, содержащий ошибки выполнения шлюза. mid — int, код модуля. worker - объект типа GateWorker, обработчтик логики работы со шлюзом , который вызвал этот скрипт. Примеры шлюзов и реализация большинства стандартных шлюзов есть на WiKi. Для оптимизации работы скомпилированных шлюзов нужно поставить в конфигурацию модуля IPN: gate.cache.script=1 Это опция кеширования скомпилированных типов шлюзов чтобы они каждый раз не компилировались при запуске синхронизации шлюза. Эту опцию нужно убирать на время отладки, если нужно менять скрипт шлюза . В стандартной связке создается шлюз DHCP, затем создается шлюз Cisco2 потомок DHCP, а уже потом создается шлюз Switch потомок Cisco2. Поэтому и вызывается parentSync. |
Автор: | borisk [ 27 дек 2010, 13:40 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
Угу, а класс bitel.billing.server.ipn.GateWorker в 5.1 отсутствует. |
Автор: | mrustik [ 27 дек 2010, 16:31 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
Это к разработчикам, когда я начал использовать скриптовый DHCP шлюз, оказалось, что там были ошибки, подправили. Может тоже есть баг, или не подправили в доке. Мне это предстоит проходить после нового года. Может дожмешь до этого времени. |
Автор: | stark [ 28 дек 2010, 12:13 ] |
Заголовок сообщения: | Re: Непонятная ошибка шлюза DHCP |
borisk писал(а): Угу, а класс bitel.billing.server.ipn.GateWorker в 5.1 отсутствует. как так ? . Класс есть . Его нет в javadoc, добавил для 5.1. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |