Ζώνη VPN στο OpenWrt, προώθηση και απόκρυψη διευθύνσεων: ποιο χρειάζεστε;
Η είσοδος ζώνης, η προώθηση και η απόκρυψη διευθύνσεων απαντούν σε διαφορετικά ερωτήματα. Αποφασίστε τι χρειάζεται η κίνηση VPN σας πριν ανοίξετε τη ζώνη WAN.
Τρεις αλλαγές μπερδεύονται μεταξύ τους κάθε φορά που ένα VPN συναντά το OpenWrt: το άνοιγμα μιας θύρας, η άδεια για προώθηση και η ενεργοποίηση της απόκρυψης διευθύνσεων. Απαντούν σε διαφορετικά ερωτήματα, και συνήθως μόνο μία από αυτές είναι η πραγματική απαίτηση. Η ανάγνωση κάθε ελέγχου με βάση τον ρόλο κίνησης που διέπει μετατρέπει την εικασία σε απόφαση και σας λέει επίσης ποιο σύμπτωμα να περιμένετε όταν η αλλαγή είναι λανθασμένη. Ξεκινήστε ονομάζοντας τον ρόλο που απέτυχε, όχι το πλαίσιο ελέγχου που θυμάστε.
Ονομάστε τον ρόλο κίνησης πριν αγγίξετε έναν έλεγχο
Η είσοδος ζώνης αποφασίζει τι μπορεί να φτάσει στον ίδιο τον δρομολογητή. Η έξοδος ζώνης καλύπτει την κίνηση που παράγει ο δρομολογητής, η προώθηση ζώνης είναι η προεπιλογή για κίνηση που περνά από μια ζώνη, και η απόκρυψη διευθύνσεων αποφασίζει αν η διεύθυνση προέλευσης ξαναγράφεται στην έξοδο. Αυτά είναι τέσσερα διαφορετικά ερωτήματα, και μια πολιτική ζώνης απαντά σε όλα μαζί με την ίδια τιμή, γι' αυτό μια αλλαγή σε ολόκληρη τη ζώνη είναι αδρά εργαλείο. Ένας κανόνας με όνομα μπορεί να απαντήσει σε ένα από αυτά χωρίς να αγγίξει τα υπόλοιπα.
Ο χρήσιμος χάρτης είναι ανά ρόλο κίνησης, γιατί αυτό μπορείτε να παρατηρήσετε όταν κάτι αποτυγχάνει. Κάθε ρόλος παρακάτω έχει έναν έλεγχο που τον αποφασίζει και ένα σύμπτωμα που δείχνει προς αυτόν:
| Traffic role | Control that decides it | Where it lives in the config | Symptom when it is wrong |
|---|---|---|---|
| A client reaching a listener on the router | Input policy of the zone that carries the connection, or a rule for the port | option input in the zone stanza, or a named rule | The handshake never completes and the tunnel log says nothing |
| A tunnel client reaching the router itself | Input policy of the tunnel zone | option input in the VPN zone | A ping to the gateway fails |
| A tunnel client reaching another LAN host | Forwarding from the tunnel zone to the LAN zone | config forwarding plus the zone assignment | The gateway answers and the file share times out |
| The router's own traffic leaving the WAN | Output policy, and translation if the far side needs it | option output and option masq | The tunnel never establishes, or replies vanish |
Ένας ακροατής στον δρομολογητή χρειάζεται έναν στενό κανόνα εισόδου
Ένας διακομιστής OpenVPN στον δρομολογητή λαμβάνει κίνηση που απευθύνεται στον δρομολογητή, άρα η εξωτερική του σύνδεση εξαρτάται από την πολιτική εισόδου της ζώνης που τη μεταφέρει. Επιτρέψτε το ρυθμισμένο πρωτόκολλο μεταφοράς και τη θύρα και αφήστε όλα τα υπόλοιπα σε εκείνη τη ζώνη σε απόρριψη. Ένας μόνος κανόνας θύρας είναι πολύ μικρότερη αλλαγή από μια αποδοχή σε ολόκληρη τη ζώνη, και είναι αυτός που θα μπορείτε να εξηγήσετε και μετά από ένα χρόνο.
Δύο πράγματα κάνουν αυτόν τον κανόνα ασφαλή να τον κρατήσετε: ονομάζει τη θύρα που χρησιμοποιεί πραγματικά η υπηρεσία, και βρίσκεται δίπλα στον ορισμό της ζώνης ώστε ο επόμενος άνθρωπος να βλέπει γιατί υπάρχει. Οι γραμμές παρακάτω είναι το σχήμα, με τη θύρα να αντιπροσωπεύει ό,τι έχει ρυθμιστεί στον διακομιστή. Αλλάξτε αυτή τη θύρα και στα δύο σημεία όταν μετακινηθεί η υπηρεσία, γιατί ένας κανόνας που μένει στην παλιά είναι αόρατος μέχρι έναν έλεγχο.
config zone
option name 'wan'
option input 'REJECT'
option forward 'REJECT'
option output 'ACCEPT'
option masq '1'
config rule
option name 'allow-openvpn'
option src 'wan'
option proto 'udp'
option dest_port '1194'
option target 'ACCEPT'Επικυρώστε πριν από την επαναφόρτωση, γιατί ένα συντακτικό λάθος σε αρχείο τείχους προστασίας μπορεί να αφήσει τον δρομολογητή χωρίς λειτουργικό σύνολο κανόνων. Σε έκδοση που χρησιμοποιεί fw4 ο έλεγχος είναι ξεχωριστή εντολή, και αποτυγχάνει ηχηρά αντί να δεχτεί σιωπηλά ένα σπασμένο τμήμα. Επαναφορτώστε μόνο αφού περάσει ο έλεγχος, και κρατήστε το προηγούμενο αρχείο εκεί όπου μπορείτε να το επαναφέρετε.
fw4 check
service firewall reloadΤο αίτημα ενός πελάτη περνά από την προώθηση, όχι από την είσοδο
Μετά την ταυτοποίηση, το αίτημα ενός πελάτη σήραγγας για υπηρεσία LAN παράγει προωθημένη ροή, άρα ο έλεγχος που το αποφασίζει είναι η σχέση προώθησης μεταξύ της ζώνης σήραγγας και της ζώνης LAN. Αναθέστε τη διεπαφή της σήραγγας στη ζώνη που θέλετε, και μετά δηλώστε την κατεύθυνση, τις πηγές και την υπηρεσία. Η ανάθεση ζώνης είναι αυτό που δίνει νόημα στον κανόνα προώθησης, και τα δύο έχουν νόημα μόνο διαβασμένα μαζί. Μια σχέση προώθησης που ονομάζει τη ζώνη σήραγγας ως πηγή και τη ζώνη LAN ως προορισμό διαβάζεται ως μία σκόπιμη απόφαση, ενώ δύο αποδοχές σε ολόκληρη τη ζώνη διαβάζονται ως ατύχημα.
Η πρόσβαση στον ίδιο τον δρομολογητή χρησιμοποιεί ακόμη τη διαδρομή εισόδου, γι' αυτό ένα ping προς την πύλη δεν λέει τίποτα για τον κοινόχρηστο φάκελο πίσω της. Αυτές οι δύο αποτυχίες ζουν σε διαφορετικά τμήματα και διορθώνονται με διαφορετικές αλλαγές. Γράψτε και τις δύο διαδρομές χωριστά πριν αλλάξετε οποιαδήποτε από τις δύο.
Η απόκρυψη διευθύνσεων είναι απόφαση δρομολόγησης, όχι άδεια
Η απόκρυψη διευθύνσεων ξαναγράφει τη διεύθυνση προέλευσης επιλεγμένης εξερχόμενης κίνησης. Μπορεί να σώσει μια σχεδίαση εξόδου όπου η απομακρυσμένη πλευρά δεν έχει διαδρομή επιστροφής, και επίσης κρύβει τις διευθύνσεις μεμονωμένων πελατών από κάθε υπηρεσία που καταγράφει ή εξουσιοδοτεί βάσει διεύθυνσης. Το να την απενεργοποιήσετε είναι επιλογή δρομολόγησης για τη διαδρομή επιστροφής, όχι διακόπτης ασφαλείας που κλείνει μια τρύπα εισόδου. Μια σήραγγα που λειτουργεί με τη μετάφραση ενεργή και αποτυγχάνει τη στιγμή που απενεργοποιείται συνήθως έχει διαδρομή επιστροφής που λείπει, όχι κανόνα τείχους προστασίας που λείπει.
Η δρομολογημένη εναλλακτική απαιτεί διαδρομή επιστροφής στην απομακρυσμένη πλευρά αντί για μετάφραση. Καμία από τις δύο επιλογές δεν παρέχει την άδεια του τείχους προστασίας ή τον λογαριασμό της εφαρμογής, γι' αυτό η απενεργοποίηση της απόκρυψης σχεδόν ποτέ δεν διορθώνει πελάτη σήραγγας που δεν μπορεί να φτάσει πουθενά. Αντιμετωπίστε ξεχωριστά και την πολιτική IPv4 και την IPv6, αφού μία ρύθμιση μετάφρασης δεν περιγράφει και τις δύο οικογένειες.
Αποδείξτε την απόφαση με ένα επιτρεπόμενο και ένα απορριφθέν αίτημα
Στείλτε ένα αίτημα που πρέπει να επιτραπεί και ένα που πρέπει να απορριφθεί, και μετά εντοπίστε τον έλεγχο που πήρε κάθε απόφαση. Μια σελίδα που τυχαίνει να φορτώνει δεν είναι απόδειξη· η απόδειξη είναι ο κανόνας που ταίριαξε, στην αλυσίδα όπου ταίριαξε. Η απόρριψη μετρά όσο και η επιτυχία, γιατί δείχνει ότι η πολιτική κάνει κάτι αντί να επιτρέπονται όλα.
Δύο εντολές σας δίνουν αυτή την απόδειξη σε τρέχουσα έκδοση. Ο μετρητής στον κανόνα που ταιριάζει κινείται όταν το αίτημα γίνεται δεκτό, και το αρχείο καταγραφής δείχνει την απόρριψη αν έχετε ενεργοποιήσει την καταγραφή για τον κανόνα:
nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'Κρατήστε μια διαδρομή διαχείρισης που μπορείτε ακόμη να χρησιμοποιήσετε πριν αλλάξετε οποιαδήποτε πολιτική τείχους προστασίας, και ακολουθήστε τη διαδικασία επικύρωσης και επαναφοράς του κατόχου της διαμόρφωσης. Μια αλλαγή που σας κλειδώνει έξω από τον δρομολογητή δεν είναι αποτέλεσμα δοκιμής, είναι δεύτερο περιστατικό. Καταγράψτε τη ζώνη και τον ρόλο κίνησης δίπλα σε κάθε παρατήρηση, ώστε το ζεύγος αποτελεσμάτων να εξηγεί την πολιτική αντί να περιγράφει μια τυχερή φόρτωση σελίδας.