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 Text-Benutzeroberfläche, nmtui
.
In diesem Tutorial lernen Sie:
- So legen Sie eine statische IP-Adresse fest, indem Sie direkt eine Schnittstellendatei bearbeiten
- Einrichten einer statischen IP-Adresse mit dem Dienstprogramm nmcli
- So legen Sie eine statische IP-Adresse mit nmtui fest
Die bearbeitete Netzwerkschnittstellendatei
Softwareanforderungen und verwendete Konventionen
Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
---|---|
System | RHEL 8 / CentOS 8 |
Software | Die gesamte in diesem Tutorial erwähnte Software ist in einer Minimalinstallation von RHEL 8 oder CentOS 8 enthalten. |
Andere | Berechtigung zum Ausführen des Befehls mit Root-Rechten. |
Konventionen | # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden |
Einführung
In Red Hat Enterprise Linux 8 werden Netzwerkschnittstellen vom NetworkManager
verwaltet Daemon, also müssen wir, um die Einstellungen einer Netzwerkschnittstelle zu ändern, irgendwie damit interagieren. In diesem Tutorial werden wir sehen, wie wir mit drei verschiedenen Methoden eine statische IP-Adresse, ein Gateway und einen DNS-Server für eine NIC festlegen können.
Identifizieren unserer Schnittstelle
Das erste, was wir tun möchten, ist, die Schnittstelle zu finden, die wir ändern möchten. Um alle Schnittstellen auf unserem System aufzulisten, können wir die ip addr
verwenden Befehl:
$ 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 der Ausführung des Befehls auf meiner virtualisierten rhel8-Maschine 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“. Der zweite ist der, der uns interessiert, und derzeit ist seine IPv4-Adresse 192.168.122.189:Wir möchten sie ändern.
Methode 1 – Manuelles Ändern der Schnittstellenkonfigurationsdatei
Für jede vom NetworkManager-Daemon verwaltete Netzwerkschnittstelle wird eine Konfigurationsdatei innerhalb von /etc/sysconfig/network-scripts
erstellt Verzeichnis. Der Name der Datei setzt sich aus dem ifcfg-
zusammen Präfix plus Name der Schnittstelle. Wenn wir uns die Datei ansehen, die sich auf unsere NIC bezieht, 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"
Das BOOTPROTO
Option ist auf dhcp
gesetzt :Die Option legt das beim Booten zu verwendende Protokoll fest, um die IP-Adresse der Schnittstelle festzulegen. Die möglichen Optionen sind:
- none – Es soll kein Protokoll verwendet werden
- bootp – Verwenden Sie das Bootp-Protokoll
- dhcp – Verwenden Sie das DHCP-Protokoll
Da wir eine statische IPv4-Adresse setzen wollen, wollen wir den Wert von BOOTPROTO auf none
ändern und konfigurieren Sie unsere IP, Routenpräfix, Gateway und DNS-Server statisch. Wir können dies erreichen, indem wir jeweils den IPADDR
verwenden , PRÄFIX
, GATEWAY
und DNS
Optionen. Da viele DNS-Server angegeben werden können, muss der DNS
Option muss zusammen mit einer fortlaufenden Nummer angegeben werden, beginnend bei 1. 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 setzen unsere statische IP auf 192.168.122.66
und setzen Sie sowohl unser Gateway als auch unseren DNS-Server auf 192.168.122.1
. Damit unsere Änderungen wirksam werden, müssen wir jetzt die Netzwerkschnittstelle herunter- und wieder hochfahren. Beachten Sie, dass dies bestehende SSH-Verbindungen über diese Schnittstelle unterbrechen wird:
$ sudo nmcli connection down enp1s0 && sudo nmcli connection up enp1s0
Durch Ausführen von ip addr
Befehl erneut, 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 – mit nmcli
Nmcli
ist ein Befehlszeilentool zur Steuerung von NetworkManager. Durch die Verwendung können wir unter anderem die Netzwerkeinstellungen für eine bestimmte Schnittstelle ändern. In unserem Fall müssen wir nmcli mit der connection
verwenden Unterbefehl mit dem modify
oder bearbeiten
Handlung. Mit dem ersten können wir die Einstellungen direkt ändern, während das zweite die nmcli-Shell startet, wo wir interaktiv arbeiten können.
Nmcli direkt verwenden
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/24
Beachten Sie, dass wir das Routing-Präfix zusammen mit der IP mit dem sogenannten CIDR
angegeben haben Notation (Klassen Inter-Domain Routing). 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 die Verwendung eines anderen Boot-Protokolls für die Schnittstelle zu vermeiden. Dieser Befehl setzt die BOOTPROTO-Option in der Interface-Konfigurationsdatei auf none:
$ sudo nmcli connection modify enp1s0 IPv4.method manual
Nmcli-Shell verwenden
Wie oben erwähnt, können wir auch eine interaktive Methode verwenden, um dieselben Änderungen vorzunehmen. Zum Aufrufen der nmcli-Shell
wir verwenden den edit
action, 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 sagt uns, dass die Shell Befehle akzeptiert:Wir können help
eingeben um eine Liste der verfügbaren zu bekommen, 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/24
Das 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> quit
Damit die Änderungen wirksam werden, sollten wir die Benutzeroberfläche erneut mit demselben Befehl laden, den wir zuvor verwendet haben.
Methode 3 – mit nmtui
Neben dem Ändern der Parameter einer Netzwerkschnittstelle durch manuelles Ändern ihrer Datei oder mithilfe des nmcli-Dienstprogramms können wir NetworkManager auch über eine Textbenutzeroberfläche steuern. Um es zu starten, rufen wir einfach nmtui
auf in unserem Terminal:
$ sudo nmtui
Die nmtui-Textbenutzeroberfläche
Wir wählen Verbindung bearbeiten
und dann den Namen der Schnittstelle, die wir manipulieren möchten; Anschließend ändern wir die gewünschten Werte. Zum Beispiel:
Verbindungseinstellungen mit nmtui bearbeiten
Nachdem wir zufrieden sind, wählen wir OK
und drücken Sie die Eingabetaste:Wir kehren zum Schnittstellenauswahlmenü zurück. Diesmal wählen wir zurück
, und wählen Sie dann beenden
beenden. Um die Einstellungen zu übernehmen, müssen wir die Schnittstellenverbindung neu laden:
$ sudo nmcli connection down enp1s0 && sudo nmcli connection up enp1s0
Schlussfolgerungen
In diesem Tutorial haben wir drei Methoden gesehen, die wir verwenden können, um eine statische IP-Adresse auf Red Hat Enterprise Linux 8 festzulegen. Wir sehen, welche Optionen wir ändern und was wir in der Schnittstellenkonfigurationsdatei hinzufügen sollten, wenn wir sie manuell bearbeiten, und wie dies durchgeführt wird Dieselben Änderungen bei Verwendung von nmcli und nmtui, die jeweils ein Befehlszeilendienstprogramm und eine Textbenutzeroberfläche sind:Beide werden zur Steuerung des NetworkManager-Daemons verwendet.