Οι προσαρμογείς host-only δημιουργούν ένα τοπικό εικονικό δίκτυο, και οι δρομολογημένες σήραγγες TUN μεταφέρουν πακέτα IP μεταξύ διευθύνσεων. Κανένα από τα δύο δεν είναι γέφυρα προς το άλλο, γι' αυτό μια λειτουργική ρύθμιση πρέπει να λέει ποιος προωθεί και σε ποιον ανήκει η διαδρομή επιστροφής. Αν κάνετε λάθος αυτές τις δύο αναθέσεις, ο φιλοξενούμενος απαντά στη σήραγγα με μια πηγή που ο πελάτης της σήραγγας δεν ζήτησε ποτέ. Ο σχεδιασμός παρακάτω κρατά και τα δύο προθέματα ξεχωριστά και κάνει τη διαδρομή επιστροφής ρητή.

Δύο δίκτυα, δύο προθέματα

Δώστε στην ομάδα της σήραγγας και στο δίκτυο host-only διαφορετικά προθέματα και μην χρησιμοποιείτε ποτέ το ένα για το άλλο. Σε αυτό το παράδειγμα η ομάδα VPN είναι 10.44.0.0/24 και το δίκτυο host-only είναι 192.168.99.0/24, με τον κεντρικό υπολογιστή στο 192.168.99.1 και έναν φιλοξενούμενο στο 192.168.99.20. Η ανάθεση του ίδιου προθέματος και σε συσκευή TUN και στον προσαρμογέα host-only δεν τα ενώνει. Δημιουργεί δύο αξιώσεις σε ένα εύρος διευθύνσεων, και ο πίνακας δρομολόγησης απαντά για όποια αξίωση έτυχε να κρατήσει.

Ο προσαρμογέας host-only υπάρχει στον κεντρικό υπολογιστή και μέσα στον φιλοξενούμενο, και δεν έχει από μόνος του διαδρομή έξω από το μηχάνημα. Οι συνδέσεις γέφυρας και NAT έχουν διαφορετική έκθεση, και η μετάβαση σε λειτουργία γέφυρας δεν είναι προϋπόθεση για να φτάσετε σε μία υπηρεσία του φιλοξενούμενου.

Ο κεντρικός υπολογιστής κρατά ήδη τη διαδρομή

Δείτε τι υπάρχει πριν προσθέσετε κάτι. Ο κεντρικός υπολογιστής έχει διεπαφή στο δίκτυο host-only και διαδρομή για αυτό το πρόθεμα, και τα δύο δημιουργήθηκαν όταν σηκώθηκε ο προσαρμογέας.

ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward

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

Σπρώξτε τη διαδρομή και μετά φιλτράρετε τι φτάνει

Ο διακομιστής μπορεί να παρέχει το πρόθεμα host-only σε πελάτες που δέχονται σπρωγμένες διαδρομές, που είναι ο ίδιος μηχανισμός με κάθε άλλο υποδίκτυο πίσω από τη σήραγγα.

push "route 192.168.99.0 255.255.255.0"
iptables -A FORWARD -i tun0 -o vboxnet0 -d 192.168.99.20 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o tun0 -s 192.168.99.20 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

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

Ο φιλοξενούμενος χρειάζεται τρόπο επιστροφής

Ένας φιλοξενούμενος που προσεγγίζεται από το 10.44.0.x πρέπει να στέλνει τις απαντήσεις του στη διεύθυνση host-only του κεντρικού υπολογιστή, ή ο κεντρικός υπολογιστής πρέπει να μεταφράζει την πηγή. Η λήψη διεύθυνσης από το DHCP του VirtualBox δεν λέει τίποτα για καμία από τις δύο ρυθμίσεις.

ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15

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

Μια συσκευή TUN μεταφέρει πακέτα IP, οπότε η προσθήκη προεπιλεγμένης πύλης μέσα σε έναν φιλοξενούμενο δεν μετατρέπει τη σήραγγα σε τμήμα Ethernet με τον προσαρμογέα host-only. Η γεφύρωση TAP είναι διαφορετικός σχεδιασμός με δική της υποστήριξη πελατών και ιδιοκτησία διευθύνσεων, και η ανάμειξη των δύο περιγραφών οδηγεί σε ρυθμίσεις που δεν συγκλίνουν ποτέ.

Επαληθεύστε και μετά κάντε το να αντέχει σε επανεκκίνηση

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

ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20

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

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