다음을 사용하도록 NixOS를 설정했습니다 systemd-networkd
.
systemd.network.enable = true;
내 인터페이스 구성은 다음과 같습니다.
networking {
interfaces.enp5s0f0np0.useDHCP = true;
interfaces.enp5s0f1np1.macAddress = cfg.myMacAddress;
interfaces.enp5s0f1np1.ipv6.addresses = [ {
address = "fd00:cafe::1";
prefixLength = 64;
}];
};
이제 에 대해 DHCPv4
수정하고 싶습니다 clientIdentifier
(궁극적으로 내 DHCP 서버에 해당 MAC
주소가 필요하고 clientID
고정 IP를 제공하려면 다음과 같이 할 수 있습니다).
systemd.network.networks."40-enp5s0f1np1" = {
dhcpV4Config.ClientIdentifier = "duid";
dhcpV4Config.DUIDType = "vendor";
dhcpV4Config.IAID = <something>;
};
clientIdentifier
본질적으로 ( duid
) 및 ( ) 의 DUIDType
현재 기본값입니다 vendor
. IAID
필요한 형식을 이해하고 나면 형식을 설정할 수 있습니다.
그러나 요청 에서 얻은 기본값이 어떻게 형성되는지 IAID
이해할 수 있도록 기본값이 어떻게 생성되는지 파악하고 싶습니다 .DUID
DHCPv4
아이디어는 내 NixOS 구성에 정확한 양의 세부 정보가 포함되어 있는지 확인하는 것입니다. 이제 기본값을 사용할 수 있지만 DUID
재부팅 후에도 지속되는지는 모르겠습니다...
답변1
DHCPv4에 대해 선택한 경우 ClientIdentifier=duid
생성된 DHCPv4 클라이언트 식별자는 0xFF(유형=DUID) + 4바이트 IAID + DHCPv6 DUID(에 따라 다름 DUIDType=
).
기본 systemd-networkd "공급업체" DHCPv6 DUID는 다음을 기반으로 합니다.해시 값/etc/machine-id
. 바라보다man networkd.conf
사용 가능한 다른 DUID 유형의 경우.
IAID의 형식은 동일한 DUID를 가진 여러 IA를 구별하는 데 사용되는 32비트 정수입니다. 사용자 정의 IAID가 제공되지 않으면 systemd-networkd는 알려진 경우 인터페이스의 "예측 가능한" 이름을 해싱하거나(현재 활성 이름이 아니더라도) MAC 주소를 해싱하여 안정적인 IAID를 생성합니다.
networkctl status eth0
DHCPv4 클라이언트 ID와 DHCPv6 DUID가 표시됩니다.
클라이언트 식별자의 바이트 형식 duid
은 다음과 같이 정의됩니다.RFC 4361:
ClientIdentifier=duid
DUIDType=공급업체
DHCPv4 클라이언트 ID = ff:5d:e2:6c:15:0:2:0:0:ab:11:f9:f9:80:f7:f7:20:2c:f5 |---|------------|--------- ------------- ---| 클라이언트 ID 유형 = ff (255 =DHCPv6 IAID+DUID) DHCPv6 IAID = 5d:e2:6c:15 ("enp2s0"의 시파시?) DHCPv6 DUID = 0:2:0:0:ab:11:f9:f9:80:f7:f7:20:2c:f5 |---|---------|------------| DHCPv6 DUID 유형 = 0:2 (2 =두인) DUID-EN 공급업체= 0:0:ab:11 (43793 =체계) DUID-EN 데이터 = f9:f9:80:f7:f7:20:2c:f5
ClientIdentifier=mac
MAC 주소는 정적이므로 항상 접두사가 0x01(유형 = 이더넷)인 MAC 주소만 포함하므로 사용하기가 훨씬 간단합니다 . 이는 아래와 같이 대부분의 다른 DHCPv4 클라이언트(예: dhclient 또는 Windows)에서 보낸 레거시 ID 유형입니다.
client_id=mac
DHCPv4 클라이언트 ID = 1:4e:c8:ac:b7:d8:4e |-|----------------| 클라이언트 ID 유형= 1 (1 =이더넷) 하드웨어 주소 = 4e:c8:ac:b7:d8:4e
마찬가지로 DHCPv6을 사용할 수 있습니다 DUIDType=link-layer
.
DUIDType=링크 레이어
DHCPv6 DUID = 0:3:0:1:4e:c8:ac:b7:d8:4e |---|---|------| DUID 유형 = 0:3 (3 =DUID-LL) 링크 유형 = 0:1 (1 =이더넷) LL 주소 = 4e:c8:ac:b7:d8:4e
(이론적으로는 ClientIdentifier=duid
와 함께 사용할 수 있지만 DUIDType=link-layer
이는 약간 중복되며 대부분의 DHCP 서버가 더 나은 지원을 제공합니다 ClientIdentifier=mac
.)