Странно, что я не наступил на них раньше.
Допустим, есть Linux-овый DHCP-клиент (ISC DHCP 4.4.1) и виндовый DHCP-сервер (Windows 2016). Если просто так взять и оформить резервирование IPv4-адреса на стороне сервера на основании MAC-а клиента, то может внезапно выясниться, что работать оно не будет.
Причина в том, что Linux чётко соответствует
RFC4361, а вот у винды на этот счет имеются некоторые вопросы. Если кратко, то по умолчанию ISC DHCP в качестве идентификатора клиента (IA) шлёт строку "IAID+DUID", которая для IPv4 имеет длину 36 символов. А вот винда ожидает услышать один только DUID длиной 12 символов. Из-за этого совпадение идентификаторов никогда не будет достигнуто. Соответственно, клиент получит адрес не из резервации, а из общего пула.
Решения может быть два.
- На строне Windows прописывать 36-символьный идентификатор клиента полностью.
- На стороне Linux в конфигах DHCP-клиента явно указать "send dhcp-client-identifier = hardware;".