Wie debuggt man systemd-networkd?

Wie debuggt man systemd-networkd?

Ich möchte es verwenden systemd-networkd, um mein Netzwerk unter Ubuntu zu konfigurieren.

Ich habe eine /etc/systemd/network/host0.networkDatei hinzugefügt

[Match]
Name=host0

[Network]
Address=10.5.1.1/24
Gateway=10.5.1.254

um mein zu konfigurieren host0:

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: host0@if14428: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether d6:fa:2e:69:dd:30 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 169.254.229.86/16 brd 169.254.255.255 scope link host0
       valid_lft forever preferred_lft forever
    inet6 fe80::d4fa:2eff:fe69:dd30/64 scope link
       valid_lft forever preferred_lft forever

Aber wie oben zu sehen ist, ist es 10.5.1.1trotz Neustart systemd-networkd, Aktivierung und Neustart nicht konfiguriert. Jedes Mal stammt die Adresse von APIPA (als ob es kein DHCP gäbe, das dort nicht konfiguriert ist).

An keiner anderen Stelle ist das Netzwerk konfiguriert (insbesondere in /etc/network/interfaces, das leer ist).

Antwort1

Aushttps://coreos.com/os/docs/latest/network-config-with-networkd.html:

Debuggen manuell aktivieren

mkdir -p /etc/systemd/system/systemd-networkd.service.d/

Erstellen Sie ein Drop-In /etc/systemd/system/systemd-networkd.service.d/10-debug.confmit folgendem Inhalt:

[Service]
Environment=SYSTEMD_LOG_LEVEL=debug

Und starten Sie systemd-networkdden Dienst neu:

systemctl daemon-reload
systemctl restart systemd-networkd
journalctl -b -u systemd-networkd

Antwort2

Wie debuggt man systemd-networkd?

Aktivieren Sie das Debug-Logging mitservice-log-level

Sie können nutzensystemctl'Sservice-log-levelBefehl:

# set current log level of systemd-networkd.service to "debug":
systemctl service-log-level systemd-networkd.service debug
# syntax:
# systemctl service-log-level SERVICE [LEVEL]
# LEVEL:
# a value in the range 0…7
# or one of the strings emerg, alert, crit, err, warning, notice, info, debug
# check current log level of systemd-networkd.service by not specifying a level:
systemctl service-log-level systemd-networkd.service

systemd-networkd.serviceProtokolle überwachen/einsehen

Tagebuchsystemd-networkd.serviceDie spezifischen Protokolleinträge von können dann mit folgendem überwacht werden:

journalctl --unit=systemd-networkd.service --follow

# or short
journalctl -u systemd-networkd -f

BeispielTagebuchLogeinträge mit "systemd-networkd-Protokoll auf Debugebene" bei der Ausführung networkctl renew eth0auf meinem System:

Sep 08 13:45:43 abdull systemd-networkd[572]: Got message type=method_call sender=:1.31 destination=org.freedesktop.network1 path=/org/freedesktop/network1 interface=org.freedesktop.network1.Manager member=RenewLink cookie=2 reply_cookie=0 signature=i error-name=n/a error-message=n/a
Sep 08 13:45:43 abdull systemd-networkd[572]: Sent message type=method_call sender=n/a destination=org.freedesktop.DBus path=/org/freedesktop/DBus interface=org.freedesktop.DBus member=GetConnectionUnixUser cookie=59 reply_cookie=0 signature=s error-name=n/a error-message=n/a
Sep 08 13:45:43 abdull systemd-networkd[572]: Got message type=method_return sender=org.freedesktop.DBus destination=:1.15 path=n/a interface=n/a member=n/a cookie=17 reply_cookie=59 signature=u error-name=n/a error-message=n/a
Sep 08 13:45:43 abdull systemd-networkd[572]: Sent message type=method_return sender=n/a destination=:1.31 path=n/a interface=n/a member=n/a cookie=60 reply_cookie=2 signature=n/a error-name=n/a error-message=n/a
Sep 08 13:45:43 abdull systemd-networkd[572]: DHCP CLIENT (0x359abcde): REQUEST (renewing)
Sep 08 13:45:43 abdull systemd-networkd[572]: DHCP CLIENT (0x359abcde): ACK
Sep 08 13:45:43 abdull systemd-networkd[572]: DHCP CLIENT (0x359abcde): lease expires in 59min 58s
Sep 08 13:45:43 abdull systemd-networkd[572]: DHCP CLIENT (0x359abcde): T2 expires in 49min 25s
Sep 08 13:45:43 abdull systemd-networkd[572]: DHCP CLIENT (0x359abcde): T1 expires in 26min 54s
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: State changed: configured -> configuring
Sep 08 13:45:43 abdull systemd-networkd[572]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=61 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: Updating address: 10.0.3.165
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: Remembering updated address: 10.0.3.165/24 (valid for 1h)
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: link_check_ready(): static routes are not configured.
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: DHCP: No routes received from DHCP server: No data available
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: Configuring route: dst: 10.0.3.1/32, src: n/a, gw: n/a, prefsrc: 10.0.3.165, scope: link, table: main, proto: dhcp, type: unicast
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: Configuring route: dst: n/a, src: n/a, gw: 10.0.3.1, prefsrc: 10.0.3.165, scope: global, table: main, proto: dhcp, type: unicast
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: link_check_ready(): dhcp4:no dhcp6_addresses:no dhcp_routes:no dhcp_pd_addresses:no dhcp_pd_routes:no ndisc_addresses:yes ndisc_routes:yes
Sep 08 13:45:43 abdull systemd-networkd[572]: eth0: State changed: configuring -> configured
Sep 08 13:45:43 abdull systemd-networkd[572]: Sent message type=signal sender=n/a destination=n/a path=/org/freedesktop/network1/link/_32 interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=62 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a

Während systemd-networkd.servicedie Standardprotokollebene aktiviert ist , gibt es bei der Ausführung auf meinem System infokeine Protokolleinträge .networkctl renew eth0

Vergleich zwischenDas service-log-levelLösung und dievorbeikommenLösung:

service-log-level vorbeikommen
erfordert/impliziertsystemctl daemon-reload nein ✔️ ja ❌
erfordert systemd-networkd.serviceNeustart nein ✔️ ja ❌
Konfiguration bleibt bestehen nachsystemd-networkd.service nein ❌ ja ✔️
Konfiguration bleibt nach dem Neustart des Computers bestehen nein ❌ ja ✔️
einfacher Oneliner zum Ein- und Ausschalten des Debuggens ja ✔️ nein ❌

Hinweis: Häkchen (✔️) und Strichzeichen (❌) zeigen erwünschte oder unerwünschte Eigenschaften an (je nach Kontext).

Antwort3

Die vorherigen Antworten sind großartig, um herauszufinden, was läuft und was nicht, und um den Dienst neu zu starten.

Ich würde hinzufügen (vonSo aktivieren Sie es, wenn es deaktiviert ist):

systemctl enable <your.service.here>

z.Bsystemd-networkd

Außerdem bin ich mir nicht sicher, was passt. Ich vermute etwas, da es in unter Name=host0angezeigt wird . Aber die Verwendung eines Schnittstellennamens oder einer MAC-Adresse, wie sie in angezeigt wird, ist sicherer.2: host0@if14428ip addrip link

verwandte Informationen