Πύλη VPN σε Raspberry Pi: μία κάρτα δικτύου ή ξεχωριστή θύρα πελάτη
Μία θύρα του Pi μπορεί να εξυπηρετεί επιλεγμένους πελάτες, ή μια δεύτερη θύρα μπορεί να κλείσει τις συσκευές μέσα. Διαλέξτε διάταξη με κριτήριο την απομόνωση, την πολιτική εφεδρείας και το ποιος κατέχει το DNS.
Έχετε ένα Pi, ένα λειτουργικό προφίλ εξερχόμενου VPN και δύο συσκευές που πρέπει να φτάνουν στο διαδίκτυο μέσω αυτού. Το ερώτημα που καθορίζει όλη την κατασκευή δεν είναι ποιος οδηγός θα ακολουθηθεί, αλλά πόση απομόνωση χρειάζεστε. Μία θύρα επιτρέπει στο Pi να στέκεται δίπλα σε αυτές τις συσκευές στο LAN του δρομολογητή και να λειτουργεί ως πρόσθετη πύλη· μια δεύτερη θύρα σας επιτρέπει να τις βάλετε σε ένα τμήμα όπου το Pi είναι η μόνη έξοδος. Όλα μετά από αυτή την επιλογή — DHCP, εύρος του τείχους προστασίας, DNS, η περίπτωση διακοπής — απορρέουν από αυτήν.
Σε τι διαφέρουν πραγματικά οι δύο διατάξεις
Και τα δύο σχέδια δρομολογούν. Η διαφορά είναι ποιος άλλος στέκεται στο καλώδιο και τι συμβαίνει όταν η πολιτική σας είναι λανθασμένη.
| Layout A: Pi on the ISP LAN | Layout B: dedicated client port | |
|---|---|---|
| Cabling | One Ethernet port, existing switch port | Two interfaces: uplink plus a separate LAN port |
| Can a client bypass the Pi? | Yes, by using the ISP router as its gateway | No, unless the device has another radio or link |
| Who hands out addresses | The ISP router, with a per-client setting or a DHCP option | The Pi, on its own LAN interface only |
| Blast radius of a mistake | Any LAN host, if a rule is too broad | The attached segment |
| Good fit for | One laptop, a console, a temporary test client | Appliances, always-on boxes, untrusted devices |
Η απομόνωση είναι ο πραγματικός άξονας. Η διάταξη A είναι συμβουλευτική: μια συσκευή που αγνοεί την πύλη που δίνεται από DHCP και διαλέγει τον δρομολογητή λειτουργεί ακόμη, χωρίς κρυπτογράφηση. Η διάταξη B επιβάλλεται από την τοπολογία, γιατί δεν υπάρχει άλλο επόμενο άλμα να διαλέξετε.
Διάταξη A: το Pi ως πρόσθετη πύλη στο υπάρχον LAN
Ας υποθέσουμε ότι ο δρομολογητής του ISP είναι 192.168.50.1, το Pi είναι 192.168.50.2 και οι επιλεγμένοι πελάτες δείχνουν στο Pi. Το σημαντικό είναι ότι δύο διαφορετικές ροές πακέτων μοιράζονται ένα καλώδιο. Το εσωτερικό πακέτο του πελάτη φτάνει στο Pi και πρέπει να βγει μέσα από τη σήραγγα· το δικό του κρυπτογραφημένο πακέτο του Pi προς τον ομότιμο του VPN πρέπει να βγει από το ίδιο καλώδιο προς τον δρομολογητή. Ταξιδεύουν σε αντίθετες κατευθύνσεις πάνω στην ίδια διεπαφή και χρειάζονται διαφορετική μεταχείριση.
Δώστε στο Pi τη διεύθυνσή του μέσω του εγκατεστημένου διαχειριστή δικτύου και όχι μέσω μιας παλιάς συνταγής αρχείου διεπαφής που μάχεται μαζί του για τη συσκευή. Στη συνέχεια ρυθμίστε τους πελάτες: στατική πύλη σε μία συσκευή ή κράτηση DHCP που δίνει το 192.168.50.2 ως δρομολογητή. Μην αλλάξετε όλο το εύρος DHCP του δρομολογητή για δύο συσκευές και μην υποθέσετε ότι ένας πελάτης σέβεται την επιλογή — επαληθεύστε το.
Η αδυναμία είναι δομική και όχι διορθώσιμη. Κάθε πελάτης σε αυτό το τμήμα μπορεί να δείξει στο 192.168.50.1 και να βγει χωρίς κρυπτογράφηση, και μια συσκευή με δεύτερη διεπαφή ή κυψελοειδές ραδιόφωνο εγκαταλείπει εντελώς τη διαδρομή επιβολής σας. Αν αυτή η πρόταση είναι απαράδεκτη για τη συγκεκριμένη συσκευή, έχετε ήδη την απάντηση: χρησιμοποιήστε τη διάταξη B.
Διάταξη B: μια ξεχωριστή θύρα κλείνει τις συσκευές μέσα
Εδώ το Pi κρατά το 192.168.50.2 στην ανάντη ζεύξη με πύλη 192.168.50.1 και παίρνει το 10.20.0.1/24 σε δεύτερη διεπαφή για τις συνδεδεμένες συσκευές. Το Pi είναι τώρα δρομολογητής με δύο δίκτυα, και το συνδεδεμένο τμήμα έχει ακριβώς μία έξοδο.
Ελέγξτε το εύρος απέναντι σε όλα τα άλλα πριν δεσμευτείτε: το δικό του υποδίκτυο της σήραγγας, άλλα προθέματα μεταξύ τοποθεσιών και οτιδήποτε προσβάσιμο μέσω του VPN. Ένα 10.20.0.0/24 που συγκρούεται με ένα απομακρυσμένο LAN παράγει το είδος του μισολειτουργικού αποτελέσματος που κοστίζει ένα βράδυ διάγνωσης. Αν η δεύτερη θύρα είναι προσαρμογέας USB, επιβεβαιώστε ότι υποστηρίζεται και καρφώστε το όνομά του στον διαχειριστή δικτύου ώστε μια αναδιάταξη μετά την επανεκκίνηση να μη μετακινήσει τη διεύθυνση LAN σας.
Τρέξτε τον ακροατή DHCP μόνο σε αυτή τη διεπαφή. Ένας διακομιστής που απαντά στην ανάντη ζεύξη ανταγωνίζεται τον δρομολογητή του ISP και δίνει τις διευθύνσεις του τμήματός σας στην υπόλοιπη κατοικία. Δέστε τον στη διεπαφή LAN, περιορίστε τον στο δηλωμένο εύρος και κρατήστε τη δική του διεύθυνση του Pi έξω από τη δεξαμενή.
Προώθηση, μετάφραση και ο κανόνας κλεισίματος σε αποτυχία
Τέσσερα πράγματα περιγράφονται συχνά ως ένα και δεν είναι. Η ενεργοποίηση της προώθησης (net.ipv4.ip_forward=1) λέει μόνο στον πυρήνα ότι μπορεί να μετακινεί πακέτα μεταξύ διεπαφών· από μόνη της δεν επιτρέπει τίποτα και δεν εγγυάται καμία διαδρομή. Η επιλογή της εξόδου είναι απόφαση δρομολόγησης. Η άδεια του πακέτου είναι απόφαση πολιτικής στην αλυσίδα forward. Η επανεγγραφή της πηγής του είναι απόφαση postrouting. Μια κατασκευή που κάνει μόνο το πρώτο δίνει ένα Pi που προωθεί ευχαρίστως την κίνηση των πελατών έξω από την ανάντη ζεύξη.
Περιορίστε την άδεια στις πηγές που εννοούσατε και στη διεπαφή που πρέπει να χρησιμοποιεί η κίνηση, και συμπεριλάβετε τη διαδρομή επιστροφής και τους δικούς του απαραίτητους προορισμούς του Pi. Μετά μεταφράστε στην έξοδο της σήραγγας αν ο πάροχος δεν δρομολογεί το πρόθεμα LAN σας πίσω σε εσάς. εγχειρίδιο του nftables αντιμετωπίζει την προώθηση, την τοπική έξοδο και τη μετάφραση πηγής ως ξεχωριστές πράξεις, που είναι το σωστό νοητικό μοντέλο εδώ.
Η συνηθισμένη αποτυχία είναι ένας ευρύς κανόνας masquerade στη φυσική διεπαφή. Τότε η κίνηση φτάνει στο διαδίκτυο μέσω της διαδρομής του ISP ενώ, από την πλευρά του πελάτη, μοιάζει ακριβώς με λειτουργικό VPN. Αυτό δεν αποδεικνύει τίποτα. Κρατήστε τη μετάφραση δεμένη στη δηλωμένη έξοδο και κρατήστε τους κανόνες σας στο τείχος προστασίας που ο υπολογιστής χρησιμοποιεί ήδη, αντί να προσθέτετε ένα ανταγωνιστικό σύνολο κανόνων που αδειάζει μια κοινή αλυσίδα postrouting.
Μετά χειριστείτε την απουσία της σήραγγας. Ένα προφίλ πελάτη που εγκαθιστά μια ευρεία προεπιλεγμένη διαδρομή σημαίνει επίσης ότι, όταν πέσει η σήραγγα, η συνηθισμένη προεπιλογή μπορεί να επιστρέψει και η κίνηση του πελάτη επιστρέφει σιωπηλά στην ανάντη ζεύξη. Όπου η επιστροφή σε καθαρό κείμενο δεν είναι αποδεκτή, η πολιτική forward πρέπει να αρνείται ρητά την κίνηση από πελάτη προς την ανάντη ζεύξη, στην κατάσταση όπου η διαδρομή του VPN έχει φύγει. Γράψτε το ως κανόνα απόρριψης, όχι ως υπόθεση. Η δική του κρυπτογραφημένη μεταφορά του Pi προς τον ομότιμο του VPN είναι ξεχωριστή ροή local-output και πρέπει να παραμένει επιτρεπτή, αλλιώς η σήραγγα δεν μπορεί ποτέ να επιστρέψει.
Το DNS και το IPv6 χρειάζονται τη δική τους απάντηση
Αν οι πελάτες χρησιμοποιούν το Pi ως επιλυτή, χτυπούν έναν τοπικό ακροατή και το Pi ξεκινά νέο ερώτημα. Αυτό το ανάντη ερώτημα ακολουθεί τη δική του διαδρομή του Pi, όχι τον κανόνα forward που γράψατε για τους πελάτες, οπότε μια διαδρομή πελάτη μόνο μέσα από τη σήραγγα συν έναν επιλυτή που βγαίνει απευθείας είναι διαρροή χωρίς κανένα μήνυμα σφάλματος. Αποφασίστε συνειδητά: επιλυτής που φτάνεται μέσα από τη σήραγγα, ή τοπικός που τον δέχεστε ως άμεσο, και κάντε τη δική του πολιτική εξόδου του Pi να ταιριάζει με αυτή την απόφαση.
Το IPv6 είναι πάλι ξεχωριστή περίπτωση. Ένας κανόνας forward για IPv4 δεν περιορίζει τίποτα σχετικά με το IPv6, και οι αγγελίες δρομολογητή στην ανάντη ζεύξη μπορούν να δώσουν στο Pi, και μέσω αυτού στο συνδεδεμένο τμήμα, μια δεύτερη προεπιλογή που παρακάμπτει την πολιτική σας. Είτε δώστε στο IPv6 τη δική του προστατευμένη διαδρομή με την ίδια αρχή, είτε περιορίστε το ρητά στο τμήμα πελατών και πείτε το.
Δοκιμάστε το όριο πριν το εμπιστευτείτε
Δεχτείτε το σχέδιο μόνο μετά από τέσσερις ξεχωριστούς ελέγχους, γιατί ο δελεαστικός μοναδικός έλεγχος — άνοιγμα ενός προγράμματος περιήγησης σε έναν πελάτη — περνά σε αρκετές χαλασμένες καταστάσεις.
Επιβεβαιώστε ότι ένας πραγματικός πελάτης φτάνει στο διαδίκτυο μέσα από τη σήραγγα, μετά επιβεβαιώστε ότι ο ίδιος πελάτης δεν μπορεί να φτάσει στο διαδίκτυο με τη σήραγγα πεσμένη. Επιβεβαιώστε ότι η επίλυση DNS λειτουργεί και ότι το ερώτημα βγαίνει εκεί που σκοπεύατε. Επιβεβαιώστε ότι η δική του μεταφορά του Pi λειτουργεί ακόμη μετά από επανεκκίνηση της σήραγγας και ότι η ανάκαμψη δεν απαιτεί επανεκκίνηση του μηχανήματος. Τέλος, ελέγξτε μια συσκευή που δεν επιλέξατε: στη διάταξη A πρέπει να συνεχίσει να λειτουργεί κανονικά, και στη διάταξη B δεν πρέπει να υπάρχει καθόλου σε αυτό το τμήμα.
- Δύο θύρες και ένας κανόνας άρνησης δίνουν επιβολή· μία θύρα και μια επιλογή DHCP δίνουν συμβουλή.
- Η μετάφραση στη λάθος διεπαφή μοιάζει με επιτυχία και δεν είναι.
- Η δική του κίνηση του Pi, το DNS και το IPv6 χρειάζονται το καθένα μια απόφαση, όχι συμπέρασμα.