首页 > 解决方案 > 如何防止 systemd-networkd 发送客户端标识符?

问题描述

我有一台在磁盘上安装了 CoreOS 1800(或 1855)的机器,并具有以下systemd-networkd 配置(机器中只有一个网络接口):

$ cat /etc/systemd/network/zz-default.network
[Network]
DHCP=yes

[DHCP]
ClientIdentifier=mac
UseMTU=true
UseDomains=true

另一个值得注意的是,这台机器也配置了 PXE 引导,但 PXE 服务器会拒绝引导,因此它最终会从磁盘引导。

当我重新启动机器时,将为其分配两个 DHCP IP,我通过检查DHCP 服务器中的 /var/lib/ dh​​cpd.leases确认它:

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;
}

一切似乎都很好,但是 PXE 租约记录 100.79.223.152 会导致其他问题(当真正 PXE 启动机器并为其部署另一个操作系统时,它将获得 100.79.223.152 而不是 150,然后导致其他私人问题)。

如果我安装了其他不使用 systemd-networkd 的操作系统,那么重启只会导致 1 个租约记录。

可以看到租约100.79.223.150有一个字段uid“001010236001331(d”),意思是让DHCP服务器通过uid(client identifier)来分配IP,目前其实就是mac地址的内容,只是打印成八位字节。

这是两个IP的根本原因。

为了防止这两个 IP 问题,我尝试在 DHCP 服务器deny duplicates/etc/dhcp/dhcpd.conf中进行设置,但没有任何变化。

我在想是否可以告诉 systemd-networkd 不要发送 uid(客户端标识符)。根据systemd 的来源,有意实现“始终发送客户端标识符”,

鉴于这种情况,如何防止 systemd-networkd 发送客户端标识符?

编辑 2019/02/17:我发现我误解了 的含义deny duplicates,它对这个问题没有帮助。

我记得我曾经首先测试过另一个选项但不起作用。

ignore-client-uids on;

忽略客户端 uids 语句

忽略客户端 uids 标志;

如果存在 ignore-client-uids 语句并且值为 true 或 on,则不会记录客户端的 UID。如果此语句不存在或值为 false 或 off,则将记录客户端 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在客户端运行良好。

标签: clientsystemdidentifierdhcpcoreos

解决方案


您是否尝试将客户端标识符设置为(空)?

$ cat /etc/systemd/network/zz-default.network
[Network]
DHCP=yes

[DHCP]
ClientIdentifier=
UseMTU=true
UseDomains=true

推荐阅读