Ένας νεκρός listener στο DD-WRT συνήθως σημαίνει ότι ο daemon τερματίστηκε κατά την ανάλυση της διαμόρφωσής του, όχι ότι ένας κανόνας firewall μπλόκαρε τη θύρα. OpenVPN 2.5 αυστηροποίησε αρκετές προεπιλογές στις οποίες βασίζονταν παλαιότερες διαμορφώσεις, και μια παραγόμενη διαμόρφωση που λειτουργούσε σε παλαιότερη έκδοση μπορεί να απορριφθεί πριν ανοίξει καν το socket. Ο λόγος βρίσκεται στο αρχείο καταγραφής του ίδιου του router και η είσοδος στο παραγόμενο αρχείο. Η ανάγνωση και των δύο με αυτή τη σειρά είναι ταχύτερη από οποιαδήποτε σύλληψη πακέτων.

Ο daemon δεν είναι το firewall

Η διάκριση έχει σημασία γιατί οι δύο αστοχίες φαίνονται ίδιες από έξω: ένας client στέλνει handshake και δεν παίρνει τίποτα πίσω. Η μία είναι διεργασία που δεν τρέχει και η άλλη διεργασία που τρέχει και φιλτράρει.

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

Διαβάστε τη διαμόρφωση που δημιούργησε το DD-WRT

Το DD-WRT δεν δίνει στο OpenVPN το κείμενο που πληκτρολογήσατε στη διεπαφή web. Γράφει μια παραγόμενη διαμόρφωση στο /tmp/openvpn/openvpn.conf και ξεκινά τον daemon με αυτό το αρχείο, οπότε τα πεδία της διεπαφής και οποιοδήποτε κείμενο στο Additional Config συγχωνεύονται πριν τα δει ποτέ το OpenVPN. Αν κάνετε debugging στη φόρμα αντί στο παραγόμενο αρχείο, διαβάζετε μια πρόθεση και όχι την πραγματική είσοδο. Αντιγράψτε αυτό το αρχείο σε μόνιμη θέση πριν μια επανεκκίνηση /tmp καθαρίσει.

Συγκρίνετε το παραγόμενο αρχείο με αυτό που σκοπεύατε, ειδικά όπου η διεπαφή γράφει μια οδηγία που δεν επιλέξατε ποτέ. Ένα αναπτυσσόμενο μενού που εκπέμπει μια παρωχημένη επιλογή είναι αόρατο στη φόρμα και θανατηφόρο για τον daemon.

Αν το παραγόμενο αρχείο είναι κενό ή λείπει, ο daemon δεν έφτασε καν στην εκκίνηση και το πρόβλημα βρίσκεται πριν από το OpenVPN.

Τι σταμάτησε να δέχεται το OpenVPN 2.5

Το OpenVPN 2.5 αντικατέστησε το ncp-ciphers με το data-ciphers, και ανέβασε την προεπιλεγμένη ελάχιστη έκδοση TLS στο 1.2. Άλλαξε επίσης τον χειρισμό συμπίεσης, ώστε ένας peer που προσφέρει συμπίεση να απορρίπτεται εκτός αν η διαμόρφωση το επιτρέπει ρητά, και χαρακτήρισε παρωχημένα παλαιότερα ονόματα επιλογών όπως το ns-cert-type υπέρ του remote-cert-tls. Κάθε μία από αυτές τις αλλαγές μετατρέπει μια διαμόρφωση που δούλευε σε αποτυχία ανάλυσης ή διαπραγμάτευσης.

Ο τρόπος αποτυχίας εξαρτάται από την οδηγία. Μια άγνωστη ή αφαιρεμένη επιλογή σταματά τον daemon στην εκκίνηση, αυτός είναι ο νεκρός σας listener. Μια ασυμφωνία διαπραγμάτευσης αφήνει τον daemon να τρέχει και απορρίπτει clients, κάτι που από την πλευρά του client μοιάζει με πρόβλημα firewall.

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

Οι προϋποθέσεις ειδικά για Broadcom

Στις εκδόσεις για Broadcom η συσκευή τούνελ πρέπει να υπάρχει πριν τη χρησιμοποιήσει ο daemon. Ελέγξτε ότι το module tun είναι φορτωμένο και ότι /dev/net/tun υπάρχει, γιατί μια συσκευή που λείπει παράγει αποτυχία εκκίνησης που δεν έχει καμία σχέση με πιστοποιητικά. Το ίδιο ισχύει για τα βοηθητικά script που δημιουργεί το DD-WRT για διαδρομές και DNS: αν λείπουν ή δεν είναι εκτελέσιμα, ο daemon μπορεί να ξεκινήσει και παρ’ όλα αυτά να μην ολοκληρώσει τη ρύθμιση.

Τρέξτε τον daemon στο προσκήνιο με μεγαλύτερη λεπτομέρεια πάνω στην παραγόμενη διαμόρφωση όταν χρειάζεστε το πραγματικό μήνυμα. Μια εκτέλεση στο προσκήνιο τυπώνει το σφάλμα ανάλυσης που κατάπιε το init script.

Έπειτα επαναφέρετε την κανονική υπηρεσία, γιατί ένας daemon στο προσκήνιο και το init script θα μαλώσουν για τη θύρα.

Αποδείξτε ότι ο listener υπάρχει πριν κάνετε debugging στους clients

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

Το debugging στην πλευρά του client έχει νόημα μόνο αφού υπάρχει ο listener. Τότε ελέγξτε ότι το cipher και οι ρυθμίσεις TLS του client ταιριάζουν με τη λίστα data-ciphers του server και την ελάχιστη έκδοσή του, και ότι η θύρα όντως προωθείται στον router.

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

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