Здравствуйте ^_^Стоит у меня DHCP-сервер на FREEBSD-7.0-RELEASE (isc-dhcp3-server, я не обновлял). Я поставил на один из компьютеров в сети винду и линукс вместе (XP и Debian), и с удивлением обнаружил, что когда я вхожу в сеть под линуксом - он не получает тот же адрес что был выдан винде! Он каким-то образом берёт себе другой, от чего от сервера DHCP, апдейтящего BIND, мозги едут!.. Я покопался в /var/db/dhcpd.leases и увидел, что разница между лизами (виндовой и линуксовой) состоит в том что у линуксовой нет пункта uid. Что это вообще такое? Это сервер ему даёт или это клиент запрашивает? И почему линуксу это не положено? (То есть, где можно почитать про это, а то я нигде про эти uid-ы ничего не нашёл, только какие-то непонятные упоминания...)
Выяснил, что оказывается IP выдаются не только по макам, но и по этим вот uid-ам, которые, кажется, опционально могут посылать dhcp-клиенты. dhclient, однако, видимо, не может их посылать, так что если есть необходимость - придётся переходить на другую реализацию, например udhcpc, он может. Остаётся загадкой, как две винды (XP и Vista) придумывают себе одинаковые uid-ы, и как его угадать. Наверное, они делают это для того чтобы получить тот же адрес, если в компьютере заменят сетевую карту... мне пока абсолютно непонятно, зачем нужна такая вещь как эти uid-ы...
Нашёл информацию, что вместо uid-а винда передаёт слово вида 01:11:22:33:44:55:66 (где 11:22:33:44:55:66 - это MAC-адрес). Накопал, что dhclient может передавать uid , для этого в dhclient.conf надо использоватьsend dhcp-client-identifier 01:11:22:33:44:55:66;
Я сделал всё как надо, попробовал... и увидел нечто абсолютно непонятное: на сервере в dhcpd.leases лиза выглядит точно так же как и в винде, вот точно так же, но при этом адрес всё равно выдаётся другой и dhcpd ругается что
uid lease 192.168.1.244 for client 11:22:33:44:55:66 is duplicate on 192.168.1/24
Я начал думать, что такое, как сервер отличил меня от винды. Тогда я вспомнил, что существуют ещё какие-то лизы dhcp-клиента, которые я вообще не понимаю зачем нужны и что делают. Я полез туда, стёр старые лизы, попробовал получить адрес... получил новый, снова с руганью. Тогда я влез в эту лизу и поправил новый адрес на старый, и попробовал получить его снова. Вот теперь всё получилось нормально. Делаем выводы, что всё это значит... Дабы усложнить процесс получения адреса, dhclient хранит у себя выданные ему лизы, и очень хочет снова задействовать именно их, вместо того чтобы слушать что ему скажет сервер. Наверное, это значит что по философии ISC подразумевается что нехорошо тырить лизу выданную другой операционке, если она специально забрала её себе подставив свой uid. Получается, чтобы на одном компе один адрес делили винда и никсы, надо:
1) Добавить в dhclietn.conf строку send dhcp-client-identifier 01:11:22:33:44:55:66;
2) Удалить старые dhclient.leases , получить новую и поправить там IP на тот который был выдан винде.Однако, остаётся проблема - если лизы устареют и будет выдан новый адрес, то придётся проделывать это снова. Ох, если бы можно было как-нибудь указать винде не выдрючиваться и получать IP-адрес безо всяких uid-ов, как положено... Гораздо лучшее решение - просто выдать никсе другое имя, как будто это другой комп, и тогда не будет проблем со связкой DHCP+DNS на сервере.
Может быть, кому-нибудь поможет найти эти мои исследования в архиве форума...
>[оверквотинг удален]
>тот который был выдан винде.
>
>Однако, остаётся проблема - если лизы устареют и будет выдан новый адрес,
>то придётся проделывать это снова. Ох, если бы можно было как-нибудь
>указать винде не выдрючиваться и получать IP-адрес безо всяких uid-ов, как
>положено... Гораздо лучшее решение - просто выдать никсе другое имя, как
>будто это другой комп, и тогда не будет проблем со связкой
>DHCP+DNS на сервере.
>
>Может быть, кому-нибудь поможет найти эти мои исследования в архиве форума...исследование интересное, вы хотите эту проблему решить на стороне клиента, почему не отдавать IP-адрес с DHCP по мак-адресу?
То есть, всё-таки можно сделать чтобы он не обращая внимания на эти uid-ы раздавал IP только по макам?! Как?! ))) Я думал, оно всегда так и делается, и хорош если это возможно, но где найти указание как это сделать?..
>То есть, всё-таки можно сделать чтобы он не обращая внимания на эти
>uid-ы раздавал IP только по макам?! Как?! ))) Я думал, оно
>всегда так и делается, и хорош если это возможно, но где
>найти указание как это сделать?..host Master5 {
hardware ethernet 00:0D:87:2E:B0:B5;
fixed-address 10.10.0.15;
}
>host Master5 {
> hardware ethernet 00:0D:87:2E:B0:B5;
> fixed-address 10.10.0.15;
> }Неее, я не хочу выдавать каждому хосту привязку лично! Я хочу чтобы просто те кто из динамического пула получает адреса - получали их на основе маков, а не uid-ов и только если их нет то потом уже маков...
Если не секрет, а зачем именно ТАК?
Чем не подходит либо привязка клиента по маку к ИП
либо выдавать произвольные ИП из списка?
Для чего усложнять?>>host Master5 {
>> hardware ethernet 00:0D:87:2E:B0:B5;
>> fixed-address 10.10.0.15;
>> }
>
>Неее, я не хочу выдавать каждому хосту привязку лично! Я хочу чтобы
>просто те кто из динамического пула получает адреса - получали их
>на основе маков, а не uid-ов и только если их нет
>то потом уже маков...
>Если не секрет, а зачем именно ТАК?
>Чем не подходит либо привязка клиента по маку к ИП
>либо выдавать произвольные ИП из списка?
>Для чего усложнять?DHCP нужен для того чтобы каждый комп, втыкаемый в сеть, получал адрес без участия админа. То есть, я не хочу каждый раз когда втыкаю новый комп - писать ему собственноручно привязку. И при этом я хочу чтобы вне зависимости от того какую операционку на этом компе запускают - он всегда получал один и тот же адрес, на который форвардится одно и то же его доменное имя. Иначе начинаются проблемы с тем что - запускаешь другую операционку, компу, естественно, даёшь то же самое имя, потому что это имя компьютера, а не операционки, а это не может в динамическом DNS-е поменяться потому что DHCP говорит - да только что совсем другой комп с этим именем был! не дам в обиду честно занятое чужое имя!