Network Namespace
Basic Information
Ένα network namespace είναι μια δυνατότητα του πυρήνα Linux που παρέχει απομόνωση της στοίβας δικτύου, επιτρέποντας σε κάθε network namespace να έχει τη δική του ανεξάρτητη ρύθμιση δικτύου, διεπαφές, διευθύνσεις IP, πίνακες δρομολόγησης και κανόνες τείχους προστασίας. Αυτή η απομόνωση είναι χρήσιμη σε διάφορα σενάρια, όπως η κοντενέρωση, όπου κάθε κοντέινερ θα πρέπει να έχει τη δική του ρύθμιση δικτύου, ανεξάρτητη από άλλα κοντέινερ και το σύστημα φιλοξενίας.
How it works:
Όταν δημιουργείται ένα νέο network namespace, ξεκινά με μια εντελώς απομονωμένη στοίβα δικτύου, με κανένα δίκτυο διεπαφών εκτός από τη διεπαφή loopback (lo). Αυτό σημαίνει ότι οι διαδικασίες που εκτελούνται στο νέο network namespace δεν μπορούν να επικοινωνήσουν με διαδικασίες σε άλλα namespaces ή το σύστημα φιλοξενίας από προεπιλογή.
Εικονικές διεπαφές δικτύου, όπως τα veth ζεύγη, μπορούν να δημιουργηθούν και να μετακινηθούν μεταξύ των network namespaces. Αυτό επιτρέπει τη δημιουργία δικτυακής συνδεσιμότητας μεταξύ namespaces ή μεταξύ ενός namespace και του συστήματος φιλοξενίας. Για παράδειγμα, το ένα άκρο ενός veth ζεύγους μπορεί να τοποθετηθεί στο network namespace ενός κοντέινερ, και το άλλο άκρο μπορεί να συνδεθεί σε μια γέφυρα ή άλλη διεπαφή δικτύου στο namespace του φιλοξενούμενου, παρέχοντας δικτυακή συνδεσιμότητα στο κοντέινερ.
Οι διεπαφές δικτύου εντός ενός namespace μπορούν να έχουν τις δικές τους διευθύνσεις IP, πίνακες δρομολόγησης και κανόνες τείχους προστασίας, ανεξάρτητες από άλλα namespaces. Αυτό επιτρέπει στις διαδικασίες σε διαφορετικά network namespaces να έχουν διαφορετικές ρυθμίσεις δικτύου και να λειτουργούν σαν να εκτελούνται σε ξεχωριστά δικτυωμένα συστήματα.
Οι διαδικασίες μπορούν να μετακινηθούν μεταξύ namespaces χρησιμοποιώντας την κλήση συστήματος
setns()
, ή να δημιουργήσουν νέα namespaces χρησιμοποιώντας τις κλήσεις συστήματοςunshare()
ήclone()
με την σημαίαCLONE_NEWNET
. Όταν μια διαδικασία μετακινείται σε ένα νέο namespace ή δημιουργεί ένα, θα αρχίσει να χρησιμοποιεί τη ρύθμιση δικτύου και τις διεπαφές που σχετίζονται με αυτό το namespace.
Lab:
Create different Namespaces
CLI
Με την τοποθέτηση μιας νέας παρουσίας του συστήματος αρχείων /proc
αν χρησιμοποιήσετε την παράμετρο --mount-proc
, διασφαλίζετε ότι το νέο mount namespace έχει μια ακριβή και απομονωμένη άποψη των πληροφοριών διαδικασίας που είναι συγκεκριμένες για αυτό το namespace.
Docker
Ελέγξτε σε ποιο namespace βρίσκεται η διαδικασία σας
Βρείτε όλα τα Network namespaces
Είσοδος σε ένα Network namespace
Επίσης, μπορείτε να μπείτε σε άλλο namespace διαδικασίας μόνο αν είστε root. Και δεν μπορείτε να μπείτε σε άλλο namespace χωρίς έναν περιγραφέα που να δείχνει σε αυτό (όπως το /proc/self/ns/net
).
Αναφορές
Last updated