Ένα πακέτο φεύγει από ένα φορητό υπολογιστή, δεν φτάνει ποτέ στην πύλη VPN και κανένας μετρητής του τείχους προστασίας δεν κινείται. Ο πίνακας δρομολόγησης έχει ήδη αποφασίσει την τύχη του πακέτου: μια καταχώριση blackhole ταίριασε και ο πυρήνας το απέρριψε πριν το δει οποιαδήποτε διεπαφή. Αυτή η συμπεριφορά είναι χρήσιμη όταν ένας προορισμός πρέπει να αποτύχει κλειστά, αλλά είναι ενέργεια δρομολόγησης με στενό εύρος. Το να τη θεωρήσουμε πλήρες kill switch είναι το σημείο όπου τα σχέδια πάνε στραβά.

Τι ταιριάζει πραγματικά η ενέργεια απόρριψης

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

Γι' αυτό το εύρος ενός blackhole είναι ακριβές και εύκολο να δηλωθεί: καλύπτει το πρόθεμα, στον πίνακα, για εκείνη την οικογένεια διευθύνσεων. Δεν καλύπτει προορισμό που θα κέρδιζε άλλος πίνακας και δεν καλύπτει το IPv6 μόνο επειδή απορρίπτεται το πρόθεμα IPv4.

ip route get δείχνει την απόφαση πριν αναπτύξετε οτιδήποτε, μαζί με τον πίνακα και τον τύπο διαδρομής. Η ανάγνωση αυτής της εξόδου είναι ταχύτερη από το να συμπεράνετε από ένα αποτυχημένο αίτημα ποιος κανόνας ή πρόθεμα ενεργοποιήθηκε.

Το blackhole δεν είναι το ίδιο με unreachable ή prohibit

Το Linux προσφέρει τρεις τύπους διαδρομής που μοιάζουν με απόρριψη και διαφέρουν σε αυτό που παρατηρεί ο αποστολέας. Το blackhole ρίχνει το πακέτο χωρίς απάντηση, οπότε ο πελάτης βλέπει λήξη χρόνου. Η διαδρομή unreachable επιστρέφει μήνυμα ICMP unreachable, οπότε η σύνδεση αποτυγχάνει γρήγορα με σφάλμα κεντρικού υπολογιστή ή δικτύου. Η διαδρομή prohibit επιστρέφει σφάλμα διοικητικής απαγόρευσης, που πλησιάζει περισσότερο σε σκόπιμη άρνηση πολιτικής.

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

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

Πώς συγκρίνεται με ένα kill switch

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

MechanismWhat it blocksWhat it missesHow failure looks
Blackhole routeDestinations matching the prefix and tableOther tables, other address families, traffic with a different routeSilent timeout
Firewall kill switchEgress not bound to the tunnel interfaceRules that are too broad can break the endpoint or DHCPDropped packets with counters
WireGuard AllowedIPsDestinations not routed into the interfaceTraffic that never enters the interface at allNo tunnel route, direct egress

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

Το AllowedIPs του WireGuard είναι δρομολόγηση κρυπτοκλειδιού, όχι τείχος προστασίας. Αποφασίζει ποια προθέματα προορισμού γίνονται δεκτά στη διεπαφή και ένα προφίλ που απαριθμεί μόνο το υποδίκτυο της σήραγγας αφήνει απλώς τους άλλους προορισμούς στην κοινή προεπιλεγμένη διαδρομή. Γι' αυτό τα προφίλ πλήρους σήραγγας χρησιμοποιούν 0.0.0.0/0 και γι' αυτό το wg-quick εγκαθιστά επίσης κανόνες τείχους προστασίας όταν μπορεί.

Κρατήστε το τελικό σημείο της σήραγγας έξω από την απόρριψη

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

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

Το IPv6 χρειάζεται δική του καταχώριση και δική του επισκόπηση. Ένα σχέδιο που απορρίπτει το IPv4 σε blackhole αφήνοντας το IPv6 στην προεπιλεγμένη διαδρομή διαρρέει ακριβώς την κίνηση που η πολιτική ήθελε να σταματήσει και το λάθος είναι αόρατο σε δοκιμή μόνο για IPv4.

Εφαρμόστε το με χρονόμετρο και επαναφορά

Εφαρμόστε τη διαδρομή με σύντομη αυτόματη αφαίρεση ώστε ένα λάθος να μην επιβιώσει από επανεκκίνηση. Οι παρακάτω εντολές χρησιμοποιούν εύρος τεκμηρίωσης· αντικαταστήστε το με το πρόθεμα που το σχέδιό σας πραγματικά απορρίπτει:

sudo ip route replace blackhole 10.0.0.0/8
ip route get 10.1.2.3
sudo systemd-run --on-active=60 /sbin/ip route del blackhole 10.0.0.0/8

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

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

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