Στον σημερινό οδηγό θα δούμε πως μπορούμε να ορίσουμε στατική IP σε Ubuntu Server έκδοσης 18.04 ή νεότερη έκδοση χρησιμοποιώντας το netplan.
Τι είναι το Netplan
Το Netplan είναι ένα βοηθητικό πρόγραμμα για εύκολη ρύθμιση παραμέτρων δικτύωσης σε ένα σύστημα Linux. Εσείς απλά δημιουργείτε μια περιγραφή (όπως θα δούμε παρακάτω) σε μορφή YAML για την διαμόρφωση που θα έχουν οι διεπαφές δικτύου και τι θα κάνουν.
Από αυτήν την περιγραφή, το Netplan θα δημιουργήσει όλες τις απαραίτητες ρυθμίσεις για το επιλεγμένο πάροχο (NetworkManager or networkd).
Τι διαφορά έχει το Netplan από το κλασσικό ifupdown;
Το Netplan δημιουργήθηκε από ανάγκη μιας κοινής και φορητής διαμόρφωσης δικτύου του Ubuntu είτε αυτό πρόκειται για Cloud image, είτε VPS, IoT είτε απλά για Desktop.
Δεδομένης της αυξανόμενης ανάγκης για σύνθετα σενάρια δικτύωσης (οι cloud δικτυώσεις συχνά απαιτούν σύνθετη διαρρύθμιση διαφορετικών λειτουργιών, όπως bridges πάνω από bonds μέσω VLAN κ.λπ.), και έχει αποδειχθεί σημαντικό να βελτιωθεί η ευκολία αναπαράστασης της διαμόρφωσης δικτύου.
Το Netplan υποστηρίζει απλή, δηλωτική αναπαράσταση σύνθετων διαμορφώσεων δικτύου, ενώ αντιμετωπίζει ορισμένους περιορισμούς του παλιού ifupdown
. Το Netplan παρέχει μια πιο απλή και κομψή μορφή δήλωσης ρυθμίσεων δικτύου χρησιμοποιώντας την διαμόρφωση yaml
και υποστήριξη για πολλούς backend παρόχους δικτύωσης.
Μερικές από τις αδυναμίες του ifupdown που ξεπερνιούνται με το netplan
:
- Το ifupdown δεν μπορεί να αντιπροσωπεύει όλες τις διαμορφώσεις δικτύου με μια καθαρά δηλωτική σύνταξη. επομένως δεν μπορούμε να κάνουμε parsing τη διαμόρφωση. Αντίθετα όλα τα config του netplan είναι καθαρά δηλωτικά.
- Το ifupdown μπορεί να αντιπροσωπεύει διεπαφές (π.χ. eth0) με το όνομα, επομένως δεν είναι φορητό σε όλες τις συσκευές (π.χ. IoT συσκευές) ενώ το netplan μπορεί να χρησιμοποιεί αντιστοίχιση με όνομα, διεύθυνση MAC, drivers κ.λπ.
- Σε συνθήκες με σύνθετες ρυθμίσεις με το ifupdown είναι εύκολο να πέσουμε σε race condition ενώ αντίθετα το netplan έχει το πλαίσιο της ιεραρχίας στον ορισμό των διεπαφών, έτσι ώστε αυτές οι πληροφορίες να μεταφέρονται στο πρόγραμμα απόδοσης που χρησιμοποιείται και εφαρμόζεται με τη σωστή σειρά.
Static IP για production server με Netplan
Αν θυμάστε στον οδηγό Ας φτιάξουμε έναν Home Server: Πρώτες ρυθμίσεις (Μέρος 2) χρησιμοποιούσαμε το κλασικό /etc/network/interfaces
για να διαμορφώσουμε στατική IP στον server μας.
Ας ξεκινήσουμε…
Εύρεση των συσκευών δικτύου
Πρώτα βρίσκουμε την συσκευή δικτύου του server για την οποία θα ρυθμίσουμε μια σταθερή IP με την εντολή ip a
:
ip a
το οποίο θα εμφανίσει κάτι σαν το παρακάτω:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.6 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fd50:1d9:9fe3:1400:79fa:c48f:b679:c85 prefixlen 64 scopeid 0x0
[.....]
ether 08:00:27:36:34:ae txqueuelen 1000 (Ethernet)
[.....]
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1 (Local Loopback)
[.....]
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Οπότε η συσκευή που μας ενδιαφέρει στην δική μου περίπτωση είναι η eth0.
Προετοιμασία στατικής διαρρύθμισης
Έχοντας υπόψιν ότι το netplan
παρακολουθεί για αρχεία yaml
στην διαδρομή /etc/netplan/*.yaml
θα φτιάξουμε ένα αρχείο στη διαδρομή αυτή αφού πρώτα αφαιρέσουμε ό’τι υπόλειμμα αρχείων μπορεί να έχει δημιουργήσει το cloud-init
όταν πήραμε τον server μας (π.χ. DigitalOcean).
Άρα το πρώτο που κάνουμε είναι να μεταφέρουμε ότι αρχεία υπάρχουν στο netplan σε κάποιον φάκελο, π.χ. του /root
για να τα έχουμε ως αντίγραφα:
sudo mv /etc/netplan/* /root
Έπειτα χρησιμοποιώντας τον αγαπημένο μας vim editor
sudo vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
απενεργοποιούμε την διαχείριση του δικτύου από το cloud-init
προσθέτοντας την παρακάτω γραμμή:
network: {config: disabled}
Δημιουργία αρχείου YAML για static IP
Από τις πληροφορίες που μας είχε δώσει το ip a
έχουμε μια εικόνα για το τι τιμές θα πρέπει να βάλουμε στα στοιχεία όπως netmask
, gateway
κ.λπ. Έστω ότι θέλω να διαμορφώσω την συσκευή να παίρνει σταθερή τιμή στην IP με την παρακάτω διαμόρφωση:
- IP Address = 192.168.1.10
- Netmask = 255.255.255.0
- GATEWAY=192.168.1.1
- DNS Server 1 = 192.168.1.1
- DNS Server 2 = 1.1.1.1
- Domain Name = cerebrux.local
Οπότε, θα δημιουργήσουμε μια διαμόρφωση netplan για τη διεπαφή δικτύου eth0. Ξεκινάμε την δημιουργία του αρχείο με το vim, το οποίο έχει και αυτόματη διαρρύθμιση για YAML:
sudo vim /etc/netplan/01-mynetwork.yaml
και προσθέτω τις παρακάτω ρυθμίσεις με βάση αυτά που είπαμε ότι θέλουμε να παίρνει το δίκτυο μας:
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
search: [cerebrux.local]
addresses: [192.168.1.1,8.8.8.8]
Για τις διάφορες τιμές των μεταβλητών που μπορείτε να προσθέσετε, ρίξτε μια ματιά στα λινκ στις παραπομπές.
Αφού αποθηκεύσουμε τις αλλαγές μας και κλείσουμε το vim (:x
) καλούμε το netplan να εφαρμόσει τις αλλαγές:
sudo netplan generate && sudo netplan apply
Επιβεβαίωση της Στατικής IP
To μόνο που μένει να κάνουμε είναι να επιβεβαιώσουμε ότι ο server μας έχει την στατική IP που του ορίσαμε:
ip a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fd50:1d9:9fe3:1400:79fa:c48f:b679:c85 prefixlen 64 scopeid 0x0
Βλέπουμε ότι έχει πάρει την static IP 192168.1.10. Επίσης καλό είναι να ρίξουμε και μια ματιά ότι τα DNS Servers που θέσαμε έχουν χρησιμοποιηθεί:
systemd-resolve --status
Link 2 (eth0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.1
8.8.8.8
Στατική IP | Επίλογος
Στον σημερινό οδηγό, είδαμε πως διαμορφώνουμε μια στατική διεύθυνση IP στο Ubuntu server μας. Μάθαμε επίσης την χρήση του netplan, του νέου διαμορφωτή ρυθμίσεων δικτύου για Ubuntu 18.04 και νεότερες εκδόσεις.
Παραπομπές:
Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα: