Πώς να διαμορφώσετε τη δικτύωση IP με το 'nmcli' στο Linux


Ως διαχειριστής Linux, έχετε διάφορα εργαλεία που μπορείτε να χρησιμοποιήσετε για να διαμορφώσετε τις συνδέσεις δικτύου σας, όπως το nmtui, το NetworkManager με το γραφικό περιβάλλον χρήστη GNOME και φυσικά το nmcli (εργαλείο γραμμής εντολών διαχείρισης δικτύου).

Έχω παρατηρήσει πολλούς διαχειριστές να χρησιμοποιούν το nmtui για την απλότητά του. Ωστόσο, η χρήση του nmcli σας εξοικονομεί χρόνο, ενισχύει την αυτοπεποίθησή σας, επιτρέπει την ενσωμάτωση σε σενάρια και είναι το κύριο εργαλείο για την αντιμετώπιση προβλημάτων δικτύωσης διακομιστή Linux, αποκαθιστώντας γρήγορα τη λειτουργικότητά του.

Έχοντας παρατηρήσει πολλά σχόλια που ζητούσαν βοήθεια με το nmcli, αποφάσισα να γράψω αυτό το άρθρο. Φυσικά, θα πρέπει πάντα να διαβάζετε προσεκτικά τις σελίδες man (είναι ο Νο. 1 πόρος για εσάς). Στόχος μου είναι να σας εξοικονομήσω χρόνο και να σας δώσω μερικές χρήσιμες συμβουλές.

Σύνταξη εντολών nmcli

Η σύνταξη του nmcli είναι:

nmcli [OPTIONS] OBJECT {COMMAND | help}

Όπου το OBJECT είναι ένα από τα γενικά, δικτύωση, ραδιόφωνο, σύνδεση, συσκευή και πράκτορα.

Ελέγξτε την κατάσταση συσκευής δικτύου στο Linux

Ένα καλό σημείο εκκίνησης θα ήταν να ελέγξουμε τις συσκευές μας:

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     --         

Όπως μπορούμε να δούμε στην πρώτη στήλη, υπάρχει μια λίστα με τις συσκευές δικτύου μας. Έχουμε μία κάρτα δικτύου με το όνομα enp0s3. Στον υπολογιστή σας, ενδέχεται να δείτε διαφορετικά ονόματα.

Η ονομασία εξαρτάται από τον τύπο της κάρτας δικτύου (είτε είναι onboard, κάρτα PCI κ.λπ.). Στην τελευταία στήλη, βλέπουμε τα αρχεία διαμόρφωσής μας, τα οποία χρησιμοποιούνται από τις συσκευές μας για σύνδεση στο δίκτυο

Είναι απλό να καταλάβουμε ότι οι συσκευές μας, από μόνες τους, δεν μπορούν να κάνουν τίποτα. Χρειάζονται να δημιουργήσουμε ένα αρχείο διαμόρφωσης για να τους καθοδηγήσουμε πώς να επιτύχουν συνδεσιμότητα δικτύου. Αυτά τα αρχεία ονομάζονται επίσης "προφίλ σύνδεσης" και τα βρίσκουμε στον κατάλογο /etc/sysconfig/network-scripts.

cd /etc/sysconfig/network-scripts/
ls
Δείγμα εξόδου
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

Όπως μπορείτε να δείτε εδώ, τα αρχεία με ονόματα που ξεκινούν με 'ifcfg-' (διαμόρφωση διεπαφής) είναι προφίλ σύνδεσης. Όταν δημιουργούμε μια νέα σύνδεση ή τροποποιούμε μια υπάρχουσα με nmcli ή nmtui, τα αποτελέσματα αποθηκεύονται εδώ ως προφίλ σύνδεσης.

Θα σας δείξω δύο από αυτά από το μηχάνημά μου, ένα με διαμόρφωση dhcp και ένα με στατική ip.

cat ifcfg-static1
cat ifcfg-Myoffice1

Αντιλαμβανόμαστε ότι ορισμένες ιδιότητες έχουν διαφορετικές τιμές και κάποιες άλλες δεν υπάρχουν αν δεν είναι απαραίτητες.

Ας ρίξουμε μια γρήγορη ματιά στα πιο σημαντικά.

  • TYPE – έχουμε τον τύπο Ethernet εδώ. Θα μπορούσαμε επίσης να έχουμε WiFi, ομάδα, bond και άλλα.
  • DEVICE – το όνομα της συσκευής δικτύου που σχετίζεται με αυτό το προφίλ.
  • BOOTPROTO – εάν έχει την τιμή “dhcp ”, τότε το προφίλ σύνδεσής μας λαμβάνει μια δυναμική IP από τον διακομιστή DHCP. Εάν έχει την τιμή “κανένα”, τότε δεν χρησιμοποιεί δυναμική IP και πιθανότατα να εκχωρήσουμε μια στατική IP.
  • IPADDR – είναι η στατική IP που εκχωρούμε στο προφίλ μας.
  • PREFIX – η μάσκα υποδικτύου. Η τιμή 24 σημαίνει 255.255.255.0. Μπορείτε να κατανοήσετε καλύτερα τη μάσκα υποδικτύου σημειώνοντας τη δυαδική της μορφή. Για παράδειγμα, οι τιμές 16, 24 και 26 σημαίνουν ότι οι πρώτες 16, 24< Τα ή 26 bit, αντίστοιχα, έχουν οριστεί σε 1 και τα υπόλοιπα είναι 0. Αυτό καθορίζει τη διεύθυνση δικτύου και το εύρος των διευθύνσεων IP που μπορούν να εκχωρηθούν.
  • GATEWAY – η IP της πύλης.
  • DNS1, DNS2 – δύο διακομιστές dns που θέλουμε να χρησιμοποιήσουμε.
  • ONBOOT – αν έχει την τιμή “ναι” σημαίνει ότι κατά την εκκίνηση ο υπολογιστής μας θα διαβάσει αυτό το προφίλ και θα προσπαθήσει να το αντιστοιχίσει στη συσκευή του.

Ελέγξτε τη σύνδεση δικτύου στο Linux

Τώρα, ας προχωρήσουμε και ας ελέγξουμε τις συνδέσεις μας:

nmcli con show

Η τελευταία στήλη συσκευών μας βοηθά να κατανοήσουμε ποια σύνδεση είναι «UP» και εκτελείται και ποια όχι. Στην παραπάνω εικόνα, μπορείτε να δείτε τις δύο ενεργές συνδέσεις: Myoffice1 και enp0s8.

Συμβουλή: Εάν θέλετε να βλέπετε μόνο τις ενεργές συνδέσεις, πληκτρολογήστε:

nmcli con show -a

Συμβουλή: Μπορείτε να χρησιμοποιήσετε το πάτημα αυτόματης συμπλήρωσης Tab όταν χρησιμοποιείτε nmcli, αλλά είναι καλύτερο να το χρησιμοποιήσετε ελάχιστη μορφή της εντολής.

Έτσι, οι ακόλουθες εντολές είναι ίσες:

nmcli connection show
nmcli con show
nmcli c s

Ελέγξτε τη διεύθυνση IP στο Linux

Εάν ελέγξω τις διευθύνσεις IP των συσκευών μου:

ip a

Βλέπω ότι η συσκευή μου enp0s3 πήρε την 192.168.1.6 IP από τον διακομιστή dhcp επειδή το προφίλ σύνδεσης Myoffice1 που είναι επάνω έχει διαμόρφωση dhcp.

Εάν φέρω “επάνω ” το προφίλ σύνδεσής μου με όνομα static1 τότε η συσκευή μου θα λάβει τη στατική IP 192.168.1.40 όπως ορίζεται στο προφίλ σύνδεσης.

nmcli con down Myoffice1 ; nmcli con up static1
nmcli con show

Ας δούμε ξανά τη διεύθυνση IP:

ip a

Μπορούμε να κάνουμε το πρώτο μας προφίλ σύνδεσης. Οι ελάχιστες ιδιότητες που πρέπει να ορίσουμε είναι type, ifname, και con-name:

  • type – για τον τύπο της σύνδεσης.
  • ifname – για το όνομα της συσκευής που έχει εκχωρηθεί στη σύνδεσή μας.
  • con-name – για το όνομα της σύνδεσης.

Δημιουργία νέας σύνδεσης Ethernet στο Linux

Ας δημιουργήσουμε μια νέα σύνδεση Ethernet με το όνομα Myhome1, που έχει εκχωρηθεί σε μια συσκευή enp0s3:

nmcli con add type ethernet con-name Myhome1 ifname enp0s3

Ελέγξτε τη διαμόρφωσή του:

cat ifcfg-Myhome1

Όπως μπορείτε να δείτε, έχει BOOTPROTO=dhcp, επειδή δεν δώσαμε καμία στατική διεύθυνση IP.

Συμβουλή: Μπορούμε να τροποποιήσουμε οποιαδήποτε σύνδεση με την εντολή “nmcli con mod“. Ωστόσο, εάν τροποποιήσετε μια σύνδεση dhcp και την αλλάξετε σε στατική, μην ξεχάσετε να την αλλάξετε “ipv4.method ” από “auto ” σε “μη αυτόματο”. . Διαφορετικά, θα καταλήξετε με δύο διευθύνσεις IP: μία από τον διακομιστή dhcp και τη στατική.

Ας δημιουργήσουμε ένα νέο προφίλ σύνδεσης Ethernet με όνομα static2, το οποίο θα εκχωρηθεί σε μια συσκευή enp0s3, με στατική IP 192.168.1.50, υποδίκτυο μάσκα 255.255.255.0=24, και πύλη 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

Ελέγξτε τη διαμόρφωσή του:

cat ifcfg-static2

Τροποποίηση διακομιστών DNS στο Linux

Ας τροποποιήσουμε το τελευταίο προφίλ σύνδεσης και ας προσθέσουμε δύο διακομιστές dns.

nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”

Συμβουλή: Υπάρχει κάτι στο οποίο πρέπει να προσέξετε: οι ιδιότητες για τη διεύθυνση IP και την πύλη έχουν διαφορετικά ονόματα όταν προσθέτετε και όταν τροποποιείτε μια σύνδεση. Όταν προσθέτετε συνδέσεις χρησιμοποιείτε “ip4 ” και “gw4 ”, ενώ όταν τις τροποποιείτε χρησιμοποιείτε “ipv4 ” και “ gwv4 ”.

Ανεβάστε τη σύνδεση Ethernet στο Linux

Τώρα ας εμφανίσουμε αυτό το προφίλ σύνδεσης:

nmcli con down static1 ; nmcli con up static2

Όπως μπορείτε να δείτε, η συσκευή enp0s3 έχει πλέον διεύθυνση IP 192.168.1.50.

ip a

Συμβουλή: Υπάρχουν πολλές ιδιότητες που μπορείτε να τροποποιήσετε. Εάν δεν τα θυμάστε από κοντά, μπορείτε να βοηθήσετε τον εαυτό σας πληκτρολογώντας “nmcli con show ” και μετά το όνομα της σύνδεσης:

nmcli con show static2

Μπορείτε να τροποποιήσετε όλες αυτές τις ιδιότητες γραμμένες με πεζά.

Για παράδειγμα: όταν καταργείτε ένα προφίλ σύνδεσης, το NetworkManager αναζητά άλλο προφίλ σύνδεσης και το εμφανίζει αυτόματα. (Το αφήνω ως άσκηση για να το ελέγξω). Εάν δεν θέλετε το προφίλ σύνδεσής σας να συνδεθεί αυτόματα:

nmcli con mod static2 connection.autoconnect no

Η τελευταία άσκηση είναι πολύ χρήσιμη: δημιουργήσατε ένα προφίλ σύνδεσης αλλά θέλετε να χρησιμοποιείται από συγκεκριμένους χρήστες. Είναι καλό να ταξινομείτε τους χρήστες σας!

Ορίστε τα δικαιώματα σύνδεσης Ethernet σε Χρήστη στο Linux

Επιτρέπουμε μόνο στον χρήστη stella να χρησιμοποιεί αυτό το προφίλ:

nmcli con mod static2 connection.permissions stella

Συμβουλή: Εάν θέλετε να δώσετε δικαιώματα σε περισσότερους από έναν χρήστες, πρέπει να πληκτρολογήσετε user:user1,user2 χωρίς κενό διάστημα μεταξύ τους:

nmcli con mod static2 connection.permissions user:stella,john

Εάν συνδεθείτε ως άλλος χρήστης, δεν μπορείτε να φέρετε "επάνω " αυτό το προφίλ σύνδεσης:

nmcli con show
nmcli con up static2
ls /etc/sysconfig/network-scripts

Ένα μήνυμα σφάλματος λέει ότι η σύνδεση «static2» δεν υπάρχει, ακόμα κι αν δούμε ότι υπάρχει. Αυτό συμβαίνει επειδή ένας τρέχων χρήστης δεν έχει άδεια να εμφανίσει αυτήν τη σύνδεση.

Συμπέρασμα: μη διστάσετε να χρησιμοποιήσετε το nmcli. Είναι εύκολο και χρήσιμο.