Απαιτήσεις θυρών VPN: τρεις γραμμές που γράφονται πριν από τη σύγκριση
Βρείτε ποια ερώτηση θύρας έχετε πραγματικά: εξερχόμενος προορισμός, εισερχόμενη δημοσίευση ή η ίδια η μεταφορά της σήραγγας. Έπειτα ρωτήστε τον πάροχο μόνο για αυτό.
Οι λίστες θυρών για υπηρεσίες VPN αντιγράφονται μεταξύ σελίδων σύγκρισης χωρίς τη λεπτομέρεια που καθορίζει αν έχουν σημασία: ποιος ξεκινά τη σύνδεση. Ένας κανόνας που επιτρέπει εξερχόμενο TCP 443 δεν λέει τίποτα για το αν ένας άλλος κεντρικός υπολογιστής μπορεί να φτάσει σε έναν ακροατή στο μηχάνημά σας. Γράψτε τρεις ξεχωριστές απαιτήσεις πριν συγκρίνετε ένα και μόνο πρόγραμμα, και σημειώστε ποιες χρειάζεται πραγματικά η εργασία σας. Οι περισσότερες συγκρίσεις συμπτύσσονται σε μία σύντομη ερώτηση μόλις υπάρξει αυτό το φύλλο.
Διαχωρίστε την απαίτηση πριν διαβάσετε οποιαδήποτε λίστα θυρών
Τρεις γραμμές καλύπτουν σχεδόν κάθε περίπτωση: φτάσιμο σε προορισμό πέρα από τη σήραγγα, δημοσίευση κάτι ώστε να μπορούν άλλοι να συνδεθούν προς τα μέσα, και μεταφορά της ίδιας της σήραγγας. Κάθε γραμμή αποτυγχάνει για διαφορετικό λόγο, και μια πολιτική παρόχου που ικανοποιεί τη μία μπορεί να αφήσει τις άλλες δύο ανέγγιχτες. Η ταξινόμηση της εργασίας στη σωστή γραμμή παίρνει πέντε λεπτά και γλιτώνει μια διαφωνία αργότερα.
| Line | Who starts it | What can block it | Question for the provider |
|---|---|---|---|
| Outbound destination | Your application | Egress filter on the exit node | Is this protocol and port allowed to that destination? |
| Inbound publishing | A remote peer | No mapping, no public address, short lifetime | Which protocol, which external port, and how long does the mapping last? |
| Tunnel transport | Your client to the gateway | The access network drops that protocol | Does the client offer a fallback the local network permits? |
Οι διαφημιστικές δηλώσεις θολώνουν τις τρεις γραμμές επίτηδες. Μια άδεια P2P περιγράφει πολιτική προορισμού, μια αποκλειστική διεύθυνση περιγράφει μια διεύθυνση, και ο ισχυρισμός ότι δεν υπάρχουν περιορισμοί θυρών συνήθως σημαίνει ότι το πρόγραμμα δεν τις απαριθμεί. Καμία από αυτές τις φράσεις δεν απαντά στις άλλες.
Διαλέξτε μία συγκεκριμένη ροή και γράψτε την ως πρόταση: εκκινητής, μεταφορά, θύρα, οικογένεια διευθύνσεων, κατεύθυνση. Ένας νυχτερινός πελάτης αντιγράφων ασφαλείας που ανεβάζει σε απομακρυσμένο κεντρικό υπολογιστή είναι μόνο εξερχόμενος. Ένας διακομιστής παιχνιδιού στο γραφείο σας στον οποίο συνδέονται φίλοι είναι εισερχόμενος. Η λειτουργία και των δύο μέσα από μία σήραγγα σημαίνει ότι το φύλλο χρειάζεται και τις δύο γραμμές, όχι έναν συμβιβασμό μεταξύ τους.
Η εξερχόμενη πρόσβαση αποτυγχάνει στην πολιτική προορισμού, όχι στη σήραγγα
Η εξερχόμενη κίνηση μέσα από μια πύλη που μεταφράζει δημιουργεί κατάσταση. Το πρώτο πακέτο από μια εσωτερική διεύθυνση και θύρα χτίζει μια εγγραφή μετάφρασης, και οι απαντήσεις ταιριάζουν με αυτήν, που είναι η συμπεριφορά αντιστοίχισης που περιγράφεται στο RFC 3022. Αυτός ο μηχανισμός είναι ο λόγος που μια καρτέλα προγράμματος περιήγησης συνήθως λειτουργεί χωρίς κανένα αίτημα θύρας.
Δύο πράγματα εξακολουθούν να το σπάζουν. Ο κόμβος εξόδου μπορεί να φιλτράρει προορισμούς ή αριθμούς θυρών που θεωρεί καταχρηστικούς, και η εφαρμογή μπορεί να ακούει σε μια θύρα που η πολιτική εξόδου δεν περίμενε ποτέ. Ρωτήστε για το ζεύγος προορισμού αντί για εισερχόμενους κανόνες, και περιμένετε διαφορετικές απαντήσεις για TCP και UDP.
Μετρήστε πριν διαφωνήσετε. Εκτελέστε τα παρακάτω στο μηχάνημα που θα βρίσκεται πίσω από τη σήραγγα, μία φορά με τη σήραγγα κλειστή και μία με ανοιχτή:
ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://example.com
Οι ίδιες εντολές, ο ίδιος προορισμός, δύο καταστάσεις σήραγγας δίνουν σε έναν χειριστή μια σύγκριση πριν και μετά στην οποία μπορεί να βασιστεί. Αντικαταστήστε τη διεύθυνση τεκμηρίωσης με τον κεντρικό υπολογιστή που πραγματικά χρειάζεστε· αυτό που έχει σημασία είναι να επαναλαμβάνεται η σύγκριση, όχι να φαίνεται εντυπωσιακός κάποιος αριθμός.
Η εισερχόμενη δημοσίευση χρειάζεται αντιστοίχιση, διεύθυνση και διάρκεια ζωής
Τίποτα από έξω δεν μπορεί να ξεκινήσει σύνδεση προς τον ακροατή σας, εκτός αν κάτι στη δημόσια πλευρά ξέρει πού να την παραδώσει. Μια στατική δέσμευση θύρας που κρατά ο χειριστής, μια αντιστοίχιση που ζητά ο πελάτης μέσω UPnP, NAT-PMP ή PCP, και μια δρομολογημένη δημόσια διεύθυνση είναι τρία διαφορετικά προϊόντα με τρία διαφορετικά όρια.
Κάντε πέντε ερωτήσεις για οποιοδήποτε από αυτά: ποιο πρωτόκολλο, ποια εξωτερική θύρα, αν η εξωτερική θύρα μπορεί να διαφέρει από την τοπική, ποια οικογένεια διευθύνσεων καλύπτει, και πόσο επιβιώνει η αντιστοίχιση μετά από επανασύνδεση. Μια δέσμευση δεμένη σε ενεργή συνεδρία εξαφανίζεται όταν τελειώσει εκείνη η συνεδρία, ό,τι κι αν λέει η σελίδα του προγράμματος.
Επιβεβαιώστε πρώτα το τοπικό μισό, γιατί ένας νεκρός ακροατής και μια φραγμένη εισερχόμενη διαδρομή φαίνονται ίδια από έξω:
ss -lntup | grep -E ':(8080|51820)\b'
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
Όταν το τοπικό αίτημα επιστρέφει 200 και ένα αίτημα από δίκτυο που δεν ελέγχετε ακόμη λήγει, το κενό βρίσκεται στη δημόσια πλευρά. Αυτή είναι η στιγμή να πείτε στον χειριστή πρωτόκολλο και εξωτερική θύρα αντί να περιγράψετε την εφαρμογή με το όνομά της.
Η ίδια η μεταφορά της σήραγγας είναι ξεχωριστό ζήτημα
Οι θύρες φορέα είναι το μικρότερο κομμάτι του προβλήματος και το ευκολότερο να αναζητηθεί. Οι προεπιλογές διαφέρουν ανά πρωτόκολλο, και το τι μπορεί να διαπραγματευτεί ο πελάτης μετρά περισσότερο από κάθε περιγραφή προγράμματος.
| Client | Outer transport | Default port | When it helps |
|---|---|---|---|
| OpenVPN | UDP | 1194 | Default mode; needs outbound UDP to pass |
| OpenVPN | TCP | 443 | UDP is dropped and TCP 443 is not |
| WireGuard | UDP | 51820 | Short handshake; there is no TCP mode |
| IKEv2/IPsec | UDP | 500 and 4500 | Mobile clients; 4500 carries NAT traversal |
Ένα δίκτυο που πετά το εξερχόμενο UDP θα δεχτεί σήραγγα TCP 443 και θα αρνηθεί μία UDP, οπότε μια εφεδρική λειτουργία ανήκει στο φύλλο απαιτήσεων. Η αλλαγή φορέα δεν μετακινεί θύρα εφαρμογής μέσα στη σήραγγα και δεν διευρύνει πολιτική προορισμού· αυτές μένουν στις δικές τους γραμμές.
Ο κατακερματισμός αξίζει έναν έλεγχο όσο είστε εκεί, γιατί μια σήραγγα που συνδέεται και μετά κολλά σε μεγάλες μεταφορές έχει συνήθως λάθος MTU και όχι κλειστή θύρα:
ping -M do -s 1400 203.0.113.10 ping -M do -s 1372 203.0.113.10
Στα Windows ο ίδιος έλεγχος είναι ping -f -l 1400 203.0.113.10. Ορίστε το MTU της σήραγγας κάτω από το μεγαλύτερο μέγεθος που περνά, και μετά δοκιμάστε ξανά τη μεταφορά που απέτυχε.
Επαληθεύστε τις τρεις γραμμές πριν πληρώσετε για ένα πρόγραμμα
Βάλτε τις τρεις γραμμές σε μία σελίδα και γεμίστε κάθε κελί με μετρημένο αποτέλεσμα αντί για υπόσχεση. Αυτές οι εντολές παράγουν το τοπικό μισό αυτής της σελίδας σε περίπου ένα λεπτό:
ss -lntup | sort
nc -vz -w 3 203.0.113.10 443
python3 -m http.server 8080 --bind 0.0.0.0
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8080
ping -M do -s 1400 203.0.113.10
Διαβάστε την έξοδο ως λίστα ελέγχου. Το εξερχόμενο λειτουργεί όταν ο προορισμός απαντά με τη σήραγγα ανοιχτή. Το εισερχόμενο λειτουργεί μόνο όταν ένας κεντρικός υπολογιστής έξω από το δίκτυό σας φτάνει στον ακροατή στην εξωτερική θύρα. Ο φορέας λειτουργεί όταν η χειραψία ολοκληρώνεται σε πρωτόκολλο που επιτρέπει το δίκτυο πρόσβασής σας.
Δύο συνήθειες κρατούν το φύλλο έντιμο. Καταγράψτε την ημερομηνία και την έκδοση του πελάτη δίπλα σε κάθε αποτέλεσμα, αφού τόσο οι πολιτικές των παρόχων όσο και οι προεπιλογές των πελατών κινούνται. Έπειτα ζητήστε την στενότερη αντιστοίχιση που εξυπηρετεί τη ροή, γιατί ένα αίτημα να ανοίξουν όλα συνήθως κερδίζει μια άρνηση ή μια πρόταση αναβάθμισης αντί για τεχνική απάντηση.