Konfigurieren einer statischen IP-Adresse unter RHEL 8/CentOS 8 Linux
Es gibt viele Fälle, in denen wir eine statische IP für eine Netzwerkschnittstelle festlegen möchten. In RHEL 8/CentOS 8 werden die Netzwerkverbindungen vom NetworkManager-Daemon verwaltet, daher sehen wir in diesem Tutorial, wie wir eine solche Aufgabe ausführen können, indem wir eine Schnittstellendatei direkt bearbeiten, indem wir ein Befehlszeilenprogramm, nmcli, oder über eine Textbenutzeroberfläche, nmtui, verwenden.
In diesem Tutorial lernen Sie:
- So legen Sie eine statische IP-Adresse fest, indem Sie eine Schnittstellendatei direkt bearbeiten
- So legen Sie eine statische IP-Adresse mit dem Dienstprogramm nmcli fest
- So legen Sie eine statische IP-Adresse mit nmtui fest
Die bearbeitete Netzwerkschnittstellendatei
Verwendete Softwareanforderungen und Konventionen
Einleitung
In Red Hat Enterprise Linux 8 werden Netzwerkschnittstellen vom NetworkManager-Daemon verwaltet, so dass wir irgendwie mit ihm interagieren müssen, um die Einstellungen einer Netzwerkschnittstelle zu ändern. In diesem Tutorial werden wir sehen, wie wir eine statische IP-Adresse, ein Gateway und einen DNS-Server für eine Netzwerkkarte festlegen können, indem wir drei verschiedene Methoden verwenden.
Identifizierung unserer Schnittstelle
Das erste, was wir tun wollen, ist, die Schnittstelle zu finden, die wir ändern möchten. Um alle Schnittstellen auf unserem System aufzulisten, können wir den Befehl ip addr verwenden:
ip addr
1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp1s0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet 192.168.122.189/24 brd 192.168.122.255 scope global dynamic noprefixroute enp1s0
valid_lft 3004sec preferred_lft 3004sec
inet6 fe80::9ab6:ba48:1ddd:a8e1/64 scope link noprefixroute
valid_lft forever preferred_lft forever
</broadcast,multicast,up,lower_up></loopback,up,lower_up>
In der obigen Ausgabe, die das Ergebnis des Ausführens des Befehls auf meinem virtualisierten rhel8-Computer ist, sehen wir zwei Schnittstellen: lo und enp1s0. Die erste ist eine "virtuelle" Schnittstelle, die vom System verwendet wird, um mit sich selbst zu "sprechen". Die zweite ist diejenige, die uns interessiert, und derzeit lautet ihre IPv4-Adresse 192.168.122.189: Wir möchten sie ändern.
Methode 1 – Manuelles Ändern der Schnittstellenkonfigurationsdatei
Für jede Netzwerkschnittstelle, die vom NetworkManager-Daemon verwaltet wird, wird eine Konfigurationsdatei im Verzeichnis /etc/sysconfig/network-scripts erstellt. Der Name der Datei setzt sich aus dem Präfix ifcfg- und dem Namen der Schnittstelle zusammen. Wenn wir die Datei im Zusammenhang mit unserer NIC überprüfen, können wir ihre tatsächliche Einrichtung sehen:
cat /etc/sysconfig/network-scrIPts/ifcfg-enp1s0
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp1s0"
UUID="d5f41bf4-de0a-43b3-b633-7e2ec6212e58"
DEVICE="enp1s0"
ONBOOT="yes"
Die Option BOOTPROTO ist auf dhcp gesetzt: Die Option legt das Protokoll fest, das beim Booten verwendet werden soll, um die IP-Adresse der Schnittstelle festzulegen. Die möglichen Optionen sind:
- none – Es sollte kein Protokoll verwendet werden
- bootp – Verwenden Sie das bootp-Protokoll
- dhcp – Verwende das DHCP-Protokoll
Da wir eine statische IPv4-Adresse setzen wollen, wollen wir den Wert von BOOTPROTO auf none ändern und unsere IP, das Routenpräfix, das Gateway und den DNS-Server statisch konfigurieren. Wir können dies erreichen, indem wir die Optionen IPADDR, PREFIX, GATEWAY und DNS verwenden. Da viele DNS-Server angegeben werden können, muss die DNS-Option zusammen mit einer progressiven Zahl, beginnend mit 1, gemeldet werden. Nach den erforderlichen Änderungen sollte unsere Datei wie folgt aussehen
:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp1s0"
UUID="d5f41bf4-de0a-43b3-b633-7e2ec6212e58"
DEVICE="enp1s0"
ONBOOT="yes"
IPADDR=192.168.122.66
PREFIX=24
GATEWAY=192.168.122.1
DNS1=192.168.122.1
Wir haben unsere statische IP auf 192.168.122.66 und sowohl unser Gateway als auch unseren DNS-Server auf 192.168.122.1 festgelegt. Um unsere Änderungen wirksam zu machen, müssen wir nun die Netzwerkschnittstelle ab- und wieder hochfahren. Beachten Sie, dass dies bestehende SSH-Verbindungen über diese Schnittstelle unterbrechen wird:
sudo nmcli connection down enp1s0 && sudo nmcli connection up enp1s0Indem wir den Befehl ip addr erneut ausführen, können wir überprüfen, ob sich die IP geändert hat:
IP addr|grep enp1s0|grep inet
inet 192.168.122.66/24 brd 192.168.122.255 scope global noprefix
Methode 2 – Verwenden von nmcli
Nmcli ist ein Befehlszeilentool, das zur Steuerung von NetworkManager verwendet wird. Durch die Verwendung können wir unter anderem die Netzwerkeinstellungen für eine bestimmte Schnittstelle ändern. In unserem Fall müssen wir nmcli mit dem Unterbefehl connection mit der Aktion modify oder edit verwenden. Mit der ersten können wir die Einstellungen direkt ändern, während die zweite die nmcli-Shell startet, in der wir interaktiv arbeiten können.
Direktes Verwenden von nmcli
Um die IP-Adresse der Schnittstelle "enp1s0" mit einem direkten nmcli-Befehl zu ändern, führen wir Folgendes aus:
sudo nmcli connection modify enp1s0 IPv4.address 192.168.122.66/24Beachten Sie, dass wir das Routing-Präfix zusammen mit der IP in der sogenannten CIDR-Notation (Classes Inter-Domain Routing) angegeben haben. Wir verwenden eine ähnliche Syntax, um das Gateway und die DNS-Einstellungen zu ändern:
sudo nmcli connection modify enp1s0 IPv4.gateway 192.168.122.1
sudo nmcli connection modify enp1s0 IPv4.dns 192.168.122.1
Schließlich setzen wir die Methode auf manuell, um zu vermeiden, dass ein anderes Boot-Protokoll für die Schnittstelle verwendet wird. Mit diesem Befehl wird die Option BOOTPROTO in der Schnittstellenkonfigurationsdatei auf none gesetzt:
sudo nmcli connection modify enp1s0 IPv4.method manualVerwenden der nmcli-Shell
Wie wir oben erwähnt haben, können wir auch eine interaktive Methode verwenden, um die gleichen Änderungen vorzunehmen. Um die nmcli-Shell aufzurufen, verwenden wir die Bearbeiten-Aktion, gefolgt vom Namen der Schnittstelle, die wir bearbeiten möchten:
sudo nmcli connection edit enp1s0
===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'enp1s0'
Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [.]' for detailed property descrIPtion.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, IPv4, IPv6, tc, proxy
nmcli>
Der blinkende Cursor zeigt uns an, dass die Shell Befehle akzeptiert: Wir können help eingeben, um eine Liste der verfügbaren zu erhalten, print, um alle Verbindungseigenschaften zu sehen, oder describe gefolgt von einer Einstellung und einer ihrer Eigenschaften (dargestellt durch eine Punktnotation), um eine Beschreibung der letzteren zu erhalten. Zum Beispiel:
nmcli>
nmcli> describe IPv4.address
=== [addresses] ===
[NM property descrIPtion]
Array of IP addresses.
[nmcli specific descrIPtion]
Enter a list of IPv4 addresses formatted as:
IP[/prefix], IP[/prefix],...
Missing prefix is regarded as prefix of 32.
Example: 192.168.1.5/24, 10.0.0.11/24
So ändern Sie die Adresse unserer Schnittstelle:
nmcli> set IPv4.address 192.168.122.66/24Das gleiche Prinzip wird verwendet, um die anderen Eigenschaften zu ändern:
nmcli> set IPv4.gateway 192.168.122.1
nmcli> set IPv4.dns 192.168.122.1
nmcli> set IPv4.method manual
Um die vorgenommenen Änderungen zu speichern, müssen wir noch einen letzten Befehl ausführen:
nmcli> save
Connection 'enp1s0' (d5f41bf4-de0a-43b3-b633-7e2ec6212e58) successfully updated.
Um die nmcli-Shell zu verlassen, geben Sie einfach quit ein und drücken Sie die Eingabetaste:
nmcli> quitUm die Änderungen wirksam zu machen, sollten wir die Schnittstelle mit dem gleichen Befehl neu laden, den wir zuvor verwendet haben.
Methode 3 – mit nmtui
Abgesehen von der Änderung der Parameter einer Netzwerkschnittstelle durch manuelles Ändern der Datei oder durch Verwendung des Dienstprogramms nmcli können wir NetworkManager auch über eine Textbenutzeroberfläche steuern. Um es zu starten, rufen wir einfach nmtui in unserem Terminal auf:
sudo nmtuiDie nmtui text-Benutzeroberfläche
Wir wählen Verbindung bearbeiten und dann den Namen der Schnittstelle, die wir bearbeiten möchten. Anschließend fahren wir mit der Änderung der gewünschten Werte fort. Zum Beispiel:
Bearbeiten von Verbindungseinstellungen mit nmtui
Nachdem wir zufrieden sind, wählen wir OK und drücken die Eingabetaste: Wir werden zurück zum Auswahlmenü der Benutzeroberfläche gebracht. Dieses Mal wählen wir Zurück und dann Beenden, um den Vorgang zu beenden. Um die Einstellungen zu übernehmen, müssen wir die Schnittstellenverbindung neu laden:
sudo nmcli connection down enp1s0 && sudo nmcli connection up enp1s0Schlüsse
In diesem Tutorial haben wir drei Methoden gesehen, mit denen wir eine statische IP-Adresse unter Red Hat Enterprise Linux 8 festlegen können. Wir sehen, welche Optionen wir ändern sollten und was wir in der Schnittstellenkonfigurationsdatei hinzufügen sollten, wenn wir sie manuell bearbeiten, und wie wir die gleichen Änderungen mit nmcli und nmtui vornehmen können, die jeweils ein Befehlszeilenprogramm und eine Textbenutzeroberfläche sind: Beide werden verwendet, um den NetworkManager-Daemon zu steuern.