Τέσσερα πράγματα πρέπει να ευθυγραμμιστούν πριν ένας ξενιστής Linux στείλει μόνο το δικό του SMTP μέσα από ένα τούνελ: μια διαδρομή σε αποκλειστικό πίνακα, ένας κανόνας πολιτικής που επιλέγει την κίνηση, μια διεύθυνση προέλευσης που θα δεχτεί ο peer και μια διαδρομή επιστροφής που αντέχει την ασυμμετρία. Κάθε ένα είναι ξεχωριστή διαμόρφωση με τον δικό του τρόπο αποτυχίας. Η σειρά παρακάτω είναι εκείνη που κάνει μια αποτυχία να δείχνει το κομμάτι που είναι πραγματικά λάθος. Είναι εργασία δρομολόγησης ειδική για θύρα, όχι αίτημα για προεπιλεγμένη διαδρομή VPN.

Ένας κανόνας θύρας δεν είναι προεπιλεγμένη διαδρομή

Ένας κανόνας που ταιριάζει τοπικά παραγόμενο TCP με θύρα προορισμού 25 στέλνει αυτή την κίνηση σε έναν πίνακα που ονομάζετε. Ο κανόνας δεν δημιουργεί τίποτα από μόνος του: επιλέγει, και ο πίνακας πρέπει να περιέχει μια διαδρομή που μπορεί να μεταφέρει το πακέτο. Ο συνδυασμός των δύο καλύπτει μόνο την εξερχόμενη κατεύθυνση ενός πρωτοκόλλου, οπότε η προώθηση για άλλους ξενιστές, οι εισερχόμενες συνδέσεις αλληλογραφίας και το IPv6 μένουν έξω από τη ρύθμιση. Το να το ονομάσουμε πολιτική ειδική για θύρα αντί για προεπιλογή VPN κρατά αυτό το όριο έντιμο.

Δύο ρυθμίσεις του wg-quick είναι προαπαιτούμενα και όχι μέρος της πολιτικής. Το AllowedIPs = 0.0.0.0/0 επιτρέπει στον peer να μεταφέρει αυθαίρετους προορισμούς IPv4, και το Table = off εμποδίζει το wg-quick να εγκαταστήσει τη δική του προεπιλεγμένη διαδρομή για αυτό το πρόθεμα. Μην αναμειγνύετε αυτές τις οδηγίες με διαχειριστή που εφαρμόζει τη δική του πολιτική διαδρομών, γιατί οι δύο θα διαφωνήσουν για το ποιος κατέχει τον κύριο πίνακα.

Γράψτε τη διαδρομή, τον επιλογέα και τη φρουρά

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

ip -4 route add default dev wg0 src 10.77.0.2 table 51825
ip -4 rule add priority 10000 iif lo ipproto tcp dport 25 lookup 51825
ip -4 rule add priority 10001 iif lo ipproto tcp dport 25 unreachable

Το iif lo περιορίζει τον κανόνα στην κίνηση τοπικής προέλευσης, και το ipproto tcp dport 25 προσδιορίζει την κατεύθυνση της σύνδεσης· η αναφορά του ip-rule τεκμηριώνει και τους δύο επιλογείς. Υπάρχουν στους τρέχοντες πυρήνες και στις εκδόσεις iproute2, και σε παλαιότερο σύστημα ο κανόνας απορρίπτεται εντελώς, κάτι που είναι σαφέστερη αποτυχία από έναν κανόνα που φορτώνεται και δεν ταιριάζει με τίποτα.

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

Η διεύθυνση προέλευσης πρέπει να συμφωνεί

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

Στην πύλη, ο peer του πελάτη πρέπει να εξουσιοδοτεί την προέλευση που λαμβάνει πραγματικά, δηλαδή 10.77.0.2/32 και όχι ένα ευρύ πρόθεμα προορισμού. Η αντιγραφή του 0.0.0.0/0 του πελάτη σε κάθε peer της πύλης μπερδεύει ποιος peer κατέχει ποια κίνηση. Η πύλη χρειάζεται επίσης προώθηση, πολιτική τείχους προστασίας που να επιτρέπει τη ροή, και διαδρομή επιστροφής, συμπεριλαμβανομένης της μετάφρασης εξόδου όταν το ανάντη δεν μπορεί να δρομολογήσει μια ιδιωτική διεύθυνση τούνελ.

Ελέγξτε τη διαδρομή επιστροφής και μετά τη μονιμότητα

Διαβάστε τις αναζητήσεις πριν εμπιστευτείτε οτιδήποτε, γιατί δείχνουν ποιον πίνακα και ποια προέλευση παίρνει κάθε κατεύθυνση. Ένας προορισμός στη θύρα 25 και ο ίδιος προορισμός στη θύρα 443 αρκούν:

ip -4 route get 198.51.100.25 ipproto tcp dport 25
ip -4 route get 198.51.100.25 ipproto tcp dport 443

Η πρώτη αναζήτηση πρέπει να αναφέρει wg0 και την επιδιωκόμενη προέλευση, και η δεύτερη να διατηρεί τη συνηθισμένη ανάντη ζεύξη. Όταν η εφαρμογή δεσμεύει τη δική της διεύθυνση, προσθέστε from με αυτή τη διεύθυνση στην αναζήτηση. Μια κατεύθυνση απάντησης που φτάνει στο wg0 και μετά απορρίπτεται τοπικά δείχνει σε φιλτράρισμα αντίστροφης διαδρομής IPv4, γιατί ένας κανόνας μόνο για εξερχόμενη θύρα δεν κάνει την αντίστροφη αναζήτηση να επιλέξει το τούνελ.

Όπου επιτρέπεται η ασύμμετρη δρομολόγηση, η χαλαρή λειτουργία περιορισμένη στη διεπαφή μέσω net.ipv4.conf.wg0.rp_filter=2 μπορεί να είναι κατάλληλη, και αξίζει να ελέγξετε πρώτα το πραγματικό μέγιστο των τιμών all και της διεπαφής. Μην απενεργοποιήσετε την επικύρωση παγκοσμίως ως συντόμευση. Στη συνέχεια παραδώστε τον πίνακα, τις προτεραιότητες και τη φρουρά σε ό,τι κατέχει τη διαμόρφωση, και ανοίξτε νέες συνδέσεις μετά από επανασύνδεση για να επιβεβαιώσετε ότι η επιλογή εξακολουθεί να ισχύει. Λάβετε υπόψη ότι οι απαντήσεις από τοπικό ακροατή SMTP φέρουν θύρα προέλευσης 25 και όχι θύρα προορισμού 25, που είναι ξεχωριστό ζήτημα πολιτικής.

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