[gelöst] UCARP: Failed to bring up $dev / Cannot find device $dev

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

[gelöst] UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 11:11:42

Hallo,

ich versuche gerade das Debianpaket Debianucarp (Cluster-IP-Adresse, die automatisch wechselt, wenn das Partnersystem nicht mehr erreichbar ist) zum laufen zu bringen.

System ist Bookworm. Das ist meine /etc/network/interfaces:

Code: Alles auswählen

auto lo
iface lo inet loopback

# the public network interface
allow-hotplug enp197s0f1
iface enp197s0f1 inet static
        address 1.2.3.4
        netmask 26
        gateway 1.2.3.1
        dns-nameservers 1.2.3.100 2.2.3.101
        dns-search mydomain.de

# The internal network interface
allow-hotplug enp197s0f0
iface enp197s0f0 inet static
        address 10.200.50.84
        netmask 24
        ucarp-vid 11
        ucarp-vip 10.200.50.38
        ucarp-password sehrgeheim
        ucarp-advskew 0
        ucarp-advbase 1
        ucarp-master yes

iface enp197s0f0:ucarp inet static
        address 10.200.50.38
        netmask 255.255.255.255
Das Partnersystem ist noch nicht konfiguriert. Wenn ich jetzt testweise mal das Interface enp197s0f0:ucarp hochfahren möchte bekomme ich:

Code: Alles auswählen

# ifup enp197s0f0:ucarp
Cannot find device "enp197s0f0:ucarp"
ifup: failed to bring up enp197s0f0:ucarp
Was könnte das sein?
Zuletzt geändert von heisenberg am 11.10.2023 14:29:03, insgesamt 1-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 11:19:56

Ich habe in das ucarp-up-script nochmal ein set -x eingebaut. Das ist die Ausgabe vom Hochfahren des Basisinterfaces:

Code: Alles auswählen

ifup -v enp197s0f0 

ifup: configuring interface enp197s0f0=enp197s0f0 (inet)
run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
ip addr add 10.200.50.84/24 broadcast +           dev enp197s0f0 label enp197s0f0
ip link set dev enp197s0f0   up

run-parts --exit-on-error --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/resolved
run-parts: executing /etc/network/if-up.d/ucarp
+ UCARP=/usr/sbin/ucarp
+ EXTRA_PARAMS=
+ [ ! -x /usr/sbin/ucarp ]
+ [ -z  ]
+ IF_UCARP_UPSCRIPT=/usr/share/ucarp/vip-up
+ [ -z  ]
+ IF_UCARP_DOWNSCRIPT=/usr/share/ucarp/vip-down
+ [ -n yes ]
+ expr yes : no\|off\|false\|0
+ EXTRA_PARAMS=-P
+ [ -n 0 ]
+ EXTRA_PARAMS=-P -k 0
+ [ -n 1 ]
+ EXTRA_PARAMS=-P -k 0 -b 1
+ [ -n  ]
+ [ -n  ]
+ [ -n  ]
+ [ -n 11 -a -n 10.200.50.38 -a -n sehrgeheim ]
+ /usr/sbin/ucarp -i enp197s0f0 -s 10.200.50.84 -B -z -v 11 -p sehrgeheim \
   -a 10.200.50.38 -u /usr/share/ucarp/vip-up -d /usr/share/ucarp/vip-down -P -k 0 -b 1
run-parts: executing /etc/network/if-up.d/vc-static-routes # hier wird nur eine eigene route gesetzt
Das ist das syslog:

Code: Alles auswählen

Okt 11 11:17:11 postgres07 ucarp[5371]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 11:17:16 postgres07 ucarp[7429]: [INFO] Local advertised ethernet address is [04:32:01:0b:4e:1e]
Okt 11 11:17:16 postgres07 ucarp[7429]: [WARNING] Switching to state: BACKUP
Okt 11 11:17:16 postgres07 ucarp[7429]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 11:17:29 postgres07 ucarp[7429]: [WARNING] Switching to state: MASTER
Okt 11 11:17:29 postgres07 ucarp[7429]: [WARNING] Spawning [/usr/share/ucarp/vip-up enp197s0f0 10.200.50.38]
Okt 11 11:17:48 postgres07 ucarp[7429]: [WARNING] Switching to state: BACKUP
Okt 11 11:17:48 postgres07 ucarp[7429]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 11:18:17 postgres07 ucarp[7574]: [INFO] Local advertised ethernet address is [04:32:01:0b:4e:1e]
Okt 11 11:18:17 postgres07 ucarp[7574]: [WARNING] Switching to state: BACKUP
Okt 11 11:18:17 postgres07 ucarp[7574]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 11:18:28 postgres07 ucarp[7429]: [ERROR] exiting: pfds[0].revents = 9
Okt 11 11:18:30 postgres07 ucarp[7574]: [WARNING] Switching to state: MASTER
Okt 11 11:18:30 postgres07 ucarp[7574]: [WARNING] Spawning [/usr/share/ucarp/vip-up enp197s0f0 10.200.50.38]
/usr/share/ucarp/vip-up ist nur dieses kleine Script:

Code: Alles auswählen

#!/bin/sh

/sbin/ifup $1:ucarp
Zuletzt geändert von heisenberg am 11.10.2023 11:31:26, insgesamt 1-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von JTH » 11.10.2023 11:26:11

heisenberg hat geschrieben: ↑ zum Beitrag ↑
11.10.2023 11:11:42
Wenn ich jetzt testweise mal das Interface enp197s0f0:ucarp hochfahren möchte bekomme ich:

Code: Alles auswählen

# ifup enp197s0f0:ucarp
Cannot find device "enp197s0f0:ucarp"
ifup: failed to bring up enp197s0f0:ucarp
Kenne das Paket zugegebenermaßen nicht, hab nur kurz einen Blick in dessen README.Debian geworfen.

Ich verstehe das so, dass du das enp197s0f0 ifup-en solltest und das enp197s0f0:ucarp dann – im Hintergrund – durch den Hook /etc/network/if-up.d/ucarp passend mit konfiguriert wird?
/usr/share/doc/ucarp/README.Debian hat geschrieben:

Code: Alles auswählen

iface eth0 inet static
        […]
iface eth0:ucarp inet static
        […]
In the above example, ucarp will be started when eth0 is brought up […] When ucarp determines that this host is the master eth0:ucarp will be brought up […]
Also dass ein separates/manuelles/explizites Hochfahren des enp197s0f0:ucarp nicht notwendig und vorgesehen ist.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 11:30:51

JTH hat geschrieben: ↑ zum Beitrag ↑
11.10.2023 11:26:11
Ich verstehe das so, dass du das enp197s0f0 ifup-en solltest und das enp197s0f0:ucarp dann – im Hintergrund – durch den Hook /etc/network/if-up.d/ucarp passend mit konfiguriert wird?
Ja. So verstehe ich das auch. Das tut - wie geschrieben - nicht. Deswegen hab ich den ifup manuell versucht und sehe, dass das fehlschlägt mit obiger Meldung.

Bisher habe ich schon hin und wieder mal ucarp eingesetzt, aber nicht mit dem Debian-Paket.
Also dass ein separates/manuelles/explizites Hochfahren des enp197s0f0:ucarp nicht notwendig und vorgesehen ist.
Das obige Helper-Script /usr/share/ucarp/vip-up fährt ja selbst das ucarp-Interface mittels ifup hoch. Also gehen sollte das.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von JTH » 11.10.2023 11:32:52

heisenberg hat geschrieben: ↑ zum Beitrag ↑
11.10.2023 11:30:51
Ja. So verstehe ich das auch. Das tut - wie geschrieben - nicht. Deswegen hab ich den ifup manuell versucht und sehe, dass das fehlschlägt mit obiger Meldung.
Ach ja. Das stand noch nicht im Eingangsbeitrag :wink: , deinen zweiten Beitrag hatte ich beim Schreiben noch nicht gesehen.

Ich probier auch mal rum, ist ja bald Mittag ;)
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 11:42:35

Die zweite Meldung habe ich weg bekommen:

Code: Alles auswählen

ifup: failed to bring up enp197s0f0:ucarp
Das lag daran, dass mein anderes post-up-script eine Route setzen wollte, die bereits aktiv war. Das Script habe ich jetzt darauf begrenzt, dass es nur bei einem spezifischen Interface ausgeführt wird:

vc-static-routes:

Code: Alles auswählen

#!/bin/bash

if [[ "$IF_ADDRESS" =~ 10.200.50 ]] && [ -n "$IF_UCARP_VIP" ] ; then
        /sbin/route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.200.50.122 
fi
(Ja ich weiss, ist kein iproute2.)

Geht aber trotzdem noch nicht.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 11:47:10

Wenn ich das ucarp-Interface umbenenne, dann kann ich das Interface hochfahren:

Code: Alles auswählen

iface enp197s0f0:hurz inet static
        address 10.200.50.38
        netmask 255.255.255.255
Jede Rohheit hat ihren Ursprung in einer Schwäche.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von JTH » 11.10.2023 12:02:43

Hmm, also mal fix in einer frischen VM ausprobiert klappt das sinngemäß mit den Werten deiner enp197s0f0 und enp197s0f0:ucarp von oben. Das Interface enp197s0f0 bekommt eine zweite, die ucarp-IP. Und das enp197s0f0:ucarp läst sich sogar doch separat hoch- und runterfahren, mit entsprechendem Effekt für die zweite IP des enp197s0f0.

Hast du vielleicht noch ein anderes ifup-Skript, was in die Quere kommt?
Hast du das
heisenberg hat geschrieben: ↑ zum Beitrag ↑
11.10.2023 11:42:35

Code: Alles auswählen

if [[ "$IF_ADDRESS" =~ 10.200.50 ]] && [ -n "$IF_UCARP_VIP" ] ; then
        /sbin/route add -net 172.16.0.0 netmask 255.255.0.0 gw 10.200.50.122 
fi
testweise mal ganz weggelassen? Der Schnipsel betrifft ja nun gerade auffälligerweise nur das ucarp-Interface.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 12:07:02

Ich habe das vc-static-routes Script gelöscht. Keine Veränderung.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von JTH » 11.10.2023 12:24:51

Hmm, merkwürdig.

Habe nochmal verglichen: Die Ausgaben von ifup -v IFACE_w/o_ucarp und die dazugehörigen Einträge im Journal sehen bei mir gleich aus, abzüglich der unterschiedlichen Namen/Werte.

Nochmal explizit und als Überblick, damit wir nicht aneinander vorbeireden:
Nach dem ifup enp197s0f0 hat dein enp197s0f0 keine zweite IP bekommen?
Das ucarp-Binary läuft dann aber im Hintergrund – pgrep -fa ucarp?

Du könntest das ucarp-Binary mal mit Debug-Ausgaben starten –

Code: Alles auswählen

EXTRA_PARAMS="-D"
in /etc/network/if-up.d/ucarp oben eintragen – und dann die Logs beobachten.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 12:25:13

Hmm. Habe den falschen Schalter genutzt (habe verbose mit version verwechselt).

Wenn ich das Interface mit --verbose hochfahre, dann bekomme ich das:

Code: Alles auswählen

ifup  --verbose enp197s0f0:ucarp

ifup: configuring interface enp197s0f0:ucarp=enp197s0f0:ucarp (inet)
run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
ip addr add 10.200.50.38/255.255.255.255 broadcast 10.200.50.38 dev enp197s0f0:ucarp label enp197s0f0:ucarp
Cannot find device "enp197s0f0:ucarp"
ifup: failed to bring up enp197s0f0:ucarp
Das ip addr Kommando ist falsch. Wie sieht das bei Dir aus?
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 12:27:33

JTH hat geschrieben: ↑ zum Beitrag ↑
11.10.2023 12:24:51
Nochmal explizit und als Überblick, damit wir nicht aneinander vorbeireden:
Nach dem ifup enp197s0f0 hat dein enp197s0f0 keine zweite IP bekommen?
Jawoll. Keine 2. IP da:

Code: Alles auswählen

ip addr show dev enp197s0f0
4: enp197s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 04:32:01:0b:4e:1e brd ff:ff:ff:ff:ff:ff
    inet 10.200.50.84/24 brd 10.200.50.255 scope global enp197s0f0
       valid_lft forever preferred_lft forever
    inet6 fe80::632:1ff:fe0b:4e1e/64 scope link 
       valid_lft forever preferred_lft forever
Das ucarp-Binary läuft dann aber im Hintergrund – pgrep -fa ucarp?

Code: Alles auswählen

ps ax|grep ucarp
  17075 ?        S      0:00 /usr/sbin/ucarp -i enp197s0f0 -s 10.200.50.84 -B -z -v 3 -p geheim -a 10.200.50.38 -u /usr/share/ucarp/vip-up -d /usr/share/ucarp/vip-down -P -k 0 -b 1
Zuletzt geändert von heisenberg am 11.10.2023 12:37:48, insgesamt 2-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von JTH » 11.10.2023 12:31:04

heisenberg hat geschrieben: ↑ zum Beitrag ↑
11.10.2023 12:25:13
Wenn ich das Interface mit --verbose hochfahre, dann bekomme ich das:

Code: Alles auswählen

ifup  --verbose enp197s0f0:ucarp

ifup: configuring interface enp197s0f0:ucarp=enp197s0f0:ucarp (inet)
run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
ip addr add 10.200.50.38/255.255.255.255 broadcast 10.200.50.38 dev enp197s0f0:ucarp label enp197s0f0:ucarp
Cannot find device "enp197s0f0:ucarp"
ifup: failed to bring up enp197s0f0:ucarp
Das ip addr Kommando ist falsch. Wie sieht das bei Dir aus?
Das sieht bei mir sinngemäß identisch aus:

Code: Alles auswählen

~# ifup -v enp1s0:ucarp

ifup: configuring interface enp1s0:ucarp=enp1s0:ucarp (inet)
run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
ip addr add 10.0.2.42/255.255.255.255 broadcast 10.0.2.42 	  dev enp1s0:ucarp label enp1s0:ucarp
ip link set dev enp1s0:ucarp   up

run-parts --exit-on-error --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/resolved
run-parts: executing /etc/network/if-up.d/ucarp
+ UCARP=/usr/sbin/ucarp
+ EXTRA_PARAMS=
+ [ ! -x /usr/sbin/ucarp ]
+ [ -z  ]
+ IF_UCARP_UPSCRIPT=/usr/share/ucarp/vip-up
+ [ -z  ]
+ IF_UCARP_DOWNSCRIPT=/usr/share/ucarp/vip-down
+ [ -n  ]
+ [ -n  ]
+ [ -n  ]
+ [ -n  ]
+ [ -n  ]
+ [ -n  ]
+ [ -n  -a -n  -a -n  ]
(Auch gerade mit set -x in /etc/network/if-up.d/ucarp.)
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 12:41:21

Der Debugging-Schalter bringt jetzt auch keine Erkenntnisse:

Code: Alles auswählen

Okt 11 12:25:54 postgres07 ucarp[17075]: [INFO] Local advertised ethernet address is [04:32:01:0b:4e:1e]
Okt 11 12:25:54 postgres07 ucarp[17075]: [WARNING] Switching to state: BACKUP
Okt 11 12:25:54 postgres07 ucarp[17075]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 12:26:07 postgres07 ucarp[17075]: [WARNING] Switching to state: MASTER
Okt 11 12:26:07 postgres07 ucarp[17075]: [WARNING] Spawning [/usr/share/ucarp/vip-up enp197s0f0 10.200.50.38]
Okt 11 12:28:29 postgres07 ucarp[17075]: [ERROR] exiting: pfds[0].revents = 8
Okt 11 12:28:29 postgres07 ucarp[17075]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 12:28:33 postgres07 ucarp[17491]: [INFO] Local advertised ethernet address is [04:32:01:0b:4e:1e]
Okt 11 12:28:33 postgres07 ucarp[17491]: [WARNING] Switching to state: BACKUP
Okt 11 12:28:33 postgres07 ucarp[17491]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 12:28:46 postgres07 ucarp[17491]: [WARNING] Switching to state: MASTER
Okt 11 12:28:46 postgres07 ucarp[17491]: [WARNING] Spawning [/usr/share/ucarp/vip-up enp197s0f0 10.200.50.38]
Okt 11 12:29:22 postgres07 ucarp[17491]: [ERROR] exiting: pfds[0].revents = 8
Okt 11 12:29:22 postgres07 ucarp[17491]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 12:29:25 postgres07 ucarp[17653]: [INFO] Local advertised ethernet address is [04:32:01:0b:4e:1e]
Okt 11 12:29:25 postgres07 ucarp[17653]: [DEBUG] BPF rule: [proto 112 and src host not 10.200.50.84]
Okt 11 12:29:25 postgres07 ucarp[17653]: [DEBUG] carp_setrun()
Okt 11 12:29:25 postgres07 ucarp[17653]: [WARNING] Switching to state: BACKUP
Okt 11 12:29:25 postgres07 ucarp[17653]: [WARNING] Spawning [/usr/share/ucarp/vip-down enp197s0f0 10.200.50.38]
Okt 11 12:29:25 postgres07 ucarp[17653]: [DEBUG] carp_setrun()
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] carp_setrun()
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:29:35 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:29:36 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:29:36 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:29:36 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:29:37 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:29:37 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:29:37 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:29:38 postgres07 ucarp[17653]: [DEBUG] carp_master_down()
Okt 11 12:29:38 postgres07 ucarp[17653]: [WARNING] Switching to state: MASTER
Okt 11 12:29:38 postgres07 ucarp[17653]: [WARNING] Spawning [/usr/share/ucarp/vip-up enp197s0f0 10.200.50.38]
Okt 11 12:29:38 postgres07 ucarp[17653]: [DEBUG] -> carp_send_ad()
Okt 11 12:29:38 postgres07 ucarp[17653]: [DEBUG] * advertisement injected *
Okt 11 12:29:38 postgres07 ucarp[17653]: [DEBUG] carp_setrun()
Okt 11 12:29:38 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:29:38 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:29:38 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:29:39 postgres07 ucarp[17653]: [DEBUG] -> carp_send_ad()
Okt 11 12:29:39 postgres07 ucarp[17653]: [DEBUG] * advertisement injected *
Okt 11 12:29:39 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:29:39 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:29:39 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:29:39 postgres07 ucarp[17653]: [DEBUG] carp_master_down()
Okt 11 12:29:40 postgres07 ucarp[17653]: [DEBUG] carp_master_down()
Okt 11 12:29:40 postgres07 ucarp[17653]: [DEBUG] -> carp_send_ad()
...
Okt 11 12:38:19 postgres07 ucarp[17653]: [DEBUG] * advertisement injected *
Okt 11 12:38:19 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:38:19 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:38:19 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:38:19 postgres07 ucarp[17653]: [DEBUG] carp_master_down()
Okt 11 12:38:20 postgres07 ucarp[17653]: [DEBUG] carp_master_down()
Okt 11 12:38:20 postgres07 ucarp[17653]: [DEBUG] -> carp_send_ad()
Okt 11 12:38:20 postgres07 ucarp[17653]: [DEBUG] * advertisement injected *
Okt 11 12:38:20 postgres07 ucarp[17653]: [DEBUG] Ethernet [00:00:5e:00:00:01]->[01:00:5e:00:00:12] type [0800]
Okt 11 12:38:20 postgres07 ucarp[17653]: [DEBUG] 
Okt 11 12:38:20 postgres07 ucarp[17653]: [DEBUG] Ignoring vhid: [1]
Okt 11 12:38:20 postgres07 ucarp[17653]: [DEBUG] carp_master_down()
Das Problem ist IMHO nicht der ucarp, sondern dass iproute2 das Interface nicht hochfahren kann.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 12:56:19

Ich habe jetzt testweise mal ein anderes Interface genommen: eno1np0

Damit tritt der Fehler nicht auf. Das ucarp geht nicht an, weil die Karte kein Kabel gesteckt hat, aber ifup eno1np0:ucarp und ifdown eno1np0:ucarp wird erfolgreich ausgeführt. IP-Adresse wird dabei wie es sein soll hinzugefügt und entfernt.

Könnte das ein Fehler sein, dass der Interfacename vielleicht zu lang ist?
Zuletzt geändert von heisenberg am 11.10.2023 13:11:07, insgesamt 1-mal geändert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 13:02:30

Ich habe jetzt provisorisch erst mal das Interface so konfiguriert, dass das geht:

Code: Alles auswählen

iface enp197s0f0:ucarp inet manual
        post-up  ip addr add    10.200.50.38/255.255.255.255 dev enp197s0f0
        pre-down ip addr delete 10.200.50.38/255.255.255.255 dev enp197s0f0
Damit ist beim hochfahren von enp197s0f0 sofort die UCARP-Adresse da.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von JTH » 11.10.2023 13:32:35

heisenberg hat geschrieben: ↑ zum Beitrag ↑
11.10.2023 12:56:19
Könnte das ein Fehler sein, dass der Interfacename vielleicht zu lang ist?
Hihi, ja, da dürftest du auf der richtigen Spur sein.

Ganz schnell durch den Debianiproute2-Code (da steckt ip drin) gewühlt:
Die Gültigkeit eines Interfacenamens wird wohl hier geprüft:
https://sources.debian.org/src/iproute2/6.5.0-4/lib/utils.c/#L820-L826 hat geschrieben:

Code: Alles auswählen

int check_ifname(const char *name)
{
	/* These checks mimic kernel checks in dev_valid_name */
	if (strlen(name) >= IFNAMSIZ)
		return -1;
	return __check_ifname(name);
}
und IFNAMSIZ ist

Code: Alles auswählen

#define IFNAMSIZ    16
Die Länge ist auch so im Kernel selbst hart festgelegt.

enp197s0f0:ucarp hat aber eben gerade 16 Zeichen (exklusive \0) und wird damit von check_ifname() abgelehnt. ip lehnt es dann als „nicht gefunden“ ab. Das erklärt auch ganz gut, warum es mit dem enp197s0f0:hurz – 15 Zeichen – bei dir zwischendurch zumindest teilweise funktioniert hat.

Ohne Gewähr, dass ich beim Codedurchwühlen nicht zu viele Abkürzungen genommen oder was übersehen habe oder für interface:suffix ein ganz anderes Limit gilt.

heisenberg hat geschrieben: ↑ zum Beitrag ↑
11.10.2023 13:02:30

Code: Alles auswählen

iface enp197s0f0:ucarp inet manual
        post-up  ip addr add    10.200.50.38/255.255.255.255 dev enp197s0f0
        pre-down ip addr delete 10.200.50.38/255.255.255.255 dev enp197s0f0
Das könnte eine Lösung sein, jo.

Alternativ könntest du das Suffix ucarp in /usr/share/ucarp/vip-{down,up} durch carp, uc oder etwas noch kürzeres ersetzen. Und das gekürzte Suffix dann auch in der interfaces a la enp197s0f0:carp benutzen. Mehr Änderungen an anderen Stellen bräuchte es als Fix wohl gar nicht.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 13:37:30

Ok. Das wäre auf jeden Fall mal einen Bugreport bzgl. Debianucarp wert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von JTH » 11.10.2023 13:51:14

Oder man meckert ein bisschen über die durch systemd eingeführten, ewig langen Interfacenamen herum ;) Mit einem guten alten eth0 und wlan0 gäbs das Problem nicht. Es ist ja schon verdächtig, dass die Beispielnamen hier alle zufällig genau höchstens 15 Buchstaben lang sind :twisted:

Spaß beiseite (mich stören die langen Namen nicht):
Ich weiß nicht, ob ichs einen richtigen Bug nennen würde. Aber wegen der neueren, langen Namen wär zumindest ein Hinweis in der Doku (README.Debian, Manpage o.a.) von ucarp hilfreich, dass man das Limit beachten muss. Die Doku kann man ja in einem Bugreport anfragen :)
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
heisenberg
Beiträge: 3567
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: [gelöst] UCARP: Failed to bring up $dev / Cannot find device $dev

Beitrag von heisenberg » 11.10.2023 14:36:45

Nachdem dass so ein mittlerweile recht einfach zu anzutreffender Bug ist, wäre das eine Informations/Warnmeldung in iproute2 Wert.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Antworten