Το OpenVPN συνδέεται αλλά τίποτα δεν ρέει: βρείτε το επίπεδο όπου πέφτει το πακέτο
Μια συνδεδεμένη σήραγγα χωρίς κίνηση έχει τουλάχιστον πέντε αιτίες. Αποδείξτε τον ακροατή, συλλάβετε το εξωτερικό πακέτο και μετά αφήστε τους μετρητές ή ένα ίχνος να ονομάσουν τον κανόνα.
OpenVPN λέει συνδεδεμένο και καμία κίνηση δεν κινείται, μια φράση που καλύπτει τουλάχιστον πέντε άσχετες βλάβες. Η επεξεργασία κανόνων τείχους προστασίας πριν ξέρετε ποιο επίπεδο αποτυγχάνει πολλαπλασιάζει τα άγνωστα και αφήνει στον επόμενο μηχανικό ένα χάος. Δουλέψτε προς τα έξω από τη διεργασία, γιατί κάθε βήμα παρακάτω είτε καθαρίζει ένα στάδιο είτε περιορίζει πού πεθαίνει το πακέτο. Η σειρά μετράει εδώ: μια σύλληψη που λαμβάνεται πριν ξέρετε ποια διεύθυνση είναι δεσμευμένη θα αποδείξει κάτι, αλλά όχι αυτό που χρειάζεστε.
Το socket είναι είτε δεσμευμένο είτε όχι
Μια υπηρεσία που αναφέρει ενεργή μπορεί ακόμα να είναι δεσμευμένη σε μια διεύθυνση ή μεταφορά που δεν σκοπεύατε. Ρωτήστε το ίδιο το socket: ss -lunp απαριθμεί ακροατές UDP και ss -ltnp απαριθμεί TCP, και η στήλη που αξίζει να διαβαστεί είναι η τοπική διεύθυνση, όχι η κατάσταση.
Μια κενή απάντηση συνήθως σημαίνει ένα από τρία: η διεργασία τερμάτισε μετά την εκκίνηση, φόρτωσε άλλο αρχείο διαμόρφωσης, ή ακούει σε διαφορετική διεύθυνση από αυτή που καλείται.
ss -lunp | grep 1194
ss -ltnp | grep 1194
Μια οδηγία local καρφώνει τον ακροατή σε μία διεύθυνση, οπότε ένας πελάτης που στοχεύει αλλού στον ίδιο κεντρικό υπολογιστή απορρίπτεται ενώ η υπηρεσία από έξω εξακολουθεί να φαίνεται υγιής. Ένα όνομα παρουσίας μπορεί επίσης να δείχνει σε αρχείο που δεν επεξεργαστήκατε ποτέ, κάτι που συμβαίνει σε υπολογιστές που τρέχουν δύο προφίλ δίπλα-δίπλα.
Συλλάβετε το εξωτερικό πακέτο, όχι τη σήραγγα
Φιλτράρετε στη φυσική διεπαφή και στην πραγματική θύρα, με τη δική σας διεπαφή στη θέση: tcpdump -ni eth0 udp port 1194. Τα εξερχόμενα πακέτα χωρίς τίποτα να επιστρέφει δείχνουν τι βρίσκεται πιο πάνω: φιλτράρισμα παρόχου, μια συσκευή NAT ή μια απομακρυσμένη διεύθυνση που δεν είναι αυτή που νομίζετε. Η σιωπή και προς τις δύο κατευθύνσεις δείχνει δρομολόγηση πελάτη ή τοπικό τείχος προστασίας. Απαντήσεις που φτάνουν χωρίς πρόοδο της σήραγγας δείχνουν το κανάλι ελέγχου, δηλαδή αναντιστοιχία κλειδιού ή κρυπτογράφησης, όχι το φιλτράρισμα.
Συλλάβετε και τις δύο κατευθύνσεις και κρατήστε το αρχείο σύντομο. Μια μεγάλη σύλληψη θάβει τα ενδιαφέροντα τρία δευτερόλεπτα, και η απάντηση βρίσκεται σχεδόν πάντα στην πρώτη ανταλλαγή.
Πρώτα οι μετρητές, ίχνος μόνο όταν λένε ψέματα
Ξεκινήστε με τους μετρητές, γιατί δεν κοστίζουν τίποτα. Είτε το nft list ruleset είτε το iptables -L -n -v απαντά στην μόνη ερώτηση που μετράει εδώ: ταίριαξε ο κανόνας; Η σειρά καθορίζει το αποτέλεσμα, γιατί το πρώτο ταίριασμα κερδίζει, γι' αυτό ένα ευρύ DROP πριν από μεταγενέστερο ACCEPT αφήνει αυτό το ACCEPT νεκρό και γι' αυτό η προσθήκη κανόνα τόσο σπάνια διορθώνει κάτι.
Η ιδιοκτησία μπερδεύει επίσης. Ο πυρήνας αποδίδει τα τοπικά παραγόμενα πακέτα στη διεργασία που άνοιξε το socket, και το OpenVPN συνήθως τρέχει ως root, οπότε ένας κανόνας κλειδωμένος σε συνηθισμένο ID χρήστη δεν βλέπει ποτέ την κίνηση της ίδιας της σήραγγας. Ελέγξτε το UID ιδιοκτήτη πριν αποφασίσετε ότι ο κανόνας είναι λάθος.
Μόνο όταν οι μετρητές παραμένουν αμφίσημοι αξίζει το ημερολόγιο τον θόρυβο, και τότε μόνο για ένα στενό τμήμα: έναν κανόνα iptables που περιορίζει τον ρυθμό και βάζει πρόθεμα στις γραμμές του, ή έναν κανόνα nftables που φέρει meta nftrace set 1 με το nft monitor trace σε λειτουργία. Ένα ίχνος ονομάζει την αλυσίδα και τον κανόνα που δέχτηκε ή απέρριψε το πακέτο. Αφαιρέστε και τα δύο μετά και κρατήστε την καταγραφή ωφέλιμου φορτίου έξω από αυτό.
Ελέγξτε και τη μεταφορά. Μια υπηρεσία τείχους προστασίας περιορισμένη σε TCP δεν λέει τίποτα για ακροατή UDP σε αυτόν τον αριθμό, οπότε ένας κανόνας που διαβάζεται σωστά μπορεί ακόμα να απορρίπτει κάθε πακέτο.
Δρομολόγηση και ο δρόμος της επιστροφής
Ένα πακέτο που έγινε δεκτό και ακόμα εξαφανίζεται χρειάζεται εξέταση της διαδρομής προορισμού. Το ip route get αναφέρει τη διαδρομή που επιλέχθηκε για μία διεύθυνση, και το φιλτράρισμα αντίστροφης διαδρομής μπορεί να απορρίψει μια απάντηση που φτάνει μέσω διεπαφής που ο κύριος πίνακας δεν θα διάλεγε ποτέ. Το σύμπτωμα μοιάζει ακριβώς με απόρριψη τείχους προστασίας, γι' αυτό αυτός ο έλεγχος έρχεται πριν από άλλον κανόνα NAT.
Σε μια πύλη, ελέγξτε την προώθηση και την αλυσίδα forward αντί για την αλυσίδα input. Μετά επιβεβαιώστε ότι η μακρινή πλευρά ξέρει πώς να φτάσει στη διεύθυνση προέλευσης, γιατί μια λειτουργική εξερχόμενη διαδρομή χωρίς τίποτα να επιστρέφει είναι σιωπή και στις δύο περιπτώσεις.
Τι πρέπει να πει το αρχείο
Για κάθε αλλαγή, σημειώστε το στάδιο που δοκιμάσατε, τα στοιχεία που διαβάσατε και την τιμή του μετρητή και στις δύο πλευρές του. Αυτή η σημείωση κάνει το "τώρα λειτουργεί" βιώσιμο στην επόμενη αναθεώρηση.
Δύο συντομεύσεις κρατούν τη σημείωση ειλικρινή. Ένα πακέτο που δεν έφυγε ποτέ από τον υπολογιστή δεν θα μπορούσε να έχει απορριφθεί από κανόνα αλλού, όσο πειστική κι αν φαίνεται η διαμόρφωση της μακρινής πλευράς. Ένα πακέτο που έφυγε και επέστρεψε μετακινεί το ερώτημα πάνω από το επίπεδο δικτύου, όπου οι μετρητές του τείχους προστασίας δεν έχουν πια τίποτα να σας πουν.