私の組み込みシステムは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
ネットワーク構成ファイルのドキュメントあなたのニーズに合った設定の組み合わせを見つけます。