Downstream clients πίσω από upstream VPN: δρομολόγηση ή NAT;
Ένα upstream VPN γνωρίζει μόνο τη διεύθυνση του client, οπότε η προώθηση άλλου subnet απαιτεί συμφωνημένη διαδρομή ή σκόπιμη μετάφραση προέλευσης.
Μία πύλη τρέχει WireGuard για τις δικές σας συσκευές και έναν client OpenVPN προς το δίκτυο κάποιου άλλου. Η προώθηση μεταξύ των δύο εσωτερικών διασυνδέσεων λειτουργεί, και είναι εύκολο να συμπεράνεις ότι το downstream subnet είναι πλέον μέρος της upstream υπηρεσίας. Δεν είναι. Μια διαδρομή που τραβά ο client λέει στην πύλη σας πού να στέλνει αιτήματα· δεν λέει τίποτα για το πώς το απομακρυσμένο δίκτυο επιστρέφει κίνηση σε συσκευές για τις οποίες δεν έχει ακούσει ποτέ. Επιλέξτε ένα μοντέλο επιστροφής που υποστηρίζει πραγματικά το upstream πριν προσθέσετε έστω έναν κανόνα.
Αποφασίστε το μοντέλο επιστροφής πριν αγγίξετε τη δρομολόγηση
Σε αυτή την περιήγηση, οι downstream clients χρησιμοποιούν 10.90.0.0/24, η εκχωρημένη στην πύλη upstream διεύθυνση σήραγγας είναι 10.80.0.6, και ο εγκεκριμένος απομακρυσμένος πόρος είναι 172.20.0.30. Δύο μοντέλα ταιριάζουν σε αυτό το σχήμα: διατήρηση της downstream προέλευσης και ανάθεση δρομολόγησής της στην απέναντι πλευρά, ή μετάφραση της προέλευσης στη διεύθυνση σήραγγας της ίδιας της πύλης. Ό,τι ακολουθεί αυτή την απόφαση είναι μηχανικό, και η ίδια η απόφαση χρειάζεται τον ιδιοκτήτη της υπηρεσίας. Η μία γραμμή πιο πάνω είναι συμφωνία δρομολόγησης με την απέναντι πλευρά· η άλλη είναι τοπική αλλαγή πολιτικής που μπορείτε να κάνετε μόνοι. Η σύγχυση των δύο μετατρέπει μια αλλαγή δέκα λεπτών σε διαπραγμάτευση.
preserved: 10.90.0.23 -> 172.20.0.30
translated: 10.80.0.6 -> 172.20.0.30Διαλέξτε μία γραμμή και δεσμευτείτε σε αυτή. Οι γραμμές είναι εναλλακτικές, όχι βήματα, και η ανάμειξή τους παράγει σχέδιο που κανείς δεν μπορεί να εξηγήσει στην ανασκόπηση.
Διατήρηση προέλευσης με δρομολόγηση
Η απέναντι πλευρά λαμβάνει αίτημα από downstream διεύθυνση, άρα χρειάζεται υποστηριζόμενη διαδρομή και ιδιοκτησία peer για αυτό το subnet, συν εξουσιοδότηση να το δεχτεί. Αυτές είναι απομακρυσμένες ρυθμίσεις, και καμία τοπική διαδρομή Linux δεν τις δημιουργεί. Ζητήστε τις ρητά και γραπτά, με το πρόθεμα και το peer της σήραγγας που θα το μεταφέρει, και περιμένετε η απάντηση να εξαρτάται από το αν η υπηρεσία υποστηρίζει καθόλου site-to-site ρυθμίσεις.
Αν η απάντηση είναι ναι, η τοπική διαμόρφωση είναι μικρή: προώθηση ενεργή, τα allowed-ips του WireGuard peer που καλύπτουν το downstream εύρος, και πολιτική firewall που επιτρέπει τη διέλευση και προς τις δύο κατευθύνσεις.
Σκόπιμη μετάφραση προέλευσης
Αν η υπηρεσία επιστρέφει κίνηση μόνο στη διεύθυνση του συνδεδεμένου client, μεταφράστε την προέλευση σε αυτή τη διεύθυνση στην έξοδο και κρατήστε την κατάσταση conntrack που την αντιστρέφει για τις απαντήσεις. Περιορίστε τον κανόνα στις προβλεπόμενες downstream προελεύσεις, τους προβλεπόμενους απομακρυσμένους προορισμούς και τη διεπαφή upstream. Ένας κανόνας που μεταφράζει ό,τι φεύγει από κάθε διεπαφή είναι πολύ μεγαλύτερη πολιτική από αυτή την απαίτηση, και θα σας εκπλήξει αργότερα.
Το IPv6 χρειάζεται δικό του σχέδιο· η αντιγραφή μιας γραμμής masquerade IPv4 δεν είναι αρχιτεκτονική. Δοκιμάστε τη μεταφρασμένη διαδρομή με νέα σύνδεση, όχι με αποθηκευμένη.
Η τοπική διαδρομή δεδομένων πρέπει ακόμη να δουλεύει
Η μετάφραση δεν αφαιρεί την τοπική εργασία: η πύλη χρειάζεται ακόμη διαδρομή για τους downstream προορισμούς, τη σωστή ιδιοκτησία προέλευσης του WireGuard peer, ενεργή προώθηση και στενή πολιτική firewall μεταξύ διεπαφών. Ένα αίτημα που δημιουργείται στην ίδια την πύλη δεν ασκεί καμία από αυτές τις άδειες, γι αυτό οι τοπικές δοκιμές στην πύλη περνούν και οι downstream συσκευές εξακολουθούν να αποτυγχάνουν.
Δοκιμάστε από πραγματική downstream συσκευή, όχι από την πύλη. Η διεύθυνση προέλευσης είναι όλο το νόημα της άσκησης.
Μία προέλευση σημαίνει μία ταυτότητα συνεδρίας
Η απομακρυσμένη υπηρεσία βλέπει την πιστοποιημένη συνεδρία της πύλης και τη μεταφρασμένη διεύθυνσή της, όχι ανεξάρτητη πιστοποίηση για κάθε downstream συσκευή. Κρατήστε ρητές τις άδειες ανά συσκευή και τις ταυτότητες εφαρμογών, και επιβεβαιώστε με τον ιδιοκτήτη της υπηρεσίας ότι μια πύλη που ενεργεί για πολλές συσκευές επιτρέπεται καθόλου. Η μετάφραση δεν είναι τρόπος παράκαμψης απαίτησης εγγραφής ανά συσκευή· αν η υπηρεσία απαιτεί κάθε συσκευή να εγγραφεί, χρησιμοποιήστε αυτό το μοντέλο ή διαπραγματευτείτε site-to-site ρύθμιση.
Γράψτε αυτή την επιβεβαίωση στο runbook δίπλα στον κανόνα, γιατί ο επόμενος αναθεωρητής θα ρωτήσει αν το σχέδιο εγκρίθηκε ή ήταν απλώς βολικό.
Ορίστε την κατάσταση αποσύνδεσης και μετά δοκιμάστε τρία αιτήματα
Αποφασίστε τι συμβαίνει όταν πέσει η σήραγγα upstream. Η εξουσιοδοτημένη απομακρυσμένη κίνηση δεν πρέπει να ακολουθεί σιωπηλά μια συνηθισμένη εφεδρική διαδρομή WAN όπου αυτό απαγορεύεται, οπότε η πολιτική firewall που επιτρέπει τη διέλευση πρέπει επίσης να αποτυγχάνει κλειστή. Έπειτα δοκιμάστε τρεις περιπτώσεις από πραγματική downstream συσκευή: ένα επιτρεπόμενο αίτημα που λειτουργεί, ένα μη επιτρεπόμενο αίτημα που αποτυγχάνει, και μια αποτυχία upstream που σταματά το επιτρεπόμενο.
Καταγράψτε την επαναφορά σε μία γραμμή ανά κανόνα, ώστε η αλλαγή να μπορεί να αναιρεθεί χωρίς ανακατασκευή της πρόθεσης.