Feste IP-Adresse in Ubuntu 18 LTS

Wie wahrscheinlich jeder verlasse ich mich bei Servern nicht gerne auf die Funktionsfähigkeit des DHCP-Servers, sondern vergebe manuell eine feste IP-Adresse. Diese trage ich zusätzlich noch als statische Zuordnung im DHCP-Server ein (doppelt gemoppelt und nicht notwendig, ich weiß…).

Umso größer war meine Überraschung als ich bei einem frisch installierten Ubuntu 18.04 LTS Server nach einem üblichen

sudo nano /etc/network/interfaces

mit folgender Datei konfrontiert wurde:

# ifupdown has been replaced by netplan(5) on this system. See
# /etc/netplan for current configuration. 
# To re-enable ifupdown on this system, you can run:
# sudo apt install ifupdown

In meiner Naivität dachte ich noch, okay, dann liegt die Datei jetzt eben woanders, blöd, aber gewöhnt man sich schon dran. In /etc/netplan liegt genau eine Datei namens 50-cloud-init.yaml und wenn man dort nun die feste IP konfigurieren will, wartet die nächste Überraschung auf einen.

# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens160:
addresses: []
dhcp4: true
optional: true
version: 2

Auch diese Datei taugt nicht zum editieren, da sie aus einer Datenquelle erstellt wird. Wenn sie jetzt noch verraten würde welche Datenquelle das denn nun genau ist, wäre das super und echt benutzerfreundlich. Aber geht natürlich auch so.

In meinem Fall möchte ich dem Server wie gesagt eine feste IP (192.168.178.88 in einem 24er-Subnet, also 255.255.255.0 als Netzwerkmaske) vergeben, sein Gateway (192.168.178.1) mitteilen und die DNS-Server (192.168.178.83 und 192.168.178.1) konfigurieren. Also wirklich nichts wildes.

Auf geht’s!

sudo nano /etc/netplan/01-network-eth.yaml

In dieser Datei trage ich nun folgendes ein (sollte selbsterklärend sein, ansonsten ist „man netplan“ gar nicht so übel).

network:
ethernets:
ens160:
addresses: [192.168.178.88/24]
gateway4: 192.168.178.1
nameservers:
addresses: [192.168.178.83,192.168.178.1]
version: 2

Um die Syntax der Datei zu prüfen,  empfehle ich dringend ein

sudo netplan --debug generate

Eventuelle Syntaxfehler sieht man damit sofort, in unserem Fall ist aber alles ok.

DEBUG:command generate: running ['/lib/netplan/generate']
** (generate:3408): DEBUG: 12:48:33.405: Processing input file //etc/netplan/01-network-eth.yaml..
** (generate:3408): DEBUG: 12:48:33.406: starting new processing pass
** (generate:3408): DEBUG: 12:48:33.406: ens160: setting default backend to 1
** (generate:3408): DEBUG: 12:48:33.406: Generating output files..
** (generate:3408): DEBUG: 12:48:33.406: NetworkManager: definition ens160 is not for us (backend 1)

Nach einem Neustart ist dann alles wie gehabt und der Server unter seiner festen IP erreichbar.