Σετ nftables τροφοδοτούμενο από DNS προς WireGuard: πώς λειτουργεί η παράδοση
Μια απάντηση DNS μπορεί να τροφοδοτήσει ένα σετ nftables, αλλά ένα σετ δεν δρομολογεί τίποτα. Ακολουθήστε τις τέσσερις παραδόσεις και τις τρεις διάρκειες ζωής που κρίνουν αν η κατεύθυνση θα δουλέψει.
Τα ονόματα επιλύονται σε διευθύνσεις και αυτές οι διευθύνσεις μπορούν να καταλήξουν σε ένα σετ του τείχους προστασίας που αργότερα επηρεάζει τη δρομολόγηση, κάτι που κάνει την κατεύθυνση βάσει ονόματος εφικτή χωρίς διαμεσολαβητή. Το αγκάθι είναι ότι τέσσερα συστατικά πρέπει να παραδώσουν σωστά: ο επιλυτής, το σετ, ο ταξινομητής που σημαδεύει μια νέα ροή και ο ομότιμος που τη μεταφέρει. Κάθε παράδοση αποτυγχάνει διαφορετικά και κάθε μία κρατά τον δικό της χρόνο.
Δείτε το σχέδιο ως αλυσίδα και όχι ως διαμόρφωση. Το ερώτημα σε κάθε βήμα είναι ποιο συστατικό κατέχει την απόφαση και τι συμβαίνει όταν λείπει η είσοδός του.
Τι μπορεί και τι δεν μπορεί η απάντηση DNS
Το dnsmasq μπορεί να αντιγράψει διευθύνσεις από απαντήσεις σε ένα σετ nftables, που είναι τροφοδότηση και όχι απόφαση δρομολόγησης. Αυτή η επιλογή, τεκμηριωμένη στο εγχειρίδιο του dnsmasq, ορίζει την οικογένεια, τον πίνακα και το σετ, και το αρχικό 4# επιλέγει μόνο εγγραφές A, οπότε οι προορισμοί v6 χρειάζονται δική τους ρύθμιση. Το σετ πρέπει να υπάρχει ήδη, γιατί ο επιλυτής προσθέτει στοιχεία σε κάτι που δημιούργησε ο ιδιοκτήτης του τείχους. Τίποτα σε αυτό το βήμα δεν επιλέγει διεπαφή, πίνακα ή ομότιμο.
Ο πελάτης πρέπει επίσης να χρησιμοποιεί αυτόν τον επιλυτή για το όνομα. Μια εφαρμογή με δικό της κρυπτογραφημένο DNS, ή μια αποθηκευμένη απάντηση από πριν υπάρξει η πολιτική, συνδέεται χωρίς να δημιουργήσει καμία εγγραφή στο σετ.
Το σετ είναι είσοδος, όχι διαδρομή
Ένα στοιχείο σε ένα σετ είναι συνθήκη αντιστοίχισης. Κάτι πρέπει να το κοιτάξει, να αποφασίσει ότι αυτό το πακέτο ξεκινά νέα ροή και να εφαρμόσει την πολιτική που στέλνει τη ροή μέσα από τη σήραγγα. Στο Linux αυτό συνήθως σημαίνει μια διαδρομή εξόδου με δυνατότητα δρομολόγησης που μπορεί να θέσει σημάδι, έναν κανόνα που στέλνει τα σημασμένα πακέτα σε αποκλειστικό πίνακα και μια διαδρομή σε αυτόν τον πίνακα προς τη συσκευή WireGuard. Η ιδιότητα μέλους μόνη της δεν εγκαθιστά τίποτα από αυτά.
nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips
Ο ομότιμος εφαρμόζει έναν δεύτερο έλεγχο κάλυψης που οι άνθρωποι ξεχνούν. Το WireGuard κρυπτογραφεί ένα πακέτο μόνο για ομότιμο του οποίου οι επιτρεπόμενες διευθύνσεις περιλαμβάνουν τον προορισμό, οπότε μια διαδρομή πολιτικής προς τη διεπαφή δεν αρκεί όταν η λίστα του ομοτίμου αποκλείει αυτό το πρόθεμα. Κρατήστε τη λίστα υπό τον έλεγχο του ιδιοκτήτη δρομολόγησης αντί να βασίζεστε σε όποια δημιουργία διαδρομών κάνει ο διαχειριστής.
Σημάδια, πίνακες και κάλυψη ομοτίμου
Τα σημάδια είναι κοινός χώρος ονομάτων, οπότε και η τιμή και η μάσκα πρέπει να συμφωνούνται με ό,τι άλλο τα χρησιμοποιεί. Ένας κανόνας που στέλνει σημασμένη κίνηση σε αποκλειστικό πίνακα χρειάζεται καθορισμένο αποτέλεσμα όταν ο πίνακας δεν έχει αντίστοιχη διαδρομή, γιατί μια αναζήτηση χωρίς απάντηση μπορεί να συνεχίσει στον επόμενο κανόνα και να στείλει το πακέτο έξω από τη φυσική διεπαφή. Μια προεπιλεγμένη διαδρομή blackhole μέσα στον αποκλειστικό πίνακα μετατρέπει αυτή τη σιωπηλή διαφυγή σε ορατή απόρριψη. Αυτό που το σχέδιο ακόμη δεν μπορεί είναι να κλείσει επί αποτυχίας για προορισμό που δεν μπήκε ποτέ στο σετ.
Τα δικά του εξωτερικά πακέτα της σήραγγας πρέπει να ξεφεύγουν από τον ταξινομητή. Τα εργαλεία του WireGuard παρέχουν σημάδι υποδοχής ακριβώς για αυτόν τον σκοπό, και η χρήση του εμποδίζει την ενθυλάκωση να δρομολογηθεί πίσω στη διεπαφή που χτίζει.
Δοκιμάστε κάθε διάρκεια ζωής ξεχωριστά
Τρία καταστήματα γερνούν με τρία χρονοδιαγράμματα: η μνήμη του επιλυτή, τα στοιχεία του σετ και η παρακολουθούμενη σύνδεση. Δοκιμάστε τα με αυτή τη σειρά και δείτε αν το καθένα κινείται όταν πρέπει. Οι εντολές παρακάτω διαβάζουν τον επιλυτή, το σετ, τον πίνακα συνδέσεων και τους κανόνες πολιτικής χωρίς να αλλάζουν τίποτα.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Μια φρέσκια αναζήτηση που προσθέτει στοιχείο αποδεικνύει ότι η τροφοδότηση δουλεύει, ενώ ένα παλιό στοιχείο που επιβιώνει της απάντησής του είναι αναντιστοιχία διάρκειας ζωής που αξίζει να καταγραφεί. Μια νέα σύνδεση στον πίνακα συνδέσεων με το αναμενόμενο σημάδι δείχνει ότι ο ταξινομητής έτρεξε, και μια παλιά σύνδεση που κρατά το αρχικό σημάδι είναι σωστή συμπεριφορά και όχι σφάλμα. Η λίστα κανόνων απαντά αν η αναζήτηση πολιτικής υπάρχει καθόλου, που είναι διαφορετικό ερώτημα από το αν ταίριαξε. Διαβάστε τις τέσσερις εξόδους με αυτή τη σειρά και η αποτυχημένη παράδοση θα αποκαλυφθεί μόνη της.
Όπου η απαίτηση είναι ένα συγκεκριμένο όνομα να χρησιμοποιεί πάντα μία διαδρομή, ένα σετ τροφοδοτούμενο από DNS δεν μπορεί να το αποδείξει, γιατί οι κοινές διευθύνσεις φέρουν και άλλα ονόματα. Ένας διαμεσολαβητής ή μηχανισμός σε επίπεδο εφαρμογής είναι το εργαλείο για αυτή την εγγύηση.