systemd 네트워크는 시작 시 네트워크 구성 파일을 무시합니다.

systemd 네트워크는 시작 시 네트워크 구성 파일을 무시합니다.

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

도움이 되었기를 바랍니다.

관련 정보