Το Wake-on-LAN μέσω VPN σταμάτησε να λειτουργεί; Διορθώστε την εγγραφή ARP
Τα μαγικά πακέτα περνούν τη σήραγγα, αλλά ο δρομολογητής τα πετάει όταν λήξει η εγγραφή ARP. Συγκρίνετε τρεις διαδρομές παράδοσης και καρφιτσώστε μόνιμα τη διεύθυνση MAC.
Στείλτε ένα πακέτο αφύπνισης αμέσως μετά το τερματικό και ο υπολογιστής επιστρέφει· η ίδια εντολή το επόμενο πρωί δεν κάνει τίποτα. Τίποτα στη διαμόρφωση VPN δεν άλλαξε, και η προώθηση θύρας εξακολουθεί να δείχνει στη σωστή διεύθυνση. Η διαφορά είναι ο χρόνος: ο πίνακας γειτόνων του δρομολογητή έχει ξεχάσει τη μηχανή που κοιμάται, οπότε δεν έχει διεύθυνση MAC για να βάλει στο πλαίσιο. Αυτή η λήξη, όχι η σήραγγα, εξηγεί τις περισσότερες αποτυχίες Wake-on-LAN μέσω VPN.
Η πρώτη αφύπνιση λειτουργεί και η επόμενη όχι
Ο δρομολογητής προωθεί ένα πλαίσιο σε ιδιωτική διεύθυνση αναζητώντας τον προορισμό στον πίνακα γειτόνων του. Όσο η μηχανή λειτουργεί απαντά στο ARP, οπότε η αντιστοίχιση μένει φρέσκια. Μόλις σβήσει, τίποτα δεν απαντά, η εγγραφή λήγει μετά από λίγα λεπτά και τα επόμενα πλαίσια προς αυτή τη διεύθυνση απορρίπτονται, αν και η IP και η προώθηση θύρας παραμένουν έγκυρες.
Το μοτίβο σας λέει ποια αποτυχία έχετε. Μια αφύπνιση που δεν λειτουργεί ποτέ δείχνει την παράδοση: λάθος θύρα, λάθος προορισμός ή ένα τείχος προστασίας που πετάει το πακέτο πριν φτάσει στο LAN. Μια αφύπνιση που λειτουργεί μία φορά και μετά αποτυγχάνει για ώρες δείχνει την εγγραφή γείτονα. Μια αφύπνιση που λειτουργεί μέχρι να αλλάξει η μίσθωση DHCP δείχνει τη διευθυνσιοδότηση, που τη διορθώνει μια δέσμευση.
Επιβεβαιώστε ότι η διεύθυνση είναι σταθερή πριν αγγίξετε το ARP. Αν η μηχανή που κοιμάται πάρει νέα διεύθυνση όταν λήξει η μίσθωση, μια καρφιτσωμένη εγγραφή γείτονα για την παλιά διεύθυνση θα είναι μόνιμη και άχρηστη ταυτόχρονα. Ρυθμίστε πρώτα δέσμευση DHCP ώστε η διεύθυνση να επιβιώνει από επανεκκινήσεις.
Τι χρειάζεται το μαγικό πακέτο από το δίκτυο
Το ωφέλιμο φορτίο είναι απλό: 102 byte από έξι byte 0xFF ακολουθούμενα από τη διεύθυνση MAC προορισμού δεκαέξι φορές, συνήθως προς τη θύρα UDP 9. Σε ένα επίπεδο LAN βγαίνει ως μετάδοση, κάθε θύρα το λαμβάνει και η σβηστή κάρτα δικτύου αναγνωρίζει τη δική της διεύθυνση.
Μέσω VPN το πακέτο φτάνει στον δρομολογητή ως unicast σε ιδιωτική διεύθυνση ή ως μετάδοση με κατεύθυνση στο υποδίκτυο. Στην περίπτωση unicast ο δρομολογητής πρέπει να μετατρέψει τον προορισμό σε διεύθυνση MAC πριν βάλει το πλαίσιο στο LAN, και ακριβώς αυτή η μετατροπή αποτυγχάνει όσο ο κεντρικός υπολογιστής κοιμάται.
Ορισμένα εργαλεία στέλνουν στη θύρα 7 αντί για 9, και ορισμένες συσκευές μπλοκάρουν την κατευθυνόμενη μετάδοση εξ ορισμού. Αυτά είναι αποτυχίες παράδοσης, όχι ARP, οπότε ελέγξτε τον προορισμό και τη θύρα πριν αλλάξετε τον πίνακα γειτόνων.
Τρεις διαδρομές προς έναν κοιμισμένο κεντρικό υπολογιστή
Έχετε τρεις πρακτικούς τρόπους να βάλετε το πλαίσιο στο LAN, και η σωστή επιλογή εξαρτάται από το τι ελέγχετε.
| Method | What it needs | Where it breaks |
|---|---|---|
| Subnet-directed broadcast | A wake tool that accepts a broadcast address and a router that forwards it | Broadcast filtering, or a tool that only takes a MAC |
| Helper on the LAN | An always-on host such as the VPN server | No suitable host, or the host cannot reach the target VLAN |
| Permanent neighbour entry | Router shell access and the target MAC | NIC replacement or address change |
Επιλέξτε τον βοηθητικό κεντρικό υπολογιστή όταν υπάρχει, γιατί μεταδίδει στον σύνδεσμο και δεν χρειάζεται εξαίρεση στον δρομολογητή. Επιλέξτε κατευθυνόμενη μετάδοση όταν ο δρομολογητής την επιτρέπει ήδη και το εργαλείο αφύπνισης υποστηρίζει διεύθυνση. Επιλέξτε τη στατική εγγραφή όταν κανένα από τα δύο δεν είναι διαθέσιμο και μπορείτε να εκτελέσετε εντολή στον δρομολογητή.
Αυτά δεν αλληλοαποκλείονται. Μια μόνιμη εγγραφή επιτρέπει επίσης στη διαδρομή unicast να επιβιώσει από τον ύπνο, που είναι χρήσιμο όταν ο πελάτης VPN μπορεί να στέλνει μόνο σε συγκεκριμένη διεύθυνση.
Κάντε την εγγραφή γείτονα μόνιμη
Σε δρομολογητή με κέλυφος Linux, μία εντολή καρφιτσώνει την αντιστοίχιση. Οι τιμές εδώ ανήκουν σε παράδειγμα LAN και πρέπει να αντικατασταθούν με τις δικές σας:
ip neigh replace 192.168.50.23 lladdr 3c:7c:3f:12:9a:4e dev br0 nud permanent
ip neigh show dev br0 | grep 192.168.50.23Η κατάσταση nud permanent κρατά την εγγραφή πέρα από τα όρια χρόνου ARP και τη χρησιμοποιεί για προώθηση όσο η μηχανή είναι σβηστή. Η δεύτερη εντολή αποδεικνύει ότι η εγγραφή υπάρχει και δείχνει τη διεπαφή στην οποία ανήκει, κάτι που μετρά σε δρομολογητές με ξεχωριστή γέφυρα επισκεπτών ή VLAN.
Κάντε την να επιβιώνει από επανεκκίνηση με όποιο άγκιστρο προσφέρει το firmware: ένα σενάριο στο /jffs/scripts στο Asuswrt-Merlin, μια μονάδα oneshot του systemd σε διακομιστή Linux ως πύλη, ένα Neighbor= stanza στο systemd-networkd ή μια εγγραφή στο /etc/ethers που διαβάζει ο τοπικός εξοπλισμός. Μια εντολή που πληκτρολογείται σε κέλυφος εξαφανίζεται στην επόμενη επανεκκίνηση, και αυτός είναι ο συνηθέστερος λόγος που μια διόρθωση που δουλεύει φαίνεται να σταματά.
Δοκιμάστε από έξω και μάθετε πότε να τη αφαιρέσετε
Βάλτε τη μηχανή σε ύπνο και περιμένετε τουλάχιστον δέκα λεπτά, αρκετά για να λήξει κάθε δυναμική εγγραφή. Έπειτα στείλτε το αίτημα αφύπνισης από τον πελάτη VPN και παρατηρήστε και τις δύο πλευρές του δρομολογητή:
tcpdump -ni tun0 udp port 9
tcpdump -ni br0 ether proto 0x0806 or udp port 9Η πρώτη καταγραφή αποδεικνύει ότι το πακέτο έφτασε από τη σήραγγα· η δεύτερη ότι ο δρομολογητής έβαλε πλαίσιο στο LAN. Ένα έγκυρο μαγικό πακέτο εμφανίζεται ως 102 byte με επαναλαμβανόμενη MAC, οπότε ελέγξτε το μήκος καθώς και τον προορισμό. Αν το πλαίσιο φύγει από τη γέφυρα LAN και η μηχανή μείνει σβηστή, το υπόλοιπο πρόβλημα είναι στη συσκευή: γρήγορη εκκίνηση, βαθύς ύπνος ή ρύθμιση BIOS που κόβει την τροφοδοσία στην κάρτα δικτύου.
Αφαιρέστε την εγγραφή όταν αλλάξει η κάρτα δικτύου και ενημερώστε την όταν μετακινήσετε τη μηχανή σε άλλη διεύθυνση. Μια μόνιμη αντιστοίχιση είναι σκόπιμη εξαίρεση, και μια εξαίρεση που κανείς δεν θυμάται είναι πώς ένα μελλοντικό φορητό καταλήγει να λαμβάνει πλαίσια που προορίζονταν για ένα συνταξιοδοτημένο σταθερό.