forum.bitel.ru http://forum.bitel.ru/ |
|
DHCP always broadcast http://forum.bitel.ru/viewtopic.php?f=44&t=6848 |
Страница 1 из 1 |
Автор: | Zar1n [ 08 июн 2012, 06:53 ] |
Заголовок сообщения: | DHCP always broadcast |
Хотелось бы иметь возможность, выставить бродкаст флаг во всех отправляемых дхцп пакетах принудительно. Аналог опции always-broadcast в isc-dhcp. - Клиент (Windows XP) отправляет запрос без броадкаст флага, через релей агент (Cisco) - Сервер отвечает без броадкаст флага, через релей агент клиенту. - На клиента прилетает offer юникастом, и как следствие игнорируется. P.S Код: To work around some clients that cannot accept IP unicast datagrams before the TCP/IP software is configured as discussed in the previous paragraph, DHCP uses the 'flags' field [21]. The leftmost bit is defined as the BROADCAST (B) flag. The semantics of this flag are discussed in section 4.1 of this document. The remaining bits of the flags field are reserved for future use. They MUST be set to zero by clients and ignored by servers and relay agents. Figure 2 gives the format of the 'flags' field http://tools.ietf.org/html/rfc2131#page-8 |
Автор: | stark [ 08 июн 2012, 13:03 ] |
Заголовок сообщения: | Re: DHCP always broadcast |
так проблема в клиенте . По стандарту он должен ставить этот флаг , а он не ставит , значит хочет получать unicast-ом . |
Автор: | Amir [ 08 июн 2012, 13:10 ] |
Заголовок сообщения: | Re: DHCP always broadcast |
Можете попробовать в классе - обработчике процессора протокола добавить Код: @Override , скомпилировать и нажать Перечитать конфигурацию на серверах.
public void postprocessDhcpRequest( DhcpPacket request, DhcpPacket response ) throws Exception { response.flags |= DhcpPacket.FLAG_BROADCAST; } |
Автор: | Zar1n [ 08 июн 2012, 13:14 ] |
Заголовок сообщения: | Re: DHCP always broadcast |
stark, проблема в винде, разные билды, разные SP, клиентов не заставишь пере устанавливать винду до посинения. На 7ке такой проблемы нет, на висте есть решение в реестре )) когда использовали L2 релей на длинке, флаг ставил коммутатор ![]() Amir, спасибо, попробую завтра. |
Автор: | Amir [ 08 июн 2012, 14:22 ] |
Заголовок сообщения: | Re: DHCP always broadcast |
У нас, похоже, неправильная константа была FLAG_BROADCAST, было 0x4000, нужно (short)(0x8000 & 0xffff). Выложили обновление, добавили параметр конфига dhcp.alwaysBroadcast=1, т.е. можно сделать без изменения класса обработчика процессора протокола. Только не уверены, что это поможет. Проблема только с RENEW запросами? У некоторых так и работает, т.к. на RENEW отвечать не обязательно - просто дожидаемся стадии REBIND, когда уже шлюется броадкастом. В ipn когда-то устанавливали dhcp.serverIdentifier=0.0.0.0, тогда RENEW шлется также броадкастом, вроде бы работало, но недавно при таком параметре на какой-то системе вылез глюк, что система периодически теряет IP-адрес на секунду-две. |
Автор: | Zar1n [ 14 июн 2012, 06:26 ] |
Заголовок сообщения: | Re: DHCP always broadcast |
Amir писал(а): Можете попробовать в классе - обработчике процессора протокола добавить Код: @Override , скомпилировать и нажать Перечитать конфигурацию на серверах.public void postprocessDhcpRequest( DhcpPacket request, DhcpPacket response ) throws Exception { response.flags |= DhcpPacket.FLAG_BROADCAST; } Возможно будет полезно. При попытке манипулировать респонсом. Получаем. Код: dhcp 06-14/11:17:57 ERROR [dhcpLstnr-p-11-t-10] InetAbstractDhcpProcessor - java.lang.NullPointerException at ru.bitel.bgbilling.modules.inet.dyn.device.cisco.ISGProtocolHandler.postprocessDhcpRequest(ISGProtocolHandler.java:382) at ru.bitel.bgbilling.modules.inet.dhcp.InetAbstractDhcpProcessor.processRequest(InetAbstractDhcpProcessor.java:68) at ru.bitel.bgbilling.modules.inet.dhcp.InetAbstractDhcpProcessor.processRequest(InetAbstractDhcpProcessor.java:1) at ru.bitel.bgbilling.kernel.network.dhcp.DhcpListenerWorker.runImpl(DhcpListenerWorker.java:55) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40) Такое ощущение, что в response нечего нет. |
Автор: | Amir [ 14 июн 2012, 13:11 ] |
Заголовок сообщения: | Re: DHCP always broadcast |
Выложили обновление. |
Автор: | Zar1n [ 22 июн 2012, 13:04 ] |
Заголовок сообщения: | Re: DHCP always broadcast |
Работает. Усе окей |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |