Die Verwendung von ip addr anstelle von ifconfig-Berichten “ RTNETLINK-Antworten: Datei existiert ” auf Debian

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

 alix:~# ifconfig eth1 192.168.0.2 netmask 255.255.255.0 alix:~# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 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) bytes of data. 64 bytes from 192.168.0.254: icmp_req=1 ttl=64 time=0.537 ms 64 bytes from 192.168.0.254: icmp_req=2 ttl=64 time=0.199 ms 64 bytes from 192.168.0.254: icmp_req=3 ttl=64 time=0.188 ms ^C --- 192.168.0.254 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2005ms rtt min/avg/max/mdev = 0.188/0.308/0.537/0.161 ms 

Wie Sie sehen, funktioniert alles einwandfrei.

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

 alix:~# sed -n "/iface eth1/,/^$/p" /etc/network/interfaces iface eth1 inet static address 192.168.0.2 netmask 255.255.255.0 

Aber wenn ich versuche, das Netzwerk zu starten, erhalte ich das Der folgende Fehler:

 alix:~# ifconfig eth1 down alix:~# ifup -v eth1 Configuring interface eth1=eth1 (inet) run-parts --verbose /etc/network/if-pre-up.d run-parts: executing /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 answers: File exists Failed to bring up eth1. 

Wenn ich den Befehl ip manuell ausführe, wird der gleiche Fehler angezeigt:

 alix:~# ip addr add 192.168.0.2/255.255.255.0 broadcast 192.168.0.255 dev eth1 label eth1 RTNETLINK answers: File exists 

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

Antwort

Ich habe festgestellt, dass ich das Gerät vorher spülen musste Rufen Sie es auf:

# ip addr flush dev eth1 

Das Löschen von manuell eingestellten Schnittstellenkonfigurationsinformationen wie diesen wird im erwähnt Ubuntu Server-Handbuch .

Kommentare

  • Ich erhalte immer noch einen (etwas anderen) Fehler RTNETLINK answers: No such process Failed to bring up eth1 ABER mein Eth1 ist jetzt korrekt zugewiesen UND ist UP / UP.
  • Ja, das gleiche Problem hier: RTNETLINK answers: No such process Failed to bring up eth1
  • 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?
  • @ceving: Können Sie bitte erklären, was RTNETLINK answers file ist? Nach dem Leeren nimmt meine Netzwerkkarte nicht automatisch eine neue IP-Adresse an. Wie kann man dhcp nach einer neuen IP-Adresse fragen?
  • Eine Einschränkung ist, dass dadurch alle Bereiche gelöscht werden, was nicht immer das ist, was Sie wollen. (Ich habe das auf die harte Tour herausgefunden.)

Antwort

Verwenden Sie ip addr flush funktioniert, löscht jedoch auch alle auf dieser Schnittstelle festgelegten Adressen – möglicherweise auch die von Ihnen verwendete, wenn Sie bei einem Remotecomputer angemeldet sind. Dadurch werden Sie möglicherweise von Ihrem Gerät ausgeschlossen.

RNETLINK answers: File exists tritt auf, wenn Sie versuchen, add eine Regel zu erstellen, die mit einer vorhandenen Regel in Konflikt steht. Ich würde vermuten, dass OP darauf stieß, weil sie die Adresse bereits mit ifconfig festgelegt hatten. Dieser Fehler kann normalerweise behoben werden, indem der Befehl add in einen ähnlich strukturierten Befehl change oder replace Befehl.

Es ist viel sicherer, stattdessen ip addr change oder ip addr replace zu verwenden.

Kommentare

  • Dies ist keine Option für jemanden, der nur ifup und ifdown verwendet , weil der Befehl in diesen Skripten fest verdrahtet ist.
  • @alerone mit " sudo ip addr change " wird Werfen Sie mir diese Ausgabe. " Nicht genügend Informationen: " dev " Argument ist erforderlich. " Ich / Wir benötigen weitere Informationen, um Ihre Idee zu verwenden. Es wäre schön.

Antwort

Ich hatte ein ähnliches Problem, dass zu dem Zeitpunkt, als ich die 10.000-Geld-Szene gespielt hatte, genau dies war, und ich hatte versucht, ein dd das fehlende Zeug zu / e / n / id / etho

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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.