So konfigurieren Sie IP-Netzwerke mit „nmcli“ unter Linux
Als Linux-Administrator stehen Ihnen verschiedene Tools zur Konfiguration Ihrer Netzwerkverbindungen zur Verfügung, z. B. nmtui, Ihr NetworkManager mit GNOME grafischer Benutzeroberfläche und natürlich nmcli (Netzwerkmanager-Befehlszeilentool).
Ich habe beobachtet, dass viele Administratoren nmtui wegen seiner Einfachheit verwenden. Die Verwendung von nmcli spart Ihnen jedoch Zeit, stärkt Ihr Selbstvertrauen, ermöglicht die Integration in Skripte und ist das wichtigste Tool zur Fehlerbehebung bei Linux-Servernetzwerken und zur schnellen Wiederherstellung der Funktionalität.
Da ich zahlreiche Kommentare gesehen habe, in denen um Hilfe zu nmcli gebeten wurde, habe ich beschlossen, diesen Artikel zu schreiben. Natürlich sollten Sie die Manpages immer sorgfältig lesen (sie sind die Ressource Nr. 1 für Sie). Mein Ziel ist es, Ihnen Zeit zu sparen und Ihnen einige hilfreiche Tipps zu geben.
nmcli-Befehlssyntax
Die Syntax von nmcli lautet:
nmcli [OPTIONS] OBJECT {COMMAND | help}
Dabei ist OBJECT
eines von „Allgemein“, „Netzwerk“, „Funk“, „Verbindung“, „Gerät“ und „Agent“.
Überprüfen Sie den Netzwerkgerätestatus unter Linux
Ein guter Ausgangspunkt wäre ein Blick auf unsere Geräte:
nmcli dev status
DEVICE TYPE STATE CONNECTION
docker0 bridge connected docker0
virbr0 bridge connected virbr0
enp0s3 ethernet connected enp0s3
virbr0-nic ethernet disconnected --
lo loopback unmanaged --
Wie wir in der ersten Spalte sehen können, gibt es eine Liste unserer Netzwerkgeräte. Wir haben eine Netzwerkkarte mit dem Namen enp0s3
. Auf Ihrem Computer werden möglicherweise andere Namen angezeigt.
Die Benennung hängt vom Typ der Netzwerkkarte ab (ob Onboard, PCI-Karte usw.). In der letzten Spalte sehen wir unsere Konfigurationsdateien, die von unseren Geräten zur Verbindung mit dem Netzwerk verwendet werden
Es ist leicht zu verstehen, dass unsere Geräte allein nichts bewirken können. Sie benötigen von uns die Erstellung einer Konfigurationsdatei, um ihnen Anweisungen zum Herstellen einer Netzwerkkonnektivität zu geben. Diese Dateien werden auch „Verbindungsprofile“ genannt und wir finden sie im Verzeichnis /etc/sysconfig/network-scripts.
cd /etc/sysconfig/network-scripts/
ls
Beispielausgabe
ifcfg-enp0s3 ifdown-isdn ifup ifup-plip ifup-tunnel
ifcfg-lo ifdown-post ifup-aliases ifup-plusb ifup-wireless
ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global
ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions
ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6
ifdown-ib ifdown-Team ifup-ippp ifup-sit
ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team
ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort
Wie Sie hier sehen können, handelt es sich bei den Dateien, deren Namen mit 'ifcfg-'
beginnen (Schnittstellenkonfiguration), um Verbindungsprofile. Wenn wir mit nmcli oder nmtui eine neue Verbindung erstellen oder eine bestehende ändern, werden die Ergebnisse hier als Verbindungsprofile gespeichert.
Ich zeige Ihnen zwei davon von meinem Rechner, eine mit DHCP-Konfiguration und eine mit statischer IP.
cat ifcfg-static1
cat ifcfg-Myoffice1
Wir sind uns bewusst, dass einige Eigenschaften unterschiedliche Werte haben und andere nicht existieren, wenn sie nicht notwendig sind.
Werfen wir einen kurzen Blick auf die wichtigsten.
TYPE
– wir haben hier den Typ Ethernet. Wir könnten auch WiFi, Team, Bond und andere haben.DEVICE
– der Name des Netzwerkgeräts, das diesem Profil zugeordnet ist.BOOTPROTO
– wenn es den Wert „dhcp“ hat, dann erhält unser Verbindungsprofil eine dynamische IP vom DHCP-Server. Wenn es den Wert „none“ hat, verwendet es keine dynamische IP und wir weisen wahrscheinlich eine statische IP zu.IPADDR
– ist die statische IP, die wir unserem Profil zuweisen.PREFIX
– die Subnetzmaske. Ein Wert von 24 bedeutet 255.255.255,0. Sie können die Subnetzmaske besser verstehen, indem Sie ihr Binärformat notieren. Beispielsweise bedeuten die Werte 16, 24 und 26, dass die ersten 16, 24< sind bzw. 26 Bits werden auf 1 gesetzt, der Rest ist 0. Dies definiert die Netzwerkadresse und den Bereich der IP-Adressen, die zugewiesen werden können.GATEWAY
– die Gateway-IP.DNS1
,DNS2
– zwei DNS-Server, die wir verwenden möchten.ONBOOT
– wenn es den Wert „yes“ hat, bedeutet dies, dass unser Computer beim Booten dieses Profil liest und versucht, es seinem Gerät zuzuweisen.
Überprüfen Sie die Netzwerkverbindung unter Linux
Machen wir nun weiter und überprüfen unsere Verbindungen:
nmcli con show
Die letzte Gerätespalte hilft uns zu verstehen, welche Verbindung aktiv ist und welche nicht. Im Bild oben sehen Sie die beiden aktiven Verbindungen: Myoffice1 und enp0s8.
Hinweis: Wenn Sie nur die aktiven Verbindungen sehen möchten, geben Sie Folgendes ein:
nmcli con show -a
Hinweis: Sie können die automatische Vervollständigung durch Drücken der Tabulatortaste
verwenden, wenn Sie nmcli verwenden, dies ist jedoch besser minimales Format des Befehls.
Somit sind die folgenden Befehle gleich:
nmcli connection show
nmcli con show
nmcli c s
Überprüfen Sie die IP-Adresse unter Linux
Wenn ich die IP-Adressen meiner Geräte überprüfe:
ip a
Ich sehe, dass mein Gerät enp0s3
die IP 192.168.1.6 vom DHCP-Server übernommen hat, weil das aktive Verbindungsprofil Myoffice1
eine DHCP-Konfiguration hat.
Wenn ich mein Verbindungsprofil mit dem Namen static1
„aufrufe“
, nimmt mein Gerät die statische IP 192.168.1.40 an, wie sie im definiert ist Verbindungsprofil.
nmcli con down Myoffice1 ; nmcli con up static1
nmcli con show
Sehen wir uns noch einmal die IP-Adresse an:
ip a
Wir können unser erstes Verbindungsprofil erstellen. Die Mindesteigenschaften, die wir definieren müssen, sind type, ifname und con-name:
type
– für die Art der Verbindung.ifname
– für den Gerätenamen, der unserer Verbindung zugewiesen ist.con-name
– für den Verbindungsnamen.
Erstellen einer neuen Ethernet-Verbindung unter Linux
Lassen Sie uns eine neue Ethernet-Verbindung mit dem Namen Myhome1
herstellen, die einem Gerät enp0s3
zugewiesen ist:
nmcli con add type ethernet con-name Myhome1 ifname enp0s3
Überprüfen Sie die Konfiguration:
cat ifcfg-Myhome1
Wie Sie sehen können, hat es BOOTPROTO=dhcp
, weil wir keine statische IP-Adresse angegeben haben.
Hinweis: Wir können jede Verbindung mit dem Befehl „nmcli con mod“
ändern. Wenn Sie jedoch eine DHCP-Verbindung ändern und diese auf statisch umstellen, vergessen Sie nicht, „ipv4.method“
von „auto“
in „„manual““ zu ändern.
. Andernfalls erhalten Sie zwei IP-Adressen: eine vom DHCP-Server und eine statische.
Erstellen wir ein neues Ethernet-Verbindungsprofil mit dem Namen static2
, das einem Gerät enp0s3
mit statischer IP 192.168.1.50, Subnetz, zugewiesen wird Maske 255.255.255.0=24 und Gateway 192.168.1.1.
nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1
Überprüfen Sie die Konfiguration:
cat ifcfg-static2
Ändern Sie DNS-Server unter Linux
Lassen Sie uns das letzte Verbindungsprofil ändern und zwei DNS-Server hinzufügen.
nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”
Hinweis: Hier müssen Sie etwas beachten: Die Eigenschaften für IP-Adresse und Gateway haben beim Hinzufügen und beim Ändern einer Verbindung unterschiedliche Namen. Wenn Sie Verbindungen hinzufügen, verwenden Sie „ip4“
und „gw4“
, während Sie beim Ändern dieser Verbindungen „ipv4“
und “ verwenden. gwv4 ”
.
Rufen Sie die Ethernet-Verbindung unter Linux auf
Rufen wir nun dieses Verbindungsprofil auf:
nmcli con down static1 ; nmcli con up static2
Wie Sie sehen, hat das Gerät enp0s3
jetzt die IP-Adresse 192.168.1.50.
ip a
Hinweis: Es gibt viele Eigenschaften, die Sie ändern können. Wenn Sie sie nicht auswendig können, können Sie sich selbst helfen, indem Sie „nmcli con show“
und danach den Verbindungsnamen eingeben:
nmcli con show static2
Sie können alle diese in Kleinbuchstaben geschriebenen Eigenschaften ändern.
Beispiel: Wenn Sie ein Verbindungsprofil herunterfahren, sucht der NetworkManager nach einem anderen Verbindungsprofil und ruft es automatisch auf. (Ich belasse es als Übung, um es zu überprüfen). Wenn Sie nicht möchten, dass Ihr Verbindungsprofil automatisch eine Verbindung herstellt:
nmcli con mod static2 connection.autoconnect no
Die letzte Übung ist sehr nützlich: Sie haben ein Verbindungsprofil erstellt, möchten aber, dass es von bestimmten Benutzern verwendet wird. Es ist gut, Ihre Benutzer zu klassifizieren!
Legen Sie die Ethernet-Verbindungsberechtigungen unter Linux auf „Benutzer“ fest
Wir erlauben nur dem Benutzer stella, dieses Profil zu verwenden:
nmcli con mod static2 connection.permissions stella
Hinweis: Wenn Sie mehr als einem Benutzer Berechtigungen erteilen möchten, müssen Sie user:user1,user2
ohne Leerzeichen dazwischen eingeben:
nmcli con mod static2 connection.permissions user:stella,john
Wenn Sie sich als ein anderer Benutzer anmelden, können Sie dieses Verbindungsprofil nicht aufrufen:
nmcli con show
nmcli con up static2
ls /etc/sysconfig/network-scripts
Eine Fehlermeldung besagt, dass die Verbindung „static2“ nicht existiert, auch wenn wir sehen, dass sie existiert. Das liegt daran, dass ein aktueller Benutzer keine Berechtigung hat, diese Verbindung herzustellen.
Fazit: Zögern Sie nicht, nmcli zu verwenden. Es ist einfach und hilfreich.