Ubuntu 18.04: przełącz się z powrotem do / etc / network / interfaces

44

Począwszy od około Ubuntu 18.04, deweloperzy Ubuntu przestali używać klasycznej /etc/init.d/networkingi /etc/network/interfacesmetody konfiguracji sieci i przełączyli się na coś zwanego netplan. To bardzo rozzłościło wielu ludzi i zostało powszechnie uznane za zły ruch. Czy można usunąć netplani użyć poprawnej /etc/network/interfacesmetody konfiguracji sieci?

jdgregson
źródło
2
Dlaczego nie po prostu skonfigurować za pomocą Netplan? W większości sytuacji jest to dość proste.
chili555
3
@ chili555 Być może muszę po prostu zaakceptować zmianę i nauczyć się czegoś nowego. Chciałbym tylko wiedzieć, czy powrót do stanu, w jakim powinien być, jest banalny. Podobnie systemdrozumiem, że destrukcyjne zmiany mogą czasem być korzystne i zostać uwzględnione. Jednak z pewnością nie jest to jeden z tych czasów, kiedy zmiana była potrzebna lub korzystna.
jdgregson
1
Nie jest to trywialne i nie jest łatwo odwracalne w przypadku błędu. Jeśli chcesz żyć niebezpiecznie, chętnie zaproponuję odpowiedź. Z drugiej strony możemy skonfigurować netplan w kilka minut. Który wolisz? PS - Nie udaję, że w pełni rozumiem, w jaki sposób netplan, z wyłączeniem /etc/network/interfaces, pasuje do większego obrazu systemowego. Mogę tylko zaufać, że ci, którzy wprowadzili zmianę, wiedzą, dlaczego jest to lepsze dopasowanie.
chili555
1
Lub po prostu odpowiednio skonfiguruj netplan i gotowe.
chili555
1
@ chili555 Netplan nie obsługuje wirtualnych interfejsów sieciowych. Zobacz tutaj: askubuntu.com/questions/990825/virtual-interface-in-netplan
user3751385

Odpowiedzi:

43

Poniższa procedura działa dla Ubuntu 18.04 (Bionic Beaver)

I. Ponownie zainstaluj pakiet ifupdown :

# apt-get update
# apt-get install ifupdown

II. Skonfiguruj plik / etc / network / interfaces za pomocą sekcji konfiguracji, takich jak:

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet static
  address 192.168.1.133
  netmask 255.255.255.0
  broadcast 192.168.1.255
  gateway 192.168.1.1
  # Only relevant if you make use of RESOLVCONF(8)
  # or similar...
  dns-nameservers 1.1.1.1 1.0.0.1

III. Uczyń konfigurację skuteczną (nie jest wymagane ponowne uruchomienie):

# ifdown --force enp0s3 lo && ifup -a
# systemctl unmask networking
# systemctl enable networking
# systemctl restart networking

IV. Wyłącz i usuń niechciane usługi:

# systemctl stop systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl disable systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# systemctl mask systemd-networkd.socket systemd-networkd \
networkd-dispatcher systemd-networkd-wait-online
# apt-get --assume-yes purge nplan netplan.io

Więc skończyłeś.

Uwaga: Państwo musi oczywiście dostosować wartości w zależności od systemu (sieci, nazwa interfejsu ...).

V. Resolver DNS

Ponieważ Ubuntu Bionic Beaver (18.04) korzysta z mechanizmu rozpoznawania kodów pośredniczących DNS dostarczonego przez SYSTEMD-RESOLVED.SERVICE (8), POWINIENEŚ także dodać DNS do kontaktu z plikiem /etc/systemd/resolved.conf. Na przykład:

....
DNS=1.1.1.1 1.0.0.1
....

a następnie ponownie uruchom usługę rozwiązaną przez system po zakończeniu:

# systemctl restart systemd-resolved

Wpisy DNS w pliku INTERFACES (5) ifupdown, jak pokazano powyżej, są istotne tylko wtedy, gdy używasz RESOLVCONF (8) lub podobnego.

Nuxwin
źródło
9
Cóż, do cholery. Właśnie apt-get installwtedy, gdy nie masz konfiguracji sieci. Co za wspaniały pomysł, kanoniczny.
Velkan
1
@Velkan Zawsze możesz wstępnie skonfigurować sieć za pomocą netplan, a następnie przełączyć się z powrotem na ifupdown;) Ale zgodziłem się z tobą. W jakiś sposób kanoniczne podejmują złe decyzje. Na przykład łamią oprogramowanie, które do konfiguracji sieci korzysta z ifupdown (nie ma dostawcy Netplanu). Tak jest w przypadku naszego oprogramowania panelu sterowania (stabilna seria), w którym nie chcemy dodawać nowego dostawcy konfiguracji sieci ...
Nuxwin,
3
@StephenBoston Całkowicie się z tobą zgadzam. Jednak nawet jeśli Canonical spróbuje wprowadzić nową technologię, może to zrobić w mniej inwazyjny sposób. To znaczy, wybór należy pozostawić użytkownikowi końcowemu. W przypadku stacji roboczych zmiana z ifupdown na netplan z pewnością nie jest wielką sprawą, ale kiedy masz do czynienia z serwerami Ubuntu, to inna historia, ponieważ większość stabilnych programów niekoniecznie zapewnia adaptery ... To samo dotyczy systemd. Mam do czynienia zarówno z Debianem, jak i Ubuntu na co dzień. Problem z Ubuntu polega na tym, że nie dbają o kompatybilność wsteczną.
Nuxwin,
1
Drobna korekta: # systemctl unmak networking-># systemctl unmask networking
Santosh
1
Ponadto, jeśli używasz dns-domainiw dns-searchpliku interfejsów, powinieneś skonfigurować Domainsparametr w resolved.conf, tak myślę? W każdym razie, świetna robota, łącząc to wszystko tutaj, prawdopodobnie zaoszczędziło mi dużo czasu :)
OttoEisen
10

Zespół Netplan opublikował oficjalną odpowiedź na często zadawanych pytaniach tutaj :

Jak wrócić do ifupdown

...

W działającym systemie netplan można usunąć, instalując ifupdown i ręcznie konfigurując / etc / network / interfaces, tak jak zrobili to wcześniej użytkownicy.

W czasie instalacji użytkownik może zdecydować się na użycie ifupdown przez wstępne użycie netcfg / do_not_use_netplan = true. Odbywa się to poprzez dodanie wstępnie ustawionego wiersza do wiersza poleceń podczas uruchamiania nośnika instalacyjnego (tj. W menu rozruchowym nośnika instalacyjnego naciśnij klawisz F6, wpisz „e” i dodaj do wiersza polecenia).

Zobacz pełną odpowiedź Nuxwina.

jdgregson
źródło
9

Netplan i yaml są co najwyżej delikatne w środowisku tylko na serwerze (błędy wcięcia będą cię kosztować). Interfejsy były na tyle wybaczające, że znacznie ułatwiły zarządzanie ustawieniami sieciowymi na serwerze.
Netplan wprowadza nowe warstwy. Ale prawdziwym problemem jest to, że U18 psuje ifupdown i nie kończy zadania z NetPlan. Jeśli powrócisz do / etc / network / interfaces przez ponowną instalację ifupdown zarządzanie DNS nie działa już w pliku interfejsów. Wszelkie wpisy dns-nameservers są ignorowane. Zamiast tego dns jest ustawiony w /etc/resolv.conf. Ale nie możesz edytować tego pliku, ponieważ jest on ponownie zapisywany przy każdym uruchomieniu komputera. WTF? Netplan został zaprojektowany do zarządzania przez GUI, więc ci z nas w obozie tylko dla serwerów mają kruchy system, który musimy omijać. Nie dobre Ubuntu!
dlaczego nie dać nam sposobu przekierowania ustawień w / etc / network / interfaces do netplan podczas uruchamiania, aby pomóc nam w zakończeniu Netplan?

Dan Desjardins
źródło
1
jak to odpowiada na pytanie?
Pierre.Vriens
@Dan Desjardins Zobacz zaakceptowaną odpowiedź dotyczącą problemu z rozpoznawaniem nazw DNS. Zasadniczo wpisy DNS, które umieściłeś w pliku INTERFEJSU (5) ifupdown, są istotne tylko wtedy, gdy używasz resolvconf (8) lub podobnego. W przypadku translatora kodów pośredniczących DNS dostarczonego przez SYSTEMD-RESOLVED.SERVICE (8, musisz dodać swój DNS do pliku /etc/systemd/resolved.conf. Wykonanie tego spowoduje, że będą trwałe. Innym rozwiązaniem jest wyłączenie SYSTEMD-RESOLVED. SERWIS (8) usługa i instalacja / konfiguracja resolvconf (8). Mam nadzieję, że będę wystarczająco jasny
Nuxwin
2

Dlaczego nie po prostu skonfigurować za pomocą Netplan?

Cóż, jak skonfigurowano w 18.04-Desktop, jest to pojedyncza linia przekazująca kontrolę nad wszystkimi interfejsami do NetworkManager.

Chociaż jest to prawdopodobnie odpowiednie dla 95% użytkowników, pamiętaj, że NetworkManager jest uruchamiany tylko po zalogowaniu się do sesji.

Jeśli chcesz, aby Twój komputer działał jako serwer / komputer stacjonarny, na przykład zacznij udostępniać pliki na komputerach lokalnych, działając jako serwer VNP itp. Itp. Lub coś „fantazyjnego”, zanim ktokolwiek się zaloguje, po prostu dlatego, że tak jest na, będziesz mieć problemy ze konfiguracją w standardowym 18.04-Desktop.

Oczywiście alternatywą byłoby użycie konfiguracji serwer-Netplan, która, o ile przeczytałem (nie sprawdziłem przez siebie), przekazuje kontrolę nad systemd-networkd. W takim przypadku powinieneś dowiedzieć się, jak systemd robi rzeczy, zastępując starą init z Systemu V.

Jeśli pójdziesz tą ścieżką, nadal musisz wprowadzić zmiany w netplan yaml, ponieważ w wersji komputerowej kontrola jest przekazywana NetworkManagerowi.

Zakhar
źródło
3
Istnieje co najmniej jeden powód: Netplan nie obsługuje openvswitch.
Kamilion
5
netplan nie obsługuje aliasów IP (styl eth0: 0). Nie mogę uwierzyć, jak coś takiego mogło trafić na serwer Ubuntu!
Hamid Fadishei,
Ponieważ moje netplankatalogi są puste!
dsgdfg
Usługa NetworkManager uruchamia się dość wcześnie i nie wymaga sesji ani zalogowanego użytkownika.
dolny
1

Kluczem jest wiedza, że cloud.initto prawdziwy program kontroli.
Biorąc to pod uwagę, wiersz w netplanpliku konfiguracyjnym „opcjonalne: prawda” jest obowiązkowy.
Wiedząc, że to ułatwiło.

Właśnie usunąłem 01-network-manager-all.yamli skopiowałem to /root/save/. Następnie zamiast tego umieść znaną dobrą konfigurację 50-cloud-init.yaml: jej zawartość jest następująca:

network:
  version: 2
  renderer: networkd
  ethernets:
    eports:
      match: 
        name: enp*
        optional: true
  bonds:
    bond0:
      interfaces: [eports]
      addresses: [192.168.2.5/24]
      gateway4: 192.168.2.1
      nameservers:
        addresses: [127.0.0.1, 8.8.4.4]          
      parameters:
        mode: 0          
        mii-monitor-interval: 100

Następnie uruchom ponownie i powinno działać dobrze.

Znana dobra konfiguracja pochodzi z Konfiguruj połączoną sieć 802.3ad za pomocą netplan na Ubuntu 18.04 .

pksings
źródło
1
Pytanie brzmi: jak wrócić do ifupdown;) W przyszłości powinieneś spróbować odpowiedzieć na pytania, nie zanieczyszczając ich, nawet poprzez nie zawsze łatwo jest trzymać się początkowego tematu;)
Nuxwin
0

Zgodnie z tą odpowiedzią rozwiązaniem jest usunięcie wszystkich działających plików .yaml: Ubuntu 17.10 wyłącza netplan

Nie usunę niczego bez tworzenia kopii zapasowej. Możemy to zrobić łatwo, po prostu przenosząc pliki na bok. Najpierw zlokalizuj pliki:

sudo updatedb
locate netplan | grep yaml

W moim systemie 18.04 wydaje się, że jedynym plikiem operacyjnym jest /etc/netplan/01-network-manager-all.yaml. Przenieśmy to:

mkdir ~/netplan
sudo mv /etc/netplan/01-network-manager-all.yaml  /home/user/netplan

... gdzie użytkownik to Twoja nazwa użytkownika.

Teraz sprawdź, czy plik naprawdę zniknął:

ls /etc/netplan

Teraz dodaj wymagane elementy do / etc / network / interfaces.

Restart.

Jakaś poprawa?

Przypis: Trudno znaleźć dokładny proces, aby to zrobić. Być może będziemy musieli dopracować nieco w miarę upływu czasu.

chili555
źródło
Będę musiał tego spróbować i zobaczyć, jak to będzie. Jedynym innym pytaniem byłoby, jak zastosować zmiany bez ponownego uruchamiania. W przeszłości można użyć ifup/ ifdown, /etc/init.d/networking restart, service networking restartoraz metody Systemd, jak systemctl restart networking, systemctl restart Network-Manager.serviceitp, ale żaden z nich nie było możliwe dla mnie po zainstalowaniu Ubuntu 18.04.
jdgregson
Co jest wynikiem: sudo ip link set eth0 downa następnie: sudo ifup -v eth0Oczywiście zamień swój interfejs na mityczny eth0.
chili555
ifupdownnie jest instalowany domyślnie, więc po wywołaniu ifupmówi po prostu, jak go zainstalować. sudo ip link set eth0 downNastępuje jednak sudo ip link set eth0 upwyłączenie i ponowne włączenie interfejsu.
jdgregson
Niesamowite! Więc jesteś rozwiązany i gotowy?
chili555
Ostrożnie, nie wszystkie pliki * .yaml są powiązane z netplan, więc usuwaj tylko te z katalogów powiązanych z netplan!
JanC