systemd를 사용하여 Yocto로 컴파일된 임베디드 Linux 시스템이 있습니다. 에 네트워크 구성 파일이 있습니다 /etc/systemd/network/20-wired.network
. 파일 내용은 다음과 같습니다.
[Match]
Name=eth0
[Network]
Address=192.168.5.40/24
Gateway=192.168.5.1
DNS=192.168.5.1
그러나 컴퓨터를 다시 시작하면 고정 IP 주소가 할당되는 대신 DHCP를 사용하여 eth0 인터페이스가 성공적으로 구성되었습니다. 이 ip a
명령은 다음을 보여줍니다.
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f8:dc:7a:3c:27:82 brd ff:ff:ff:ff:ff:ff
inet 10.1.1.223/16 brd 10.1.255.255 scope global dynamic noprefixroute eth0
valid_lft 85898sec preferred_lft 85898sec
inet6 fe80::43ec:fd39:e1c0:3c05/64 scope link noprefixroute
valid_lft forever preferred_lft forever
그러나 부팅 후 약 5초 정도 기다린 후 실행하면 systemctl restart systemd-networkd
시스템은 일반적으로 다음과 같이 올바르게 구성됩니다.
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f8:dc:7a:3c:27:82 brd ff:ff:ff:ff:ff:ff
inet 192.168.5.40/24 brd 192.168.5.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::43ec:fd39:e1c0:3c05/64 scope link noprefixroute
valid_lft forever preferred_lft forever
마지막으로, 적시에 네트워크 서비스를 다시 시작하면 다음과 같은 결과(예상되는 고정 주소와 원치 않는 DHCP 주소 모두)를 얻을 수 있는 것 같습니다.
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether f8:dc:7a:3c:27:82 brd ff:ff:ff:ff:ff:ff
inet 192.168.5.40/24 brd 192.168.5.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.1.1.223/16 brd 10.1.255.255 scope global dynamic noprefixroute eth0
valid_lft 86246sec preferred_lft 86246sec
inet6 fe80::43ec:fd39:e1c0:3c05/64 scope link noprefixroute
valid_lft forever preferred_lft forever
여기서 무슨 일이 일어나고 있는지 또는 디버깅하는 방법을 아는 사람이 있습니까? 내 구성에 분명히 잘못된 것이 있습니까?
systemctl status systemd-networkd
시작 직후 다음이 표시됩니다(특히 network-online.target 이후).
* systemd-networkd.service - Network Service
Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
Active: activating (start) since Tue 2021-07-20 12:58:52 UTC; 65ms ago
TriggeredBy: * systemd-networkd.socket
Docs: man:systemd-networkd.service(8)
Main PID: 282 ((networkd))
Tasks: 1 (limit: 3576)
Memory: 416.0K
CGroup: /system.slice/systemd-networkd.service
`-282 (networkd)
몇 초 후에는 다음과 같이 표시됩니다.
* systemd-networkd.service - Network Service
Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-07-20 12:58:52 UTC; 3min 20s ago
TriggeredBy: * systemd-networkd.socket
Docs: man:systemd-networkd.service(8)
Main PID: 282 (systemd-network)
Status: "Processing requests..."
Tasks: 1 (limit: 3576)
Memory: 2.0M
CGroup: /system.slice/systemd-networkd.service
`-282 /lib/systemd/systemd-networkd
따라서 network-online.target 서비스가 실행 중일 때 서비스가 여전히 "활성"인 것으로 나타납니다. 하지만 그게 무슨 뜻인지, 문제가 있는지는 잘 모르겠습니다.
답변1
방금 systemd-networkd와 NetworkManager가 모두 실행되고 있는 것을 확인했습니다. 그건 정상이 아니죠? 일반적으로 다음 중 하나를 원하십니까? systemctl disable /lib/systemd/system/NetworkManager.service && reboot
문제가 해결된 것 같습니다.
편집: 이것은 대답이 아니거나 적어도 전체 대답은 아닙니다. NetworkManager가 비활성화된 경우에도 이런 현상이 다시 발생합니다.
답변2
비활성화할 필요는 없습니다.네트워크 관리자. 다음 줄을 구성 파일에 추가하세요.
NM_CONTROLLED=no
도움이 되었기를 바랍니다.