Dante SOCKS στο loopback για υπηρεσία HTTPS μόνο μέσω WireGuard
Δέστε έναν αποκλειστικό ακροατή SOCKS στο loopback και επιτρέψτε έναν προορισμό TCP. Κρατήστε χωριστά την εξερχόμενη πηγή του Dante, τη διαδρομή του πυρήνα, το DNS και την πολιτική απώλειας σήραγγας.
Αυτό το εγχειρίδιο δίνει σε μια εφαρμογή που κατανοεί διακομιστή μεσολάβησης πρόσβαση σε μια υπάρχουσα διαδρομή WireGuard χωρίς να δημοσιεύει θύρα μεσολάβησης στον διακομιστή VPN ή στο διαδίκτυο. Ο δαίμονας SOCKS παρέχει τη διεπαφή της εφαρμογής, το WireGuard παρέχει την ήδη εγκεκριμένη διαδρομή IP, και κανένα από τα δύο δεν επαληθεύει τον χρήστη για εσάς. Κάθε βήμα παρακάτω παράγει κάτι που μπορείτε να επιθεωρήσετε, και το καθένα έχει επαναφορά: σταματήστε το στιγμιότυπο, αφαιρέστε τον κανόνα ή αφαιρέστε τη ρύθμιση μεσολάβησης της εφαρμογής. Τίποτα εδώ δεν αλλάζει την προεπιλεγμένη διαδρομή του κεντρικού υπολογιστή.
Το παράδειγμα υποθέτει ότι το Dante 1.4.x είναι εγκατεστημένο ως αποκλειστικό, διαχειριζόμενο στιγμιότυπο σε αξιόπιστο σταθμό εργασίας Linux, με τον λογαριασμό υπηρεσίας και τη ρύθμιση καταγραφής του πακέτου στη θέση τους. Ο σταθμός εργασίας κατέχει 10.77.0.2 στη διεπαφή WireGuard του, φτάνει στο 10.60.0.20:443 μέσω αυτής της σήραγγας, και η σωστή ονομασία της υπηρεσίας είναι app.corp.example.
Βήμα 1: δέστε τον ακροατή μόνο στο loopback
Βάλτε τις ενότητες δικτύου, μεθόδου και κανόνων στην ενεργή ρύθμιση του στιγμιότυπου, αντικαθιστώντας τις διευθύνσεις του παραδείγματος. Όλες οι ρυθμίσεις διακομιστή πηγαίνουν πριν από τα μπλοκ κανόνων:
internal: 127.0.0.1 port = 1080
external: 10.77.0.2
external.protocol: ipv4
clientmethod: none
socksmethod: none
client pass {
from: 127.0.0.1/32 to: 127.0.0.1/32
}
socks pass {
from: 127.0.0.1/32 to: 10.60.0.20/32 port = 443
command: connect
protocol: tcp
}Αυτό είναι ένα απόσπασμα, όχι αντικατάσταση των ρυθμίσεων χρήστη και καταγραφής του πακέτου. Επιλέξτε μια αχρησιμοποίητη τοπική θύρα και επιβεβαιώστε ότι αυτό το αποκλειστικό στιγμιότυπο δεν έχει άλλους ακροατές, ούτε ευρύτερους κανόνες διέλευσης ούτε εγγραφές αλυσίδας ανάντη που θα άλλαζαν το συμβόλαιο. Αν μια προηγούμενη ρύθμιση άφησε ένα socks pass χωρίς περιορισμό προορισμού, αφαιρέστε το πριν δοκιμάσετε οτιδήποτε.
Η επαναφορά για αυτό το βήμα είναι η διακοπή του στιγμιότυπου· το αρχείο ρύθμισης μπορεί να μείνει στον δίσκο όσο το επαναφέρετε.
Βήμα 2: γράψτε δύο κανόνες, όχι έναν
Η αναφορά ρύθμισης του Dante δίνει στους δύο τύπους κανόνων διαφορετικά καθήκοντα. Ο κανόνας πελάτη επιτρέπει σύνδεση στον ακροατή loopback, και ο προορισμός του είναι η ίδια η διεύθυνση του ακροατή. Ο κανόνας SOCKS επιτρέπει τη ζητούμενη περαιτέρω σύνδεση στον εγκεκριμένο κεντρικό υπολογιστή και θύρα. Τα αιτήματα που δεν ταιριάζουν αποκλείονται από προεπιλογή, γι' αυτό ένας κανόνας που λείπει μοιάζει ίδιος με σπασμένη διαδρομή.
Προσέξτε τι σκόπιμα δεν κάνει αυτή η ρύθμιση: δεν ζητά κωδικό SOCKS. Αυτό ταιριάζει σε αξιόπιστο τοπικό κεντρικό υπολογιστή και δεν είναι επαλήθευση χρήστη. Οποιαδήποτε άλλη διεργασία σε αυτό το μηχάνημα μπορεί επίσης να χρησιμοποιήσει το loopback. Κρατήστε την δική της επαλήθευση της απομακρυσμένης εφαρμογής και μη χρησιμοποιείτε ξανά αυτή τη μορφή χωρίς επαλήθευση για μη αξιόπιστους τοπικούς χρήστες ή για ακροατή που βλέπει στο LAN.
Βήμα 3: επαληθεύστε τη διαδρομή από τη σωστή πηγή
external επιλέγει διεύθυνση εξερχόμενης πηγής· δεν εγκαθιστά διαδρομή WireGuard. Αναζήτηση μόνο για ανάγνωση για την πηγή και τον προορισμό του παραδείγματος:
ip -4 route get 10.60.0.20 from 10.77.0.2Εκτελέστε το στον πραγματικό χώρο ονομάτων δικτύου του Dante, όχι σε όποιο κέλυφος έχετε ανοιχτό. Η διαδρομή, η επιλογή ομότιμου WireGuard, η άδεια στην απομακρυσμένη πλευρά και η διαδρομή επιστροφής πρέπει όλα να ταιριάζουν με αυτή τη διεύθυνση πηγής. Μια επιτυχημένη αναζήτηση είναι αναγκαία και όχι αρκετή, γιατί δεν λέει τίποτα για το αν το απομακρυσμένο άκρο δέχεται το αίτημα.
Αντισταθείτε στον πειρασμό να προσθέσετε προεπιλεγμένη διαδρομή ώστε να πετύχει η αναζήτηση. Η θύρα μεσολάβησης υπάρχει μόνο σε αυτόν τον σταθμό εργασίας· το να αλλάξετε την προεπιλεγμένη διαδρομή του κεντρικού υπολογιστή για να τη δημιουργήσετε αντιστρέφει όλο τον σχεδιασμό.
Βήμα 4: δοκιμάστε με την προβλεπόμενη ταυτότητα
Αφού ο ιδιοκτήτης επικυρώσει την εγκατεστημένη ρύθμιση και ξεκινήσει το στιγμιότυπο μέσω του διαχειριστή υπηρεσιών του, ένα ενδεικτικό αίτημα είναι:
curl --proxy socks5h://127.0.0.1:1080 --noproxy '' https://app.corp.example/Με socks5h, το Dante εκτελεί την επίλυση προορισμού, αλλά το Dante τρέχει σε αυτόν τον σταθμό εργασίας, άρα η ρύθμιση δεν στέλνει από μόνη της DNS στο απομακρυσμένο άκρο της σήραγγας. Ο εγκεκριμένος επιλυτής που χρησιμοποιεί το Dante πρέπει να επιστρέψει την επιτρεπόμενη διεύθυνση για αυτό το όνομα. Η κενή λίστα χωρίς μεσολάβηση εμποδίζει μια κληρονομημένη εξαίρεση να παρακάμψει ήσυχα το SOCKS.
Διατηρήστε την επικύρωση ονόματος κεντρικού υπολογιστή και πιστοποιητικού HTTPS στη δοκιμή, μετά επιθεωρήστε τον πραγματικό ακροατή και επιβεβαιώστε και τα δύο μισά του συμβολαίου: το επιτρεπόμενο αίτημα πετυχαίνει και ένας αποκλεισμένος προορισμός αποτυγχάνει. Επαληθεύστε επίσης ότι οι μη υποστηριζόμενες εντολές προώθησης παραμένουν απορριπτέες, γιατί αυτό το απόσπασμα επιτρέπει την εντολή SOCKS CONNECT πάνω από TCP και τίποτα που να μοιάζει με γενική σήραγγα UDP ή ολόκληρης συσκευής.
Βήμα 5: αποφασίστε τι συμβαίνει όταν πέσει η σήραγγα
Δοκιμάστε την απώλεια σήραγγας και την επανεκκίνηση του στιγμιότυπου πριν το ονομάσετε παραγωγή. Ένας επόπτης που ξεκινά το Dante μετά το WireGuard δεν δημιουργεί δρομολόγηση fail-closed, ούτε δημιουργεί DNS fail-closed· και τα δύο πρέπει να επιβληθούν μέσω του ιδιοκτήτη του δικτύου. Παρατηρήστε τι κάνει η εφαρμογή όταν η σήραγγα είναι κάτω: ένα καθαρό σφάλμα είναι καλό αποτέλεσμα, μια σιωπηλή υποχώρηση σε δημόσιο επιλυτή δεν είναι.
Συντονίστε ενημερώσεις αν αλλάξει η δεσμευμένη διεύθυνση σήραγγας, γιατί external είναι καρφιτσωμένο σε αυτή. Όταν η διάταξη δεν χρειάζεται πλέον, αποσύρετε αυτό το στιγμιότυπο και τη ρύθμιση μεσολάβησης της εφαρμογής μαζί, και αφήστε τη διαδρομή WireGuard σε όποιον την κατέχει.