So rufen Sie eine Netzwerkschnittstelle nur auf, wenn sie physisch vorhanden ist

8

Ausführen von Ubuntu Server 12.04 (keine GUI). Was wäre der beste Weg, um den Kernel dazu zu bringen, eine Netzwerkschnittstelle nur dann aufzurufen, wenn sie physisch angeschlossen ist? Wenn es nicht vorhanden ist, initialisieren Sie einfach andere Schnittstellen (falls vorhanden) und fahren Sie mit dem Anmeldebildschirm fort, ohne auf die Netzwerkkonfiguration zu warten.

ZB habe ich einen drahtlosen USB-Stick wlan9 (in / etc / network / interfaces):

auto wlan9
iface wlan9 inet dhcp
        wpa-ssid myssd
        wpa-psk mykey
        wpa-proto RSN
        wpa-pairwise CCMP
        wpa-group CCMP

Ich habe versucht, allow-hotplug anstelle von auto zu verwenden . In diesem Fall wird die Schnittstelle beim Booten nicht automatisch initialisiert, und ich muss dies manuell mit ifup wlan9 tun . Das ist nicht genau das, wonach ich suche.

Vielen Dank.

noseratio
quelle

Antworten:

4

Auch für Server: Verwenden Sie NetworkManager

  1. Es installieren:

    sudo apt-get install network-manager
    

    Leider wird dies viele Abhängigkeiten mit sich bringen.

  2. Schalten Sie die derzeit auf herkömmliche Weise konfigurierte Schnittstelle herunter.

    ifdown wlan9
    
  3. Deaktivieren Sie alle manuellen Einstellungen, /etc/network/interfacesindem Sie alle Zeilen entfernen, die diese Schnittstelle betreffen.

  4. Fügen Sie eine Verbindungseinstellung für Ihre drahtlose Verbindung hinzu /etc/NetworkManager/system-connections/(machen Sie einen Namen):

    [connection]
    id=Some name of my connection
    uuid=0d791425-87c5-45e6-948e-01b1863901f7
    type=802-11-wireless
    
    [802-11-wireless]
    ssid=mySSID
    mode=infrastructure
    mac-address=24:77:00:01:02:03
    security=802-11-wireless-security
    
    [802-11-wireless-security]
    key-mgmt=wpa-psk
    psk=mypassword
    
    [ipv4]
    method=auto
    
    [ipv6]
    method=ignore
    
    • Für den uuidEinsatz des Befehl uuidgeneinen gelegentlichen zu erzeugen.
    • Zur mac-addressVerwendung der MAC-Adresse Ihres WLAN-Adapters (verwenden Sie ifconfig -a wlan9, um dies herauszufinden). Dadurch wird diese Konfigurationsdatei nur an diesen Adapter gebunden. Wenn sie nicht vorhanden ist, wird sie weder für einen anderen Adapter verwendet, noch wird darauf gewartet, dass der Adapter vorhanden ist.
    • Andere Bereiche sprechen für sich, hoffe ich. :) :)
  5. Starten Sie NetworkManager neu oder starten Sie neu.

    restart network-manager
    
gertvdijk
quelle
Vielen Dank, die Network Manager-Option fühlt sich etwas schwer an, aber ich werde mich daran wenden, wenn ich nichts Leichteres finde. Wenn fast funktioniert hat, geht wlan9 hoch, erhält aber keine DHCP-Lease.
Noseratio
@Noseratio Ja, ich stimme zu, dass dies keine wirklich leichte Lösung ist. Wenn ich einen leichteren Netzwerkmanager ohne die GUI-Abhängigkeiten gekannt hätte, hätte ich das in meiner Antwort verwendet. :)
gertvdijk
@gertvdijk Kannst du mir sagen, was passiert, wenn ich die mac-addressLeitung entferne ? Funktioniert es für alle Adapter oder stürzt es ab?
DangeMask
@DangeMask Es sollte nur für alle Adapter funktionieren, die ich annehme. Einfach versuchen und herausfinden?
Gertvdijk
@gertvdijk Ich habe es gerade versucht. Wenn ich die "Geräte-MAC-Adresse" lösche (in der GUI gelöscht, verschwindet auch in der Datei), stellt der Netzwerkmanager auch nach einer manuellen Verbindung und einem Neustart keine automatische Verbindung her. Ich habe sogar versucht, ifupdown> auf true und false zu setzen, ohne Erfolg.
DangeMask
3

und fahren Sie mit dem Anmeldebildschirm fort

Schlägt vor, dass Sie sich auf einer GUI-fähigen Installation befinden (kein Server). Daher gebe ich diese Antwort darauf basierend.


Verwenden Sie einfach NetworkManager

  1. Bringen Sie die Schnittstelle herunter.

    ifdown wlan9
    
  2. Deaktivieren Sie alle manuellen Einstellungen, /etc/network/interfacesindem Sie alle Zeilen entfernen, die diese Schnittstelle betreffen.

  3. Gehen Sie zu den Netzwerkeinstellungen und fügen Sie die drahtlose Netzwerkverbindung hinzu / bearbeiten Sie sie.

  4. Konfigurieren Sie es wie folgt (siehe Abbildung unten):

    1. Lassen Sie es automatisch verbinden.

    2. Wenden Sie es auf den richtigen WLAN-Adapter an, indem Sie die richtige MAC-Adresse auswählen. Wenn der Adapter nicht vorhanden ist, gelten diese Verbindungseinstellungen in diesem Dialogfeld nicht, sodass sie an diesen bestimmten Adapter "gebunden" werden (da jeder Adapter eine andere MAC-Adresse hat). Und nein, dies ist nicht die MAC-Adresse des WiFi-AP - das ist BSSID.

    3. Stellen Sie es allen Benutzern zur Verfügung (dadurch wird bereits beim Anmeldebildschirm automatisch eine Verbindung hergestellt). Beachten Sie, dass diese Einstellungen ausgegraut sind, bis Sie die erforderlichen Details angegeben haben.

    Und natürlich geben Sie auch die anderen Details zu Sicherheit, SSID usw. ein.

    Geben Sie hier die Bildbeschreibung ein

gertvdijk
quelle
Entschuldigung, ich habe vergessen anzugeben, dass dies Ubuntu Server ist. Trotzdem danke, ich habe diesen Hinweis für meine Desktop-Anforderungen gespeichert.
Noseratio
1
@Noseratio Ah ... schade. Schreiben Sie nun eine Antwort für die Serverinstallation. Bitte seien Sie beim nächsten Mal genauer und vollständiger in Ihrer Frage.
Gertvdijk
Ich werde. Bitte verzeihen Sie einem Noob :)
Noseratio
3

Ich habe die folgende Lösung gefunden, die nicht von zusätzlichen Paketen abhängt:

auto wlan9
iface wlan9 inet manual
        wpa-ssid MYSSD
        wpa-psk MYKEY
        wpa-proto RSN
        wpa-pairwise CCMP
        wpa-group CCMP
        wireless-power off
        pre-up if [ -f /sys/class/net/wlan9/operstate ]; then ifconfig wlan9 up; fi
        up if [ -f /sys/class/net/wlan9/operstate ]; then dhclient wlan9; fi

Es ist zwar nicht elegant, macht aber das, was ich will: Überspringt die wlan9-Initialisierung ohne Startverzögerung, wenn der drahtlose Dongle nicht angeschlossen ist, andernfalls wird es aufgerufen.

noseratio
quelle
Nett. Aber wie überspringt dies die Initialisierung? Sie stornieren nichts in der pre-upRichtlinie.
Gertvdijk
1
Es wird angenommen, dass dies ein Produkt aus zwei Faktoren ist: 1) Inet-Handbuch - es hängt also wirklich von Pre-Up- Aktionen ab, um etwas zu tun: Wenn es kein Pre-Up oder Up gibt , überspringt der Kernel einfach diese Strophe
noseratio
Ja, könnte sein, aber laut Manpage gelten alle anderen Einstellungen einschließlich wpa-*Anweisungen nicht für die manualMethode. Sieht aus wie eine Art undokumentiertes Verhalten.
Gertvdijk
1
Ich habe den Kommentar durcheinander gebracht, hier ist, was ich sagen wollte: Es ist ein Produkt von zwei Faktoren: 1) Inet-Handbuch - es hängt also wirklich von Pre-Up- Maßnahmen ab, um etwas zu tun: Wenn es kein Pre-Up oder Up gibt , Kernel würde diese Zeilengruppe einfach überspringen. 2) Wenn die Schnittstellen nicht vorhanden sind, wenn [-f / sys / class / net / wlan9 / operstate] 1 zurückgeben würde und die Vorab- Installation fehlschlagen würde, also keine weitere Initialisierung oder Verzögerung.
Noseratio
Das Pre-Up- Verhalten ist tatsächlich dokumentiert, kann sich jedoch in Zukunft ändern, manpages.ubuntu.com/manpages/precise/man5/interfaces.5 . pre-up Befehl ausführen, bevor die Schnittstelle aufgerufen wird. Wenn dieser Befehl fehlschlägt, wird ifup abgebrochen, die Schnittstelle nicht als konfiguriert markiert, eine Fehlermeldung ausgegeben und mit Status 0 beendet. Dieses Verhalten kann sich in Zukunft ändern.
Noseratio