Πώς να διαμορφώσετε τη δικτύωση 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. Είναι εύκολο και χρήσιμο.