У меня есть машина с установленной на диске CoreOS 1800 (или 1855) и следующей systemd-networkd config (в машине только один сетевой интерфейс):
$ cat /etc/systemd/network/zz-default.network
[Network]
DHCP=yes
[DHCP]
ClientIdentifier=mac
UseMTU=true
UseDomains=true
Еще одна примечательная вещь - это то, что на этой машине также настроена загрузка PXE, но PXE-сервер отклонит загрузку, поэтому я, наконец, загрузлюсь с диска.
Когда я перезапущу машину, для нее будет выделено два IP-адреса DHCPЯ подтвердил это, проверив / var / lib / dhcpd.leases на DHCP-сервере:
lease 100.79.223.152 {
starts 5 2018/09/28 02:34:00; ends 6 2018/09/29 02:33:59; tstp 6 2018/09/29 02:33:59; cltt 5 2018/09/28 02:34:00;
binding state active; next binding state free; rewind binding state free;
hardware ethernet 08:9e:01:d9:28:64;
option agent.circuit-id 0:5:8:b9:1:0:29;
}
lease 100.79.223.150 {
starts 5 2018/09/28 02:34:29; ends 6 2018/09/29 02:34:28; tstp 6 2018/09/29 02:34:28; cltt 5 2018/09/28 02:34:29;
binding state active; next binding state free; rewind binding state free;
hardware ethernet 08:9e:01:d9:28:64; uid "001010236001331(d";
option agent.circuit-id 0:5:8:b9:1:0:29;
}
- Запись аренды 100.79.223.152 запрашивается загрузчиком PXE, хотяотклонено сервером DHCP.
- Запись аренды 100.79.223.150 запрашивается системой systemd-networkd CoreOS.(Я могу подтвердить это, запустив
systemctl restart
systemd-networkd
и посмотрев файл аренды)
Все выглядит нормально, но запись аренды PXE 100.79.223.152 вызывает другую проблему (когда PXE действительно загружает машину и развертывает другуюОС, тогда он получит 100.79.223.152 вместо 150, затем вызовет другую частную проблему).
Если я установлю другую ОС, которая не использует systemd-networkd, то перезагрузка вызовет только 1 запись аренды.
Вы можете видеть, что аренда 100.79.223.150 имеет поле uid "001010236001331 (d"), что означает, что позволяет DHCP-серверу назначать IP по uid (идентификатору клиента), в настоящее время это фактически то же содержимое, что и по MAC-адресу, простобыть напечатано как октет.
Это основная причина двух IP-адресов.
Чтобы избежать этой проблемы двух IP, я попытался установить deny duplicates
в / etc / dhcp/dhcpd.conf в DHCP-сервере, но ничего не меняется.
Я бродил, что если можно сказать systemd-networkd не отправлять uid (идентификатор клиента). Согласно source ofSystemd , он намеренно реализован так, чтобы «всегда отправлять идентификатор клиента»,
при таком условии, как я могу предотвратить отправку идентификатора клиента systemd-networkd?
РЕДАКТИРОВАТЬ 2019/02/17: я обнаружил, что неправильно понял значение deny duplicates
, это не помогает этой проблеме.
Я вспомнил, что сначала проверял другой вариант, но он не работает.
ignore-client-uids on;
оператор ignore-client-uids
флаг ignore-client-uids;
Если присутствует оператор ignore-client-uids иимеет значение true или on, UID для клиентов не будет записываться.Если этот оператор отсутствует или имеет значение false или выключен, то клиентские UID будут записаны.
https://www.isc.org/wp-content/uploads/2017/08/dhcp43.html
Версия сервера DHCP isc-dhcpd-4.2.4
РЕДАКТИРОВАТЬ 2019-03-12: Я ошибся и что-то нашел, поэтому сам ответил на этот вопрос.Простой ответ: ignore-client-uids true;
на стороне сервера работает хорошо, ClientIdentifier=mac
на стороне клиента не работает хорошо.