Το split tunnel δεν εξαιρεί έναν δημόσιο host από τους κανόνες NAT του ASA
Μια διαδρομή split-include τραβά έναν δημόσιο host μέσα στη σήραγγα, όπου ο ASA πρέπει να κάνει hairpin και να μεταφράσει την πηγή. Αν παραλείψεις οποιοδήποτε από τα δύο βήματα, η ροή πέφτει.
Το split tunneling περιγράφεται συνήθως ως τρόπος να κρατάς την εταιρική κίνηση μέσα στη σήραγγα και την υπόλοιπη διαδικτυακή κίνηση έξω από το τείχος προστασίας. Και τα δύο μισά αυτής της περιγραφής είναι λανθασμένα με τον ίδιο τρόπο. Το split tunneling είναι απόφαση δρομολόγησης που λαμβάνει ο πελάτης, και μια απόφαση δρομολόγησης δεν λέει τίποτα για το τι συμβαίνει στο πακέτο αφού φτάσει στο headend.
Μία υπηρεσία συνεργάτη σε δημόσια διεύθυνση, που επιμένει να βλέπει τη διεύθυνση των κεντρικών σου γραφείων, αρκεί για να καταρρεύσει η ιστορία.
Ο μύθος: το split tunnel βγάζει το τείχος προστασίας από τη διαδρομή
Η πεποίθηση είναι ότι οποιοσδήποτε προορισμός εκτός των ιδιωτικών περιοχών μένει στην τοπική σύνδεση Internet, ώστε το τείχος προστασίας να μην τον βλέπει ποτέ και να μη χρειάζεται ποτέ κανόνα γι' αυτόν. Αυτό ισχύει μόνο όσο ο προορισμός απουσιάζει από τη λίστα της σήραγγας. Τη στιγμή που ένας διαχειριστής προσθέτει έναν δημόσιο host στο ACL split-include, ο πελάτης στέλνει αυτή την κίνηση μέσα στη σήραγγα, και ο ASA πρέπει να τη δρομολογήσει, να τη φιλτράρει και να τη μεταφράσει όπως κάθε άλλη αποκρυπτογραφημένη ροή. Τίποτα δεν άλλαξε στον πελάτη εκτός από τη λίστα προορισμών.
Ο πελάτης δεν έγινε δρομολογητής. Ακολούθησε την πολιτική που του έδωσες.
Τι κάνει στην πραγματικότητα μια διαδρομή split-include
Σε μια εγκατάσταση απομακρυσμένης πρόσβασης Cisco ASA, η πολιτική ομάδας φέρει split-tunnel-policy tunnelspecified και ένα split-tunnel-network-list που ονομάζει ένα τυπικό ACL. Κάθε γραμμή permit σε αυτό το ACL είναι ένας προορισμός που ο πελάτης πρέπει να στέλνει στη σήραγγα, και όλα τα υπόλοιπα συνεχίζουν να χρησιμοποιούν την τοπική προεπιλεγμένη διαδρομή.
Η προσθήκη ενός host είναι μία γραμμή, και είναι το μόνο κομμάτι της αλλαγής που μπορεί να δει ο πελάτης: access-list RA-SPLIT standard permit host 203.0.113.20.
Επανασυνδέστε τον πελάτη μετά. Η πολιτική ανταλλάσσεται κατά τη σύνδεση, οπότε μια ήδη εγκατεστημένη συνεδρία κρατά την παλιά λίστα και κάνει την αλλαγή να φαίνεται ότι δεν έκανε τίποτα.
Το πακέτο φτάνει και φεύγει από την ίδια διεπαφή
Τώρα ακολούθησε τη ροή μετά την αποκρυπτογράφηση. Το πακέτο μπήκε από την εξωτερική διεπαφή μέσω της σήραγγας VPN, ο προορισμός του είναι δημόσια διεύθυνση, και ο πίνακας δρομολόγησης το στέλνει πίσω από την ίδια εξωτερική διεπαφή προς το Internet. Η κίνηση που μπαίνει και βγαίνει από μία διεπαφή απορρίπτεται εκτός αν επιτραπεί στον ASA, και αυτό κάνει το same-security-traffic permit intra-interface. Χωρίς αυτό, η σύνδεση αποτυγχάνει με τρόπο που μοιάζει με πρόβλημα δρομολόγησης και δεν είναι.
Αυτή η ρύθμιση είναι καθολική. Επιτρέπει hairpinning για κάθε ροή που το χρειάζεται, όχι μόνο για αυτόν τον host συνεργάτη, οπότε ανήκει σε μια ελεγμένη αλλαγή και όχι σε ένα γρήγορο τεστ.
Γιατί ένα PAT περιορισμένο στον προορισμό δεν είναι προαιρετικό
Η διεύθυνση πηγής στο αποκρυπτογραφημένο πακέτο είναι ακόμα η διεύθυνση VPN του πελάτη, συνήθως από μια δεξαμενή όπως 10.77.0.0/24. Αυτή η διεύθυνση δεν έχει διαδρομή στο δημόσιο Internet, οπότε ο συνεργάτης είτε δεν απαντά ποτέ είτε απαντά στο πουθενά.
Η μετάφραση διορθώνει την πηγή και αφήνει τον προορισμό ανέπαφο. Εφόσον τα αντικείμενα έχουν ήδη οριστεί αλλού, ένας χειροκίνητος κανόνας περιορισμένος σε αυτόν τον προορισμό έχει αυτή τη μορφή:
same-security-traffic permit intra-interface
object network RA_POOL
subnet 10.77.0.0 255.255.255.0
object network PARTNER_HOST
host 203.0.113.20
nat (outside,outside) source dynamic RA_POOL interface destination static PARTNER_HOST PARTNER_HOSTΤο τμήμα destination static έχει σημασία. Αν το αφαιρέσεις, ο κανόνας γίνεται μια ευρεία μετάφραση που μπορεί να ταιριάξει με πολύ περισσότερη κίνηση από την προβλεπόμενη, και ένας ευρύς κανόνας identity νωρίτερα στη σειρά μπορεί να τον νικήσει εντελώς. Έλεγξε το show nat detail και τη σειρά των ενοτήτων πριν υποθέσεις ότι ο κανόνας σου είναι αυτός που ταιριάζει.
Το PAT διεπαφής σημαίνει επίσης ότι ο συνεργάτης βλέπει τη διεύθυνση διεπαφής του ASA, η οποία μπορεί να μεταφραστεί ξανά πιο πάνω. Αν το συμβόλαιο ονομάζει διεύθυνση, επιβεβαίωσέ την από άκρη σε άκρη και όχι σε ένα άλμα.
Απόδειξέ το με τον σωστό προορισμό δοκιμής
Χρησιμοποίησε τον ίδιο τον host του συνεργάτη, όχι μια γενική σελίδα what-is-my-ip. Αυτή η σελίδα είναι σχεδόν σίγουρα εκτός της λίστας split, οπότε αναφέρει την τοπική σου διεύθυνση Internet και δεν λέει τίποτα για αυτή τη διαδρομή. Άνοιξε νέα σύνδεση στην υπηρεσία του συνεργάτη και ρώτησέ τους ποια πηγή είδαν, ή εκτέλεσε το packet-tracer input outside tcp 10.77.0.10 12345 203.0.113.20 443 detailed και διάβασε τα στάδια NAT και δρομολόγησης γραμμή προς γραμμή. Ένα traceroute από τον πελάτη είναι ασθενέστερος έλεγχος, γιατί δείχνει τη διαδρομή που συνέβη ήδη και όχι την πολιτική που την επέλεξε.
Μετά έλεγξε τι δεν πρέπει να αλλάξει. Ένας συνηθισμένος ιστότοπος πρέπει να βγαίνει ακόμα από την τοπική σύνδεση, και ένας ιδιωτικός πόρος στη λίστα της σήραγγας πρέπει να παραμένει προσβάσιμος. Μια αλλαγή που διορθώνει τον συνεργάτη και σπάει ένα από τα δύο είναι άλλο σφάλμα.
Η έκδοση που δουλεύει αυτού του σχεδίου είναι σύντομη: ένας host στο ACL split, άδεια hairpin, ένας κανόνας PAT περιορισμένος στον προορισμό. Όλα τα άλλα στην ιστορία είναι ο μύθος.