Κάποιος εκτελεί έναν έλεγχο θύρας, βλέπει τη λέξη ανοιχτή και θεωρεί τον διακομιστή λυμένο. Το τι σημαίνει πραγματικά αυτό το αποτέλεσμα είναι στενό: από τη θέση του ελεγκτή, εκείνη τη στιγμή, έγινε δεκτή μια σύνδεση TCP σε αυτή τη διεύθυνση και θύρα. Δεν λέει τίποτα για τη χειραψία του πρωτοκόλλου Minecraft, την επαλήθευση λογαριασμού ή το αν ο διακομιστής άφησε τον παίκτη σε έναν κόσμο.

Πρόκειται για τέσσερα διαφορετικά επίπεδα, και μια αποτυχία σε οποιοδήποτε από αυτά παράγει την ίδια φράση από τον παίκτη: δεν δούλεψε.

Ένας ανιχνευτής δοκιμάζει μόνο ό,τι μπορεί να δει

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

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

Και ο χρόνος μετράει. Το αποτέλεσμα ενός ανιχνευτή περιγράφει τη στιγμή που εκτελέστηκε, και μια οικιακή σύνδεση με δυναμική διεύθυνση ή αλλαγμένο κανόνα προώθησης μπορεί να μετακινήσει την πραγματική απάντηση λίγα λεπτά αργότερα. Κατέγραψε τη δημόσια διεύθυνση, τη θύρα, την οικογένεια διευθύνσεων και την ώρα μαζί με την ετυμηγορία, αλλιώς η παρατήρηση δεν είναι αναπαραγώγιμη. Επανάλαβε τον έλεγχο από ένα πραγματικά διαφορετικό δίκτυο και όχι από ένα τηλέφωνο στην ίδια σύνδεση.

Τέσσερα επίπεδα ανάμεσα σε ένα socket και έναν παίκτη

Φαντάσου τη σειρά που εκτελεί στην πραγματικότητα ένας πελάτης που συνδέεται. Πρώτα επιλύει τη διεύθυνση, μετά ανοίγει μια σύνδεση TCP στη δημοσιευμένη θύρα, μετά μιλά το δικό του πρωτόκολλο του παιχνιδιού για διαπραγμάτευση και επαλήθευση, και τέλος ο διακομιστής αποφασίζει αν αυτή η ταυτότητα επιτρέπεται στον κόσμο. Κάθε επίπεδο έχει τη δική του υπογραφή αποτυχίας, και μόνο το πρώτο είναι ορατό σε έναν ελεγκτή θύρας.

Η προεπιλεγμένη θύρα της Java Edition είναι 25565, αλλά ο διαχειριστής μπορεί να δημοσιεύσει διαφορετική εξωτερική θύρα και να την προωθήσει προς τα μέσα, οπότε ο αριθμός που πληκτρολογεί ένας παίκτης δεν είναι απαραίτητα ο αριθμός που βλέπει ο διακομιστής. Ένας ελεγκτής που στοχεύει λάθος εξωτερική θύρα αναφέρει κλειστή ενώ ο διακομιστής είναι απολύτως υγιής, και αυτός είναι ο πιο συνηθισμένος ψευδής συναγερμός σε όλο αυτόν τον τομέα.

Τα ονόματα προσθέτουν ένα ακόμη βήμα πάνω από τη θύρα. Αν ένας παίκτης πληκτρολογήσει ένα όνομα κεντρικού υπολογιστή, η επίλυση πρέπει να επιστρέψει τη δημοσιευμένη διεύθυνση, και σε ένα μηχάνημα μέσα στο δίκτυο μπορεί να επιστρέψει μια ιδιωτική αντί γι' αυτή. Αυτό δεν είναι αποτυχία τείχους προστασίας και κανένα ποσό προώθησης θυρών δεν θα το αλλάξει.

Γιατί ο παίκτης στο εσωτερικό ακολουθεί διαφορετική διαδρομή

Ένας παίκτης στο ίδιο LAN, ή σε ένα VPN που φτάνει σε αυτό το LAN, προσπαθεί να φτάσει τη δημόσια διεύθυνση από μέσα. Το αίτημα πηγαίνει στην εξωτερική διεύθυνση του δρομολογητή και ο δρομολογητής πρέπει να το μεταφράσει πίσω προς τα μέσα, που είναι η διάταξη που συνήθως ονομάζεται hairpinning ή αντανάκλαση NAT. Τόσο η μετάφραση προς τα έξω όσο και η διαδρομή επιστροφής πρέπει να ευθυγραμμιστούν για να λειτουργήσει αυτό, και πολλοί οικιακοί δρομολογητές δεν το υλοποιούν καθόλου.

Γι' αυτό ο επισκέπτης από έξω συνδέεται και το άτομο δίπλα στον διακομιστή δεν μπορεί. Η εξωτερική διαδρομή είναι πραγματικά εντάξει· η εσωτερική παράκαμψη είναι αυτό που αποτυγχάνει, και αποτυγχάνει με τρόπο που από την οθόνη του παίκτη μοιάζει με πρόβλημα διακομιστή. Το ίδιο το αρχείο καταγραφής του διακομιστή καθορίζει τι συνέβη, γιατί μια σύνδεση που δεν μεταφράστηκε ποτέ δεν φτάνει ποτέ σε αυτόν.

Υπάρχουν δύο έντιμες διορθώσεις και μία κακή συνήθεια. Οι καλές επιλογές είναι να αφήσεις τους εσωτερικούς παίκτες να χρησιμοποιούν την ιδιωτική διεύθυνση ή ένα όνομα split-DNS που επιλύεται εσωτερικά στην ιδιωτική διεύθυνση, ή να ενεργοποιήσεις την αντανάκλαση στον δρομολογητή αν η λειτουργία υπάρχει και συμπεριφέρεται σωστά. Η κακή συνήθεια είναι να ανοίγεις περισσότερες θύρες ή να απενεργοποιείς το τείχος προστασίας του κεντρικού υπολογιστή, που δεν μπορεί να επηρεάσει μια μετάφραση που ο δρομολογητής δεν έκανε ποτέ.

Η τεκμηρίωση της Netgate για την αντανάκλαση NAT περιγράφει λεπτομερέστερα τη διάκριση εξωτερικού και εσωτερικού και την εναλλακτική split-DNS. Διάβασέ την ως περιγραφή του μηχανισμού και όχι ως υπόσχεση ότι ένας συγκεκριμένος πάροχος VPN ή δρομολογητής υποστηρίζει κάθε παραλλαγή loopback.

Συγκέντρωσε στοιχεία από κάθε οπτική γωνία

Για κάθε δοκιμή, κατέγραψε ποιος την εκτέλεσε, από πού, σε ποια ώρα, σε ποια διεύθυνση και θύρα, και τι κατέγραψε ο διακομιστής. Μια απόρριψη του παιχνιδιού με σαφή λόγο στην κονσόλα του διακομιστή είναι διαφορετικό εύρημα από μια σύνδεση που δεν έφτασε ποτέ, και τα δύο οδηγούν σε αντίθετες κατευθύνσεις.

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

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