client - 如何防止 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/ dhcpd.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,但被 DHCP 服务器拒绝。
- 租约记录 100.79.223.150 是由 CoreOS 的 systemd-networkd 请求的。(我可以通过运行
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服务器通过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
在客户端运行良好。
解决方案
您是否尝试将客户端标识符设置为(空)?
$ cat /etc/systemd/network/zz-default.network
[Network]
DHCP=yes
[DHCP]
ClientIdentifier=
UseMTU=true
UseDomains=true
推荐阅读
- android - Android:左侧的菜单项
- python - 如何将字符串切成单词的子字符串并递归地附加到列表中?
- javascript - 无法使用 Gulp Spritesmith 更改最终精灵
- r - 如何在 tibble 中查看特定单元格的内容?
- c - CMake:每个目标都有不同的 configure_file()
- c - 如何在 C 中用逗号输入货币?
- javascript - WebdriverIO 自定义报告器 - 类型错误:无法读取未定义的属性“写入”/“完成”
- kotlin - 一起使用 arrow-kt Either、Option 和 RxJava 的困难
- r - 选择具有正则化、空间交叉验证和有界预测的预测模型
- javascript - 嵌套对象数组上的 D3 组