Website-Suche

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.