Von der Ubuntu-Schnittstellen-Manpage:
Zeilen, die mit „source“ beginnen, werden verwendet, um Strophen aus anderen Dateien einzuschließen, sodass die Konfiguration in viele Dateien aufgeteilt werden kann. Auf das Wort "Quelle" folgt der Pfad der zu beschaffenden Datei. Shellwildcards können verwendet werden. Unterstützt derzeit nur absolute Pfadnamen.
Diskussion
Der source
Befehl ist die Textversion von .
(Quelle) Syntax. Auf diese Weise können Sie Code aus einer Datei einschließen/importieren und mit einer übergeordneten Datei zusammenführen. Was jedoch aus einer Basisinstallation von Ubuntu 16.04 nicht klar hervorgeht, ist der Grund für die source
Linie wäre die erste. Das heißt, wenn man eine statische IP für die Schnittstelle enp0s3
verwenden wollte unten bedeutet das, dass ich zuerst die iface
auskommentieren/löschen muss Zeile für enp0s3
?
Die Datei und file.d Schema ist ziemlich verbreitet. Wenn Sie den Apache HTTP Server ausführen, haben Sie wahrscheinlich die apache24/conf/httpd.conf gesehen und der Sidekick ist das extra/ Verzeichnis, das weitere *.conf-Dateien enthält (normalerweise httpd-ssl.conf , httpd-vhosts.conf , php.conf , httpd-default.conf , und mehr). In diesem Fall werden Shell-Skripte nicht eingebunden, aber das Prinzip ist im Grunde dasselbe.
Warum macht man das so?
1. Trennung von Anliegen.
Es ist besser, nur eine Schnittstellenkonfiguration zu vermasseln, als etwas zu tun, das mehr als eine Schnittstelle betreffen könnte. Indem die Dinge getrennt gehalten werden, ist es tatsächlich einfacher, Shell-Skripte zu schreiben, die Dinge automatisieren.
Anstatt /etc/network/interfaces
zu sichten mit sed
, grep
, und awk
Für die richtige Schnittstelle können Sie einfach auf die richtige Datei in /etc/network/interfaces.d/
abzielen mit grundlegendem Dateiglobbing.
Indem Sie die Dinge getrennt halten, wird Ihre Wahrscheinlichkeit, Dinge durcheinander zu bringen, dramatisch reduziert.
2. Langfristig bessere Organisation.
Wenn Sie darüber nachdenken, was Interfaces.d/ enthält, enthält es "Instanzen" von Netzwerkschnittstellenkonfigurationen (die ziemlich kompliziert werden können). Auf diese Weise kann die Zeitersparnis beim Scrollen zu interfaces.d/ führen der Weg zu gehen.
Schlussfolgerung
Sie planen ein professionelles Setup? Verwenden Sie /etc/network/interfaces.d/
um die Konfigurationen Ihrer Netzwerkschnittstellen zu speichern (eine Datei pro Schnittstelle).
Sind Sie ein Bastler, der Linux in Ihrem Keller (auf einem Computer mit einer Schnittstelle) verwendet und sich weniger darum kümmern könnte, jemand anderem das Leben zu erleichtern? Verwenden Sie /etc/network/interfaces
und lebe weiter. Kommentieren Sie die Standardkonfigurationseinstellungen aus oder entfernen Sie sie ganz.
Denken Sie daran, obwohl die Manpage für Schnittstellen besagt, dass Schnittstellenkonfigurationsbefehle kumulativ sind und mehrere Protokolle und mehrere IP-Adressen (v4 und v6) auf jeder Schnittstelle zulassen. Am Ende des Tages entscheidest DU, was in /etc/network/interfaces
kommt . Wie die Standard-Loopback-Konfiguration? Kopieren Sie die Konfiguration in eine Datei und fügen Sie sie in /etc/netowork/interfaces.d/
ein .
Machen Sie jetzt dasselbe für alle anderen Standardeinstellungen der Installationsschnittstelle. Hinterlassen Sie eine Notiz in /etc/network/interfaces
dass hier steht:„Diese Datei darf nicht verwendet werden, um Schnittstellenkonfigurationen zu ändern! Suchen Sie in /etc/network/interfaces.d nach der richtigen Schnittstellendatei.
Benennen Sie die Dateien in /etc/netowork/interfaces.d/
mit einer ähnlichen Konvention. Red Hat-Systeme verwenden eine Präfixkonvention für Schnittstellendateien von ifcfg-.
Daher könnte ich fortfahren und diese Konvention in /etc/network/interfaces/d
verwenden , fehlende Führung.
/etc/network/interfaces.d/ifcfg-lo
/etc/network/interfaces.d/ifcfg-enp0s3
Lesen Sie auf jeden Fall man interfaces
.
Viel Glück!