Το VM δημιουργήθηκε χωρίς προώθηση IP, εκτελεί ήδη το λογισμικό VPN και το ένστικτο λέει να ανακατασκευαστεί από το πρότυπο με τη σημαία ενεργή. Αυτή η ανακατασκευή είναι περιττή. Το Compute Engine εκθέτει το canIpForward ως ενημερώσιμη ιδιότητα και η τεκμηριωμένη διαδρομή ενημέρωσης την εφαρμόζει με refresh αντί για επανεκκίνηση. Αυτό που ελέγχει πραγματικά η σημαία είναι στενό: χωρίς αυτήν, η πλατφόρμα απορρίπτει πακέτα που φτάνουν στο instance αλλά δεν απευθύνονται στη δική του διεύθυνση. Μια πύλη που προωθεί την κίνηση άλλων μηχανημάτων κάνει ακριβώς αυτό, άρα η σημαία πρέπει να είναι ενεργή. Όλα μετά από αυτό είναι ρύθμιση του guest και δρομολόγηση, που η σημαία δεν αγγίζει.

Τι επιτρέπει η σημαία και τι όχι

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

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

Διαβάστε την τρέχουσα ιδιότητα

Ελέγξτε τη ρύθμιση πριν αλλάξετε οτιδήποτε, με describe μόνο για ανάγνωση στο προβλεπόμενο instance, έργο και ζώνη:

gcloud compute instances describe VM_NAME --project PROJECT_ID --zone ZONE --format='value(canIpForward)'

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

Ενημερώστε το υπάρχον instance

Η διαδικασία ενημέρωσης ιδιοτήτων instance της Google εξάγει τον τρέχοντα πόρο, τροποποιεί την ιδιότητα και υποβάλλει το αποτέλεσμα. Είναι διαφορετική ροή εργασίας από τη σημαία --can-ip-forward κατά τη δημιουργία, και είναι αυτή που λειτουργεί σε VM σε λειτουργία.

Εξάγετε πρώτα τον ορισμό σε τοπικό αρχείο και κρατήστε ένα αμετάβλητο αντίγραφο για σύγκριση:

gcloud compute instances export VM_NAME --project PROJECT_ID --zone ZONE --destination=instance.yaml

Σε αυτό το εξαγόμενο αρχείο, ορίστε την ιδιότητα και μην αλλάξετε τίποτα άλλο:

canIpForward: true

Διατηρήστε ολόκληρο τον πόρο, μαζί με το αποτύπωμά του. Το να αντικαταστήσετε το αρχείο με έγγραφο YAML μίας γραμμής ή να ομαδοποιήσετε άσχετες αλλαγές τύπου μηχανής, δίσκου ή διεπαφής στην ίδια υποβολή είναι ο τρόπος με τον οποίο μια αλλαγή ιδιότητας γίνεται διακοπή.

Ζητήστε από τον μηχανισμό ενημέρωσης να επικυρώσει το αρχείο και να αναφέρει τι θα απαιτούσε, πριν επιτραπεί οποιαδήποτε πραγματική αλλαγή:

gcloud compute instances update-from-file VM_NAME --project PROJECT_ID --zone ZONE --source=instance.yaml --most-disruptive-allowed-action=NO_EFFECT

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

Εφαρμόστε το ελεγμένο αρχείο με το όριο refresh:

gcloud compute instances update-from-file VM_NAME --project PROJECT_ID --zone ZONE --source=instance.yaml --most-disruptive-allowed-action=REFRESH

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

Ο guest πρέπει ακόμη να δρομολογήσει το πακέτο

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

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

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

Σε πύλη Linux, η προώθηση στον πυρήνα είναι μέρος της ρύθμισης του guest. Μια συσκευή pfSense έχει το δικό της ισοδύναμο, και η αντιγραφή εντολής sysctl του Linux σε αυτήν δεν είναι το αντίστοιχο βήμα.

Επαληθεύστε από τον πελάτη που χρειάζεται πρόσβαση

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

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

Σειρά εργασίας: διαβάστε την ιδιότητα, εξάγετε και επεξεργαστείτε μία γραμμή, επικυρώστε με NO_EFFECT, εφαρμόστε με REFRESH, επιβεβαιώστε ότι ο guest προωθεί, και μετά δοκιμάστε από πελάτη.

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