Τρίτη 29 Μαρτίου 2011

"Καταλαμβάνοντας" απενεργοποιημένους windows υπολογιστές μέσω PXE και WoL

Ας πούμε ότι είστε σε ένα περιβάλλον όπου υπάρχουν αρκετοί υπολογιστές οι οποίοι είναι κλειστοί. Ως αυθεντικό geek, θα θέλατε να τους χρησιμοποιήσετε όλους εσείς (distcc κανείς?) αλλά το πρόβλημα είναι ότι το μόνο λειτουργικό που έχουν εγκατεστημένο είναι τα windows και αυτοί που τους χρησιμοποιούν κανονικά θα θύμωναν ιδιαίτερα αν αλλάζατε με οποιοδήποτε τρόπο το δίσκο τους (π.χ., αν εγκαθιστούσατε Linux, έστω και dual-boot).

Ή έστω ότι έχετε εγκαταστήσει Linux σαν dual-boot σε όλους αλλά θέλετε να μην (χρειάζεται να) το γνωρίζει αυτό κανείς άλλος, δηλαδή το default boot selection να είναι τα windows αλλά παρόλα αυτά να μπορείτε να τους έχετε όλους στη διάθεσή σας χωρίς να χρειάζεται να σηκωθείτε από τη θέση σας.

Η λύση είναι να χρησιμοποιήσουμε μια σειρά από χαρακτηριστικά που έρχονται προεγκατεστημένα στα σύγχρονα desktop: Wake on LAN και PXE.


Η ιδέα είναι ότι θα ενεργοποιήσετε το Wake on LAN και το PXE σε όλους, θα καταγράψετε τα MAC τους και όταν θα θέλετε να τους χρησιμοποιήσετε θα κάνετε τα εξής:
  1. Disable του κανονικού dhcp server του δικτύου ώστε το dhcp να το εξυπηρετεί ο δικός σας υπολογιστής (προτείνω μέσω dnsmasq).
  2. O DHCP server θα προσφέρει πάλι το δικό σας μηχάνημα ως TFTP server για PXE.
  3. Ο TFTP server σας θα τους στέλνει το iPXE undionly image
  4. Το iPXE θα κατεβάζει ένα livecd (που έχετε φτιάξει εσείς) πάλι από τον υπολογιστή σας μέσω HTTP (ναι, μπορεί να το κάνει αυτό :) )
  5. Το livecd θα παίρνει IP μέσω πάλι του δικού σας DHCP server και θα κάνει τα απαραίτητα configuration changes (hostname κλπ) at boot time π.χ., μέσω puppet
  6. Ο cluster σας είναι έτοιμος, χωρίς να σηκωθείτε από την καρέκλα σας και χωρίς να πειραχτεί τίποτα από τις υπάρχουσες εγκαταστάσεις :)
Τα παραπάνω μπορούν να συγκεντρωθούν σε ένα script, ώστε κάθε φορά που θέλετε να ξεκινήσετε το cluster σας να τρέχετε απλά "sudo takeover-network".

Οι λεπτομέρειες είναι κάπως δύσκολες τεχνικά οπότε το project αυτό δεν είναι για όλους και δε θα επεκταθώ παραπάνω. Απλά ήθελα να μοιραστώ την ιδέα, για όσους έχουν καιρό να παίξουν με το σύγχρονο booting stack του Linux και δε γνωρίζουν ότι μπορεί πλέον να κάνει τέτοια πράγματα :)

Παντελής

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου