Die Verwendung von ip addr anstelle von ifconfig meldet "RTNETLINK antwortet: Datei existiert" unter Debian

53

Ich habe ein Debian-System, das als WLAN-Router mit eth0und arbeitet wlan0. Jetzt habe ich manuell ein zusätzliches Netzwerk hinzugefügt eth1mit ifconfig:

alix: ~ # ifconfig eth1 192.168.0.2 netmask 255.255.255.0
alix: ~ # netstat -rn
Kernel-IP-Routing-Tabelle
Destination Gateway Genmask Flags MSS Window nicht verfügbar
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
alix: ~ # ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254) 56 (84) Datenbytes.
64 Bytes von 192.168.0.254: icmp_req = 1 ttl = 64 time = 0.537 ms
64 Bytes von 192.168.0.254: icmp_req = 2 ttl = 64 time = 0.199 ms
64 Bytes von 192.168.0.254: icmp_req = 3 ttl = 64 time = 0.188 ms
^ C
--- 192.168.0.254 ping statistics ---
3 Pakete gesendet, 3 empfangen, 0% Paketverlust, Zeit 2005ms
rtt min / avg / max / mdev = 0,188 / 0,308 / 0,537 / 0,161 ms

Alles funktioniert gut, wie Sie sehen können.

Jetzt möchte ich die Konfiguration dauerhaft machen. Dazu habe ich folgenden Abschnitt hinzugefügt /etc/network/interfaces:

alix: ~ # sed -n '/ iface eth1 /, / ^ $ / p' / etc / network / interfaces
iface eth1 inet static
  Adresse 192.168.0.2
  Netzmaske 255.255.255.0

Beim Versuch, das Netzwerk zu starten, wird jedoch die folgende Fehlermeldung angezeigt:

alix: ~ # ifconfig eth1 down
alix: ~ # ifup -v eth1
Schnittstelle eth1 = eth1 (inet) konfigurieren
run-parts --verbose /etc/network/if-pre-up.d
run-parts: Ausführen von /etc/network/if-pre-up.d/hostapd
ip addr add 192.168.0.2/255.255.255.0 broadcast 192.168.0.255 dev eth1 label eth1
RTNETLINK antwortet: Datei existiert
Fehler beim Aufrufen von eth1.

Wenn ich den ipBefehl manuell ausführe , wird derselbe Fehler angezeigt:

alix: ~ # ip addr add 192.168.0.2/255.255.255.0 broadcast 192.168.0.255 dev eth1 label eth1
RTNETLINK antwortet: Datei existiert

Was ist los mit dem Befehl? Und wie kann ich Debian anweisen, das Richtige zu tun?

ceving
quelle

Antworten:

83

Tut mir leid, aber ich habe es selbst geschafft. Ich musste das Gerät vor dem Aufrufen spülen:

alix: ~ # ip addr flush dev eth1

Das Löschen solcher manuell eingestellter Schnittstellenkonfigurationsinformationen wird im Ubuntu Server-Handbuch erwähnt .

ceving
quelle
Ich erhalte immer noch eine (etwas andere) Fehlermeldung, RTNETLINK answers: No such process Failed to bring up eth1ABER mein Eth1 ist jetzt richtig zugewiesen UND ist UP / UP.
Harperville
Ja, das gleiche Problem hier: RTNETLINK answers: No such process Failed to bring up eth1
Drew
7
Auch wenn Ihre Antworten das Problem lösen. Es wäre großartig, wenn Sie sagen könnten, was es tatsächlich tut. Was ist diese RTNETLINK-Datei, die existiert?
humanityANDpeace
@ceving: Kannst du bitte erklären, was ist RTNETLINK answers file? Außerdem nimmt meine Netzwerkkarte nach dem Spülen nicht automatisch eine neue IP an. Wie kann ich dhcp nach einer neuen IP fragen?
Realtebo
@realtebo @humanityANDpeace Inspiziere das Kernel-Handbuch über netlink und rtnetlink . Aber ich bezweifle, dass Sie es wirklich wissen wollen. Dies ist eine Fehlermeldung, die das ipTool vom Kernel erhält. Und anstatt die Nachricht in etwas für Endbenutzer Nützliches zu übersetzen, wird ipsie nur durchgereicht. Aber wenn Sie die Interna wirklich wissen wollen, verwenden Sie die Ask Questionanstelle der Add CommentSchaltfläche.
Ceving
-1

Ich hatte ein ähnliches Problem: Als ich die 10.000-Dollar-Szene gespielt hatte, war genau dies der Fall, und ich hatte versucht, das fehlende Zeug zu / e / n / id / etho hinzuzufügen

Aber als ich die Manpage für Schnittstellen studierte, bemerkte ich, dass ALLE Beispiele nur zwei Zeilen mit echten Daten enthielten, die IPv4-Adresse / 24 und eine Gateway-Zeile, die die Adresse meines Routers angab. Also habe ich meine eth0-Datei darauf reduziert, neu gestartet und perfekt funktioniert.

Gen
quelle