Negar o contrato não funcionará. Não há como o networkd saber por que está sendo negado, então ele não irá magicamente mudar para um tipo de ID diferente se você o fizer. Você tem que fazer isso manualmente.
Se a sua versão do systemd for recente o suficiente e você tiver controle direto sobre os arquivos de configuração gravados pelo cloud-init, será possível dizer ao systemd-networkd para enviar um ID de cliente baseado no endereço MAC através do arquivo *.network
:
[DHCP]
ClientIdentifier=mac
Mas se você sabe que systemd-networkd será sempre usado, você pode simplesmente atribuir a concessão correta à ID de cliente 032e827c00020000ab11d0fc617dced58a43
, porque é isso que systemd-networkd sempre enviará para aquela máquina. (Ele gera o ID com base em /etc/machine-id
.)
Os clientes do Mos DHCP, incluindo o dhclient, fornecem um campo de ID do cliente do tipo '01' (baseado em MAC). Outro tipo comum é '00' (nome de domínio). No entanto, por padrão, o systemd-networkd fornece um ID de cliente "opaco" que foi gerado a partir do conteúdo de / etc / machine-id.
De acordo com o protocolo DHCP, as concessões são escolhidas pelo ID do cliente primeiro (desde que o cliente forneça uma opção de "ID do cliente", que pode ou não ser baseado em MAC), o endereço MAC somente se o cliente não enviou um ID.
Portanto, quando você está configurando uma reserva, todos os bons servidores DHCP permitem que você insira o ID do cliente ou o endereço MAC. Se você digitar apenas o endereço MAC, suponho que um ID de cliente do tipo '01 '(baseado em MAC) seja automaticamente implícito. Pode haver uma caixa de seleção chamada "Ignorar ID do cliente", que é conveniente para você, mas viola tecnicamente a especificação do DHCP.
(Por exemplo, tenho dois adaptadores Wi-Fi com diferentes MACs, mas configurei o sistema operacional para enviar o mesmo ID de cliente, independentemente do adaptador conectado. Dessa forma, recebo o mesmo endereço por meio de ambos).