Jak rozpocząć pracę w sieci na interfejsie przewodowym przed zalogowaniem w Ubuntu Desktop Edition

17

Problem

Ubuntu 9.10 Desktop Edition (i być może również poprzednie wersje, nie testowałem ich) nie ma połączeń sieciowych po uruchomieniu, dopóki przynajmniej 1 użytkownik się nie zaloguje. Oznacza to, że wszelkie usługi wymagające sieci (np. Openssh-server) nie będą dostępne do ktoś loguje się lokalnie albo przez gdm, kdm lub TTY.

tło

Ubuntu 9.10 Desktop Edition korzysta z usługi NetworkManager do pobierania poleceń z apletu nm w Gnome (lub jego odpowiedniku w KDE). Jak rozumiem, podczas gdy NetworkManager jest uruchomiony podczas rozruchu, nie wydaje się żadnych poleceń do połączenia, dopóki nie zalogujesz się po raz pierwszy, ponieważ aplet nm nie działa, dopóki się nie zalogujesz i nie rozpocznie się sesja Gnome (lub podobna dla KDE). Nie jestem pewien, co zachęca NetworkManager do połączenia się z siecią podczas logowania przez TTY.

Istnieje kilka odpowiednich zmiennych związanych z uruchamianiem połączeń sieciowych, w tym:

  • Przewodowe a bezprzewodowe (i wynikające z nich sterowniki, SSID, hasła i priorytety)
  • Statyczne vs DHCP
  • Wiele interfejsów

Ograniczenia

  • Wspieraj Ubuntu 9.10 Karmic Koala (punkty bonusowe za dodatkowe obsługiwane wersje)
  • Obsługuje przewodowy interfejs eth0
  • Odbierz adres IP przez DHCP
  • Otrzymuj informacje DNS przez DHCP (oczywiście serwer DHCP musi dostarczyć te informacje)
  • Włącz obsługę sieci w odpowiednim czasie (np. Jakiś czas po załadowaniu systemów plików, ale przed uruchomieniem usług sieciowych, takich jak ssh start)
  • Przełączanie dystrybucji lub wersji (np. Na Server Edition) nie jest akceptowalnym rozwiązaniem
  • Przejście na konfigurację statycznego adresu IP jest niedopuszczalnym rozwiązaniem

Pytanie

  • Jak rozpocząć pracę w sieci na interfejsie przewodowym przed zalogowaniem w Ubuntu Desktop Edition?

Zobacz też

Bibliografia

Tęgi
źródło

Odpowiedzi:

9

Aby interfejs sieciowy był automatycznie konfigurowany przez DHCP podczas uruchamiania, dodaj następujące wiersze do /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp

To powinno sprawić, że Twój interfejs się uruchomi, nawet bez uruchomionego NetworkManagera. Możesz nawet usunąć pakiet menedżera sieci, jeśli chcesz.

Goedson
źródło
Achh, to było tylko literówka, kiedy zadałem pytanie, ale tego właśnie próbowałem. Powiedziawszy to, ponowne uruchomienie /etc/init.d/networking daje: „* Ponowna konfiguracja interfejsów sieciowych ...”, ale interfejs nie został uruchomiony, a tym bardziej uzyskać adres IP. Ponowne uruchomienie nie powoduje uruchomienia interfejsu z tymi ustawieniami.
Burly
Przypuszczam, że: auth eth0 zamiast: auto eth0 w twoim poście jest jeszcze literówka, którą popełniłeś tylko w poście, prawda?
goedson
Właśnie wykonałem nową instalację Ubuntu 9.10, edytowałem / etc / network / interfaces, jak wspomniano powyżej, i sudo /etc/init.d/networking restartwydałem polecenie uruchomienia eth0 i skonfigurowania przez DHCP.
goedson,
O rany, Mega-fail! : facepalm: Nie miałem oryginalnej literówki, o której wspomniałeś, ale w pierwszym wierszu mam „auth” zamiast „auto”. Uważam, że musisz zmodyfikować swoją odpowiedź, aby zmienić głos, ponieważ było za długo (wth?). Usunąłem sekcję „Co próbowałem” z pytania, aby uniknąć nieporozumień, ponieważ popełniłem literówkę. Być może dodaj coś w stylu: „Dodaj następujące, /etc/network/interfacesaby uniemożliwić NetworkManagerowi zarządzanie interfejsem i wywoływanie go przez dhcp” Muszę sprawdzić i zobaczyć, czy ta poprawka uruchomi go przy starcie z zainstalowanym NM…
Burly
Zmieniłem odpowiedź, więc jest jasne, jakie jest rozwiązanie.
goedson
1

Debian / Ubuntu ma własny program do zarządzania serwerami podczas uruchamiania.

Próbować update-rc.d STARTUP-SCRIPT defaults

Wyszukaj konkretny skrypt dla eth0 i włącz go w ten sposób.

Zawsze możesz stworzyć własny skrypt, umieścić go w init.d, a uruchomienie poprzedniego polecenia sprawi, że załaduje się w czasie uruchamiania.

lub po prostu umieść te polecenia (ifconfig up, dhcpcd) w /etc/rc.local (ten plik jest odczytywany za każdym razem podczas uruchamiania)

Sunlight Rider
źródło
Używałem update-rc.d, ale problemem jest zlokalizowanie STARTUP-SCRIPT specyficznego dla eth0. Przynajmniej w Ubuntu 9.10 DE nie ma takiego. Jest tylko skrypt /etc/init.d/networking, który tak naprawdę po prostu wywołuje zadanie początkowe (/ lib / init / update-job start sieciowy jest tym, co konkretnie nazywa). Jak wspomniano powyżej, wywołanie /etc/init.d/networking start, / lib / init / update-job networking start i / lub service networking start / restart nie wywołuje interfejsu, a tym bardziej uzyskania adresu IP. Mógłbym napisać własny skrypt, ale liczyłem na bardziej eleganckie rozwiązanie.
Burly
Umieszczenie dhclient eth0 w rc.local może być moją jedyną opcją. Muszę spróbować, aby zobaczyć, czy to w ogóle działa. Problem z umieszczeniem go tutaj polega na tym, że inne usługi startowe nie mogą tak naprawdę na nim polegać (jak ssh), ponieważ rc.local nie jest uruchamiany, dopóki wszystkie usługi systemowe nie zostaną uruchomione.
Burly
1
Obejście problemu: Dodanie dhclient eth0do /etc/rc.local poprawnie uruchamia interfejs eth0 podczas uruchamiania i uzyskuje adres IP przez DHCP. Przynajmniej dla mnie SSH jest również dostępny, zanim ktokolwiek zaloguje się teraz lokalnie, ponieważ openssh-server jest ustawiony na uruchamianie na poziomach 234. Nie wiem, czy wszystkie usługi sieciowe będą działać poprawnie, mając interfejs uruchomiony w rc.local ( np. ntpdate), ponieważ rc.local jest uruchamiany po usługach systemowych.
Burly