내 임베디드 시스템은 systemd를 사용하고 DHCP를 통해 IP 주소를 얻습니다. 임대 시간이 준수되면 DHCP 서버는 임대 시간을 사용하여 네트워크의 모든 컴퓨터에 동일한 IP 고유 주소를 제공합니다.
내 임베디드 시스템의 네트워크 구성은 다음과 같습니다.
/etc/systemd/network/dhcp.network
[Match]
Name=eth*
[Network]
DHCP=yes
문제는 부팅할 때마다 시스템이 새로운 IP 주소를 얻는다는 것입니다. 일부 구성이 누락되었나요?
추가 정보:
$ cat /proc/version
Linux version 4.16.0 ([email protected]) (gcc version 7.3.0 (Buildroot 2018.05-g0164235-dirty)) #18 SMP PREEMPT Tue Jul 17 14:28:37 CEST 2018
[편집] DHCP 검색 패킷 추가
Frame 13299: 327 bytes on wire (2616 bits), 327 bytes captured (2616 bits) on interface 0 Interface id: 0 (\\.\pipe\Shamrock_Wireshark_TAP__30815) Encapsulation type: Ethernet (1) Arrival Time: Jul 16, 2018 10:39:49.166800000 Paris, Madrid (heure d??t?) [Time shift for this packet: 0.000000000 seconds] Epoch Time: 1531730389.166800000 seconds [Time delta from previous captured frame: 20.554641000 seconds] [Time delta from previous displayed frame: 43.658782000 seconds] [Time since reference or first frame: 43.770160000 seconds] Frame Number: 13299 Frame Length: 327 bytes (2616 bits) Capture Length: 327 bytes (2616 bits) [Frame is marked: False] [Frame is ignored: False] [Protocols in frame: eth:ethertype:ip:udp:bootp] [Coloring Rule Name: UDP] [Coloring Rule String: udp] Ethernet II, Src: AlstomGr_20:00:6f (80:b3:2a:20:00:6f), Dst: Broadcast (ff:ff:ff:ff:ff:ff) Destination: Broadcast (ff:ff:ff:ff:ff:ff) Address: Broadcast (ff:ff:ff:ff:ff:ff) .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default) .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast) Source: AlstomGr_20:00:6f (80:b3:2a:20:00:6f) Address: AlstomGr_20:00:6f (80:b3:2a:20:00:6f) .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) .... ...0 .... .... .... .... = IG bit: Individual address (unicast) Type: IPv4 (0x0800) Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255 0100 .... = Version: 4 .... 0101 = Header Length: 20 bytes Differentiated Services Field: 0xc0 (DSCP: CS6, ECN: Not-ECT) 1100 00.. = Differentiated Services Codepoint: Class Selector 6 (48) .... ..00 = Explicit Congestion Notification: Not ECN-Capable Transport (0) Total Length: 313 Identification: 0x0000 (0) Flags: 0x00 0... .... = Reserved bit: Not set .0.. .... = Don't fragment: Not set ..0. .... = More fragments: Not set Fragment offset: 0 Time to live: 64 Protocol: UDP (17) Header checksum: 0x78f5 [validation disabled] [Good: False] [Bad: False] Source: 0.0.0.0 Destination: 255.255.255.255 [Source GeoIP: Unknown] [Destination GeoIP: Unknown] User Datagram Protocol, Src Port: 68 (68), Dst Port: 67 (67) Source Port: 68 Destination Port: 67 Length: 293 Checksum: 0xca77 [validation disabled] [Good Checksum: False] [Bad Checksum: False] [Stream index: 0] Bootstrap Protocol (Discover) Message type: Boot Request (1) Hardware type: Ethernet (0x01) Hardware address length: 6 Hops: 0 Transaction ID: 0x240b826b Seconds elapsed: 1 Bootp flags: 0x0000 (Unicast) 0... .... .... .... = Broadcast flag: Unicast .000 0000 0000 0000 = Reserved flags: 0x0000 Client IP address: 0.0.0.0 Your (client) IP address: 0.0.0.0 Next server IP address: 0.0.0.0 Relay agent IP address: 0.0.0.0 Client MAC address: AlstomGr_20:00:6f (80:b3:2a:20:00:6f) Client hardware address padding: 00000000000000000000 Server host name not given Boot file name not given Magic cookie: DHCP Option: (53) DHCP Message Type (Discover) Length: 1 DHCP: Discover (1) Option: (61) Client identifier Length: 19 IAID: cd4578d2 DUID Type: assigned by vendor based on Enterprise number (2) Enterprise-number: Tom Gundersen (systemd) (43793) Identifier: 871468cb35ae1ddc Option: (55) Parameter Request List Length: 8 Parameter Request List Item: (1) Subnet Mask Parameter Request List Item: (3) Router Parameter Request List Item: (12) Host Name Parameter Request List Item: (15) Domain Name Parameter Request List Item: (6) Domain Name Server Parameter Request List Item: (33) Static Route Parameter Request List Item: (121) Classless Static Route Parameter Request List Item: (42) Network Time Protocol Servers Option: (57) Maximum DHCP Message Size Length: 2 Maximum DHCP Message Size: 576 Option: (12) Host Name Length: 4 Host Name: RPH4 Option: (255) End Option End: 255
답변1
DHCP 검색 패킷에는 RFC 4361 스타일 클라이언트 식별자(옵션 61, DUID라고도 함)와 systemd
기업 번호(43793)가 포함되어 있습니다. 이는 파일에 nor 설정이 /etc/systemd/network/dhcp.network
포함되어 있지 않기 때문입니다 . 기본값은 및 입니다 .ClientIdentifier
DUIDType
ClientIdentifier=duid
DUIDType=vendor
기본 설정에서는 기업 번호와 위의 해시를 사용하여 DUID를 생성 DUIDType=vendor
합니다 . 시스템이 처음 시작될 때 생성되어야 하며 시스템 수명 동안(또는 적어도 운영 체제 설치 수명 동안) 지속되어야 합니다.systemd-networkd
/etc/machine-id
machine-id
임베디드 시스템이 machine-id
지속적으로 저장하도록 구성되지 않은 경우 부팅할 때마다 무작위로 생성되어 현재 보고 있는 동작이 발생합니다.
시스템에서 IPv6 호환 DUID 식별자를 사용할 필요가 없는 경우 가장 간단한 해결 방법은 시스템에서 해당 MAC 주소를 DHCP 클라이언트 식별자로 사용하도록 지정하는 것입니다. 파일에 다음을 추가하면 됩니다 dhcp.network
.
[DHCP]
ClientIdentifier=mac
DHCPv6도 사용 중이거나 특정 NIC가 아닌 시스템별 식별자를 사용하여 DHCP 클라이언트를 식별해야 하는 경우 다음을 읽어야 합니다.systemd
네트워크 구성 파일에 대한 문서귀하의 필요에 맞는 설정 조합을 찾으십시오.