一些背景信息:
我在 W10 和 Ubuntu 之间双启动我的桌面。(W10 用于游戏,Ubuntu 用于工作)
我有一个完全正常工作的 IPv6 设置,以 pfSense 作为边缘路由器。
DHCPv6 服务器配置为始终向 W10 操作系统分发相同的 IPv6 地址。这样做是为了允许 DNS 将 DHCPv6 分配的 IP 解析为主机名。
目前,Ubuntu 操作系统总是收到不同的 IP,因为它使用不同的 IAID 和 DUID 从服务器请求其 IP。
本质上,我想更改 Ubuntu 安装的 DUID/IAID 以匹配 W10 使用的字符串。
我修改了 NetworkManager 的连接配置(添加了最后两行),但显然这还不够:
rsq@beast:~$ sudo cat '/etc/NetworkManager/system-connections/Wired connection 1'
[connection]
id=Wired connection 1
uuid=a1e627b4-680c-3fbb-b4a4-b487c5a0a504
type=ethernet
autoconnect-priority=-999
permissions=
timestamp=1577458590
[ethernet]
mac-address=18:31:BF:6D:0E:24
mac-address-blacklist=
[ipv4]
dns-search=
method=auto
[ipv6]
addr-gen-mode=stable-privacy
dns-search=
ip6-privacy=0
method=auto
dhcp-duid=00:01:00:01:23:01:a6:ec:18:31:bf:6d:0e:24
dhcp-iaid=85471679
我对这个问题进行了广泛的搜索,但得到的资料很少。
所以本质上,我的问题是:Ubuntu 系统如何生成 DUID?哪些设置控制 DUID 生成过程?DUID 设置保存在哪里?它可以被覆盖吗?
感谢大家对此事的意见!谨致问候,Erik
答案1
因为它使用不同的 IAID 和 DUID 向服务器请求其 IP。
DUID 最初来自
/etc/machine-id
并在安装时创建一次。请注意,我们现在使用systemd
它作为额外的搜索参数来过滤非systemd
答案。
重要文件:
/etc/systemd/networkd.conf
其中有一部分与 DUID 的创建相关:
如果
DUIDType=vendor
,则将使用“43793”作为供应商标识符(systemd)和 machine-id(5) 的哈希内容生成 DUID 值。如果DUIDType=
未指定,则这是默认值。
关于 IAID:
[DHCP] 部分选项
本节配置 DHCP 协议使用的 DHCP 唯一标识符 (DUID) 值。DHCPv6 客户端协议在获取动态 IPv6 地址时将 DHCP 唯一标识符和接口身份关联标识符 (IAID) 发送到 DHCP 服务器。如果 ClientIdentifier=duid,DHCPv4 客户端协议在获取动态 IPv4 地址时将 IAID 和 DUID 发送到 DHCP 服务器。IAID 和 DUID 允许 DHCP 服务器唯一地标识请求 DHCP IP 的机器和接口。要配置 IAID 和 ClientIdentifier,请参阅systemd.网络(5)。
要设置IAID
,DUID
您需要:
DUID类型=
覆盖此网络的全局 DUIDType 设置。请参阅networkd.conf(5)了解可能值的描述。
DUIDRawData=
覆盖此网络的全局 DUIDRawData 设置。请参阅networkd.conf(5)了解可能值的描述。
IAID=
接口的 DHCP 身份关联标识符 (IAID),一个 32 位无符号整数。
示例来自网络配置文件为了DUID
:
示例 1.
DUIDType=vendor
具有自定义值的ADUIDType=vendor DUIDRawData=00:00:ab:11:f9:2a:c2:77:29:f9:5c:00
这指定了一个 14 字节的 DUID,其类型为 DUID-EN(“00:02”)、企业编号为 43793(“00:00:ab:11”),标识符值为“f9:2a:c2:77:29:f9:5c:00”。