Κάθε φάρος μπορεί να πει σε έναν κεντρικό υπολογιστή για κάθε άλλο ομότιμο εκτός από το πού βρίσκεται ο ίδιος ο φάρος. Κάτι πρέπει να είναι γνωστό πριν υπάρξει το overlay, και η Nebula βάζει αυτό το κάτι σε έναν μικρό χάρτη. Ο χάρτης συνδυάζει μια ταυτότητα overlay με μια διεύθυνση που λειτουργεί στο συνηθισμένο δίκτυο. Ό,τι μαθαίνεται αργότερα εξαρτάται από το ότι αυτός ο συνδυασμός είναι σωστός.

Δύο διευθύνσεις με δύο ρόλους

Κάθε κεντρικός υπολογιστής Nebula έχει μια διεύθυνση overlay που μένει σταθερή όσο η συσκευή κινείται ανάμεσα σε δίκτυα. Αυτή η διεύθυνση είναι η ταυτότητα που χρησιμοποιούν τα πιστοποιητικά, οι κανόνες τείχους προστασίας και οι σχέσεις ομοτίμων, και μόνη της δεν δρομολογεί πουθενά. Το προσβάσιμο τελικό σημείο είναι κάτι άλλο: ένα όνομα κεντρικού υπολογιστή ή μια διεύθυνση στο υποκείμενο δίκτυο συν μια θύρα UDP, και αλλάζει όποτε η μηχανή αλλάζει θέση. Ο στατικός χάρτης είναι η ένωση ανάμεσα στα δύο.

Στον χάρτη ανήκουν μόνο οι κεντρικοί υπολογιστές που πρέπει να κληθούν κρύοι, που συνήθως σημαίνει τους φάρους και ίσως ένα relay. Το να μένει η λίστα μικρή είναι στόχος σχεδιασμού, γιατί κάθε χειροκίνητη καταχώριση γίνεται ένα γεγονός που κάποιος πρέπει να συντηρεί. Η σύγχυση των δύο τύπων διεύθυνσης είναι το συνηθισμένο σφάλμα ρύθμισης: μια δημόσια διεύθυνση στη λίστα φάρων δεν ξεκινά την ανακάλυψη.

Η ταυτότητα πάει εκεί όπου αναμένεται ταυτότητα. Η προσβασιμότητα πάει στον χάρτη.

static_host_map:
  "10.42.0.1": ["lighthouse-01.example.net:4242"]

lighthouse:
  am_lighthouse: false
  hosts:
    - "10.42.0.1"

Ανατομία μιας καταχώρισης στον χάρτη

Το κλειδί είναι η διεύθυνση overlay γραμμένη ως συμβολοσειρά σε εισαγωγικά, και η τιμή είναι μια λίστα τελικών σημείων, ώστε μια ταυτότητα να μπορεί να έχει πολλά σημεία εισόδου. Κάθε τελικό σημείο φέρει έναν κεντρικό υπολογιστή και μια θύρα, και η θύρα πρέπει να ταιριάζει με αυτό που ακούει πραγματικά η άλλη πλευρά. Η προεπιλογή της Nebula είναι UDP 4242, που είναι σημείο εκκίνησης και όχι υπόσχεση για την ανάπτυξή σας.

Πολλά τελικά σημεία είναι χρήσιμα όταν ένας φάρος έχει περισσότερες από μία διαδρομές προς τα μέσα, όπως μια δημόσια διεύθυνση και μια ιδιωτική διεύθυνση για κεντρικούς υπολογιστές στο ίδιο τμήμα. Ο πελάτης τα δοκιμάζει με σειρά, οπότε βάλτε το πιο αξιόπιστο πρώτο. Για IPv6, βάλτε τη διεύθυνση σε αγκύλες πριν προσθέσετε τη θύρα· ένα λάθος εδώ παράγει σφάλμα ανάλυσης που δείχνει τη λάθος γραμμή.

Μια λάθος θύρα παράγει σιωπή αντί για σφάλμα, γιατί το UDP δεν έχει χειραψία για να αρνηθεί. Γι' αυτό αξίζει να ελέγξετε τη μορφή της καταχώρισης απέναντι στην αναφορά της Nebula για το static_host_map και όχι απέναντι στη μνήμη. Η αναφορά καλύπτει επίσης λίστες τελικών σημείων και τη συμπεριφορά ανανέωσης DNS.

Η εκκίνηση πρέπει να δουλεύει πριν από το overlay

Ένα όνομα DNS στον χάρτη πρέπει να επιλύεται μέσω του resolver που έχει ο κεντρικός υπολογιστής πριν υπάρξει οποιοδήποτε tunnel, δηλαδή του συνηθισμένου resolver συστήματος. Δοκιμάστε το από το ίδιο μηχάνημα, κατά την εκκίνηση, με το overlay σταματημένο. Ένα όνομα που επιλύεται μόνο μέσω του δικού του DNS του overlay δεν μπορεί να εκκινήσει το overlay. Η ίδια δοκιμή ισχύει για τη διαδρομή: ένας κανόνας τείχους προστασίας που επιτρέπει το overlay αλλά όχι την πρώτη ανταλλαγή UDP μπλοκάρει το αρχικό πακέτο.

Ελέγξτε τη θύρα με εργαλείο UDP αντί να υποθέσετε ότι είναι ανοιχτή. Επιβεβαιώστε ότι οποιαδήποτε προώθηση θύρας στη διαδρομή στοχεύει τον σωστό εσωτερικό κεντρικό υπολογιστή και ότι υπάρχει διαδρομή επιστροφής. Αν το όνομα κεντρικού υπολογιστή επιλύεται σε πολλές διευθύνσεις, δοκιμάστε κάθε μία, γιατί ο πελάτης μπορεί να διαλέξει μια διεύθυνση που δεν ελέγξατε ποτέ.

Οι στατικές καταχωρίσεις καλούνται απευθείας και δεν συμβουλεύονται ποτέ φάρο. Γι' αυτό μια αποτυχία εδώ μοιάζει με απλό timeout χωρίς κανέναν ομότιμο.

Τι συμβαίνει μετά την πρώτη χειραψία

Μόλις ένας κεντρικός υπολογιστής φτάσει σε φάρο, μαθαίνει για ομοτίμους και τις προσβάσιμες διευθύνσεις τους χωρίς άλλες χειροκίνητες καταχωρίσεις. Κεντρικοί υπολογιστές που μετακινήθηκαν από την τελευταία σύνδεση γίνονται ανιχνεύσιμοι μέσω αυτού του καναλιού. Αυτό είναι το κέρδος από το να μένει μικρός ο χειροκίνητος χάρτης.

Οι κεντρικοί υπολογιστές μπορούν επίσης να διαφημίζουν πρόσθετες προσβάσιμες διευθύνσεις τους, και έτσι ένας ομότιμος πίσω από μια γνωστή δημόσια διεύθυνση βοηθά τους άλλους να τον βρουν. Αυτές οι διαφημίσεις μαθαίνονται, δεν πληκτρολογούνται στον στατικό χάρτη.

Η συμπεριφορά ανανέωσης έχει σημασία για τελικά σημεία γραμμένα ως ονόματα DNS, γιατί μια διεύθυνση που επιλύθηκε μπορεί να αλλάξει όσο η διεργασία συνεχίζει να τρέχει. Οι ρυθμίσεις της Nebula ελέγχουν πώς γίνονται αυτές οι αναζητήσεις, συμπεριλαμβανομένου ποιου resolver χρησιμοποιείται, οπότε διαβάστε τις αντί να υποθέσετε την προεπιλογή του συστήματος. Σε έναν κεντρικό υπολογιστή του οποίου ο resolver αλλάζει όταν ανεβαίνει ένα tunnel, η λάθος ρύθμιση μπορεί να μετατρέψει μια λειτουργική εκκίνηση σε όνομα που σταματά να επιλύεται στη μέση της συνεδρίας. Το να καρφιτσώσετε την αναζήτηση σε σταθερό resolver είναι συχνά η διαφορά ανάμεσα σε αξιόπιστο overlay και σε διακοπτόμενο.

Όταν η ανακάλυψη δουλεύει και ένας ομότιμος όχι

Αν οι φάροι είναι προσβάσιμοι και οι περισσότεροι ομότιμοι συνδέονται, η εκκίνηση δεν είναι το πρόβλημα. Το υπόλοιπο ζεύγος είτε δεν βρίσκει χρησιμοποιήσιμη διαδρομή μεταξύ τους είτε αποτυγχάνει πάνω από την προσβασιμότητα. Το να προσθέσετε άλλη μια γραφή της διεύθυνσης του φάρου δεν επισκευάζει καμία από τις δύο περιπτώσεις.

Ελέγξτε το ζεύγος πριν επεξεργαστείτε τον χάρτη στον οποίο βασίζεται ήδη όλα τα άλλα. Μια αλλαγή χάρτη ενοχλεί κάθε κεντρικό υπολογιστή, οπότε είναι το τελευταίο πράγμα που αγγίζετε, όχι το πρώτο.

Ξεκινήστε με πιστοποιητικά από την ίδια αρχή, γιατί μια απορριφθείσα χειραψία μπορεί από μακριά να μοιάζει με μη προσβάσιμο ομότιμο. Έπειτα ελέγξτε αν το ζεύγος μπορεί να στήσει άμεση διαδρομή και αν έχει ρυθμιστεί relay για δίκτυα που αρνούνται άμεση κίνηση. Το relay προσθέτει ένα άλμα και μια εξάρτηση, αλλά είναι υποστηριζόμενη απάντηση, και η διόρθωση της διαδρομής του ομότιμου είναι άλλη δουλειά από τη διόρθωση της ανακάλυψης.

Σχετικά άρθρα