새 IP 주소 및 DHCP 임대가 만료되었습니다.

새 IP 주소 및 DHCP 임대가 만료되었습니다.

내 임베디드 시스템은 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포함되어 있지 않기 때문입니다 . 기본값은 및 입니다 .ClientIdentifierDUIDTypeClientIdentifier=duidDUIDType=vendor

기본 설정에서는 기업 번호와 위의 해시를 사용하여 DUID를 생성 DUIDType=vendor합니다 . 시스템이 처음 시작될 때 생성되어야 하며 시스템 수명 동안(또는 적어도 운영 체제 설치 수명 동안) 지속되어야 합니다.systemd-networkd/etc/machine-idmachine-id

임베디드 시스템이 machine-id지속적으로 저장하도록 구성되지 않은 경우 부팅할 때마다 무작위로 생성되어 현재 보고 있는 동작이 발생합니다.

시스템에서 IPv6 호환 DUID 식별자를 사용할 필요가 없는 경우 가장 간단한 해결 방법은 시스템에서 해당 MAC 주소를 DHCP 클라이언트 식별자로 사용하도록 지정하는 것입니다. 파일에 다음을 추가하면 됩니다 dhcp.network.

[DHCP]
ClientIdentifier=mac

DHCPv6도 사용 중이거나 특정 NIC가 아닌 시스템별 식별자를 사용하여 DHCP 클라이언트를 식별해야 하는 경우 다음을 읽어야 합니다.systemd네트워크 구성 파일에 대한 문서귀하의 필요에 맞는 설정 조합을 찾으십시오.

관련 정보