Jak wywołać interfejs sieciowy tylko wtedy, gdy jest on fizycznie obecny

8

Uruchamianie Ubuntu Server 12.04 (bez GUI). Jaki byłby najlepszy sposób, aby jądro uruchomiło interfejs sieciowy tylko wtedy, gdy jest fizycznie podłączony? Jeśli więc nie istnieje, przejdź do inicjalizacji innych interfejsów (jeśli istnieją) i przejdź do ekranu logowania, bez opóźnień „oczekiwania na konfigurację sieci”.

Np. Mam bezprzewodowy klucz USB wlan9 (w / etc / network / interfaces):

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

Próbowałem zezwolenia na hotplug zamiast auto , w którym to przypadku interfejs nie inicjuje się automatycznie podczas rozruchu i muszę to zrobić ręcznie za pomocą ifup wlan9 . Nie jest to dokładnie to, czego szukam.

Dziękuję Ci.

noseratio
źródło

Odpowiedzi:

4

Również dla serwera: użyj NetworkManager

  1. Zainstaluj to:

    sudo apt-get install network-manager
    

    Niestety pociągnie to za sobą wiele zależności.

  2. Wyłącz obecnie skonfigurowany interfejs w tradycyjny sposób.

    ifdown wlan9
    
  3. Wyłącz wszelkie ustawienia ręczne, /etc/network/interfacesusuwając wszystkie wiersze dotyczące tego interfejsu.

  4. Dodaj ustawienie połączenia bezprzewodowego w /etc/NetworkManager/system-connections/(utwórz nazwę):

    [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
    
    • Aby uuidużyć polecenia, uuidgenaby wygenerować losowy.
    • Aby mac-addressużyć adresu MAC karty sieci bezprzewodowej (użyj, ifconfig -a wlan9aby się dowiedzieć). Powiąże to ten plik konfiguracyjny tylko z tym adapterem - jeśli go nie ma, nie użyje go dla innego adaptera ani nie będzie czekać na obecność adaptera.
    • Mam nadzieję, że inne dziedziny mówią same za siebie. :)
  5. Uruchom ponownie NetworkManager lub uruchom ponownie.

    restart network-manager
    
gertvdijk
źródło
Dziękuję, opcja Network Managera wydaje się nieco ciężka, ale przejdę do niej, jeśli nie znajdę czegoś lżejszego. ifplugd prawie działał, wlan9 idzie w górę, ale nie uzyskuje dzierżawy DHCP.
noseratio
@Noseratio Tak, zgadzam się, że tak naprawdę nie jest to lekkie rozwiązanie. Gdybym znał bardziej lekkiego menedżera sieci bez zależności GUI, użyłbym tego w swojej odpowiedzi. :)
gertvdijk
@gertvdijk Czy możesz mi powiedzieć, co się stanie, jeśli usunę mac-addresslinię? Czy będzie działać dla wszystkich adapterów, czy zawiesi się?
DangeMask
@DangeMask Powinien po prostu działać dla wszystkich adapterów, które zakładam. Po prostu spróbuj się dowiedzieć?
gertvdijk
@gertvdijk Próbowałem właśnie teraz. Jeśli usunę „adres MAC urządzenia” (usunięty w graficznym interfejsie użytkownika, znika również w pliku), Menedżer sieci nie połączy się automatycznie nawet po jednym ręcznym połączeniu i ponownym uruchomieniu. Próbowałem nawet ustawić ifupdown> udało się true i false bez powodzenia.
DangeMask,
3

i przejdź do ekranu logowania

Sugeruje, że korzystasz z instalacji z interfejsem GUI (bez serwera) - dlatego odpowiadam na tę odpowiedź.


Wystarczy użyć NetworkManager

  1. Opuść interfejs.

    ifdown wlan9
    
  2. Wyłącz wszelkie ustawienia ręczne, /etc/network/interfacesusuwając wszystkie wiersze dotyczące tego interfejsu.

  3. Przejdź do ustawień sieciowych i dodaj / edytuj połączenie z siecią bezprzewodową.

  4. Skonfiguruj go w następujący sposób (patrz zrzut ekranu poniżej):

    1. Niech łączy się automatycznie.

    2. Zastosuj go do właściwej karty sieci bezprzewodowej, wybierając odpowiedni adres MAC. Jeśli adapter nie jest obecny, te ustawienia połączenia w tym oknie dialogowym nie będą miały zastosowania, więc „wiąże” je z tym konkretnym adapterem (ponieważ każdy adapter ma inny adres MAC). I nie, to nie jest adres MAC punktu dostępowego WiFi - to BSSID.

    3. Udostępnij go wszystkim użytkownikom (dzięki temu automatycznie łączy się już na ekranie logowania). Pamiętaj, że to ustawienie jest wyszarzone, dopóki nie podasz niezbędnych informacji.

    I oczywiście wprowadź również inne szczegóły dotyczące bezpieczeństwa, SSID itp.

    wprowadź opis zdjęcia tutaj

gertvdijk
źródło
Przepraszam, zapomniałem podać, że jest to Ubuntu Server. W każdym razie dziękuję, zapisałem tę podpowiedź na potrzeby mojego pulpitu.
noseratio
1
@Noseratio Ah ... szkoda. Teraz piszę odpowiedź na temat instalacji serwera. Następnym razem prosimy o bardziej szczegółowe i kompletne pytanie.
gertvdijk
Będę. Proszę wybaczyć
noobowi
3

Wymyśliłem następujące rozwiązanie, które nie zależy od żadnych dodatkowych pakietów:

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

Chociaż może nie być elegancki, robi to, co chcę: pomija inicjalizację wlan9 bez opóźnienia rozruchu, jeśli klucz bezprzewodowy nie jest podłączony, w przeciwnym razie wywołuje go.

noseratio
źródło
Miły. Ale jak to pomija inicjalizację? Nie anulujesz niczego w pre-updyrektywie.
gertvdijk
1
To, że jest to produkt z dwóch czynników: 1) inet ręczny - tak naprawdę opiera się na pre-up akcji nic zrobić: jeśli nie ma pre-up lub w górę , jądro po prostu pomija ten zwrotka
noseratio
Tak, może być, ale według strony podręcznika wszystkie inne ustawienia, w tym wpa-*dyrektywy, nie dotyczą tej manualmetody. Wygląda jak rodzaj nieudokumentowanego zachowania.
gertvdijk
1
Pomyliłem się z komentarzem, oto co chciałem powiedzieć: Sądzę, że jest to wynik dwóch czynników: 1) Inet manual - więc naprawdę zależy od akcji przygotowawczej, aby cokolwiek zrobić: jeśli nie ma żadnej wstępnej lub dodatkowej , jądro po prostu pominie tę sekcję 2) Jeśli interfejsy nie istnieją, jeśli [-f / sys / class / net / wlan9 / operstate] zwróci 1, a wstępne przygotowanie zakończy się niepowodzeniem, więc nie będzie następnej inicjalizacji ani opóźnienia.
noseratio
Zachowanie wstępne jest faktycznie udokumentowane, ale może się w przyszłości zmienić, manpages.ubuntu.com/manpages/precise/man5/interfaces.5 . pre-up Uruchom komendę przed uruchomieniem interfejsu. Jeśli to polecenie się nie powiedzie, ifup przerywa, nie zaznaczając interfejsu jako skonfigurowanego, drukuje komunikat o błędzie i wychodzi ze statusem 0. To zachowanie może się zmienić w przyszłości.
noseratio