Στον σημερινό οδηγό θα δούμε πως μπορούμε να ορίσουμε στατική IP σε Ubuntu Server έκδοσης 18.04 ή νεότερη έκδοση χρησιμοποιώντας το netplan.

Τι είναι το Netplan

Το Netplan είναι ένα βοηθητικό πρόγραμμα για εύκολη ρύθμιση παραμέτρων δικτύωσης σε ένα σύστημα Linux. Εσείς απλά δημιουργείτε μια περιγραφή (όπως θα δούμε παρακάτω) σε μορφή YAML για την διαμόρφωση που θα έχουν οι διεπαφές δικτύου και τι θα κάνουν.

Από αυτήν την περιγραφή, το Netplan θα δημιουργήσει όλες τις απαραίτητες ρυθμίσεις για το επιλεγμένο πάροχο (NetworkManager or networkd).

Advertisements

Τι διαφορά έχει το 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.

Advertisements

Προετοιμασία στατικής διαρρύθμισης

Έχοντας υπόψιν ότι το 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
Advertisements

Επιβεβαίωση της Στατικής 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 και νεότερες εκδόσεις.

Παραπομπές: