Προτεινόμενη ρύθμιση cisco router για εκκίνηση thin clients

Ξεκίνησε από alkisg, 11 Οκτ 2008, 09:25:35 ΠΜ

« προηγούμενο - επόμενο »

alkisg

Με τις μέχρι τώρα οδηγίες του ΕΑΙΤΥ, για να στήσουμε ένα εργαστήριο thin clients θα έπρεπε να εγκαταστήσουμε dhcp server στον ltsp server μας, ώστε να δίνει ip διευθύνσεις στους thin clients. Επειδή όμως ο router του εργαστηρίου είναι και (δεύτερος) dhcp server, δημιουργούνται προβλήματα, π.χ. μπορεί να χρειάζονται δύο κάρτες δικτύου στον ltsp server, δύο switches και αλλαγή καλωδίων κάθε φορά που θέλουμε να εκκινήσουμε σε Windows ή Linux τους thin clients.

Μπορούμε πολύ εύκολα να αποφύγουμε τα παραπάνω προβλήματα ζητώντας από το helpdesk του ΠΣΔ να προσθέσει δύο οδηγίες στον dhcp server του router μας. Έτσι θα υπάρχει μόνο ένας dhcp server στο εργαστήριο και δεν θα χρειάζεται καμία αλλαγή στην τοπολογία του δικτύου, ούτε δύο κάρτες δικτύου στον ltsp server.

Στήνοντας χθες ένα νέο εργαστήριο LTSP ζήτησα από το helpdesk να προσθέσει τις συγκεκριμένες οδηγίες. Ο τεχνικός ήταν πολύ εξυπηρετικός, όχι μόνο τις πρόσθεσε, αλλά μου είπε και τις συγκεκριμένες εντολές που χρειάζονται για cisco routers.

Εν συντομία λοιπόν η προτεινόμενη μέθοδος εγκατάστασης thin clients:

1. Εγκαθιστούμε κανονικό Ubuntu (όχι server edition) στον server και του δίνουμε IP 10.x.x.10, όπου το x.x είναι συγκεκριμένο για κάθε σχολείο και το έχει αναθέσει το ΠΣΔ, αν δεν το ξέρετε ρωτήστε τους.
Αν έχετε κάποιον Windows Server σ' αυτήν την IP, τότε όπου γράφω για 10.x.x.10 αντικαταστήστε το με 10.x.x.11.

2. Εγκαθιστούμε το πακέτο ltsp-server (χωρίς dhcp server) αντί του ltsp-server-standalone (με dhcp server) και στη συνέχεια δίνουμε
sudo ltsp-build-client --prompt-rootpass --late-packages language-pack-gnome-el

3. Παίρνουμε τηλέφωνο στο helpdesk (801 11 801 81) και τους λέμε να κάνουν login στον router μας και να εκτελέσουν τις παρακάτω εντολές. Ο router πρέπει απαραίτητα να είναι cisco, το helpdesk δεν υποστηρίζει άλλους routers:
conf t
ip dhcp pool lan
bootfile /ltsp/i386/pxelinux.0
option 17 ascii "/opt/ltsp/i386"
next-server 10.x.x.10
exit


Τέλος, έτοιμο το ltsp εργαστήριο, μένει απλά να προσαρμόσετε τον ltsp server στις ανάγκες σας (π.χ. προσθήκη προγραμμάτων από τον package manager).

Προαιρετικά μας δίνεται και η δυνατότητα να χειριζόμαστε τον server μας από απόσταση (από το σπίτι). Κάθε σχολείο έχει 4 εξωτερικές IP, μία αντιστοιχεί στον router (10.x.x.1) και οι υπόλοιπες 3 σε τυχόν servers με IP 10.x.x.10, 10.x.x.11 και 10.x.x.12. Ζητάμε λοιπόν από το ΠΣΔ να μας πει την εξωτερική IP για τον server 10.x.x.10.
Στη συνέχεια από το μενού Σύστημα -> Προτιμήσεις -> Απομακρυσμένη επιφάνεια εργασίας στον ltsp server ενεργοποιούμε την απομακρυσμένη διαχείριση, ξετσεκάρουμε την ερώτηση για επιβεβαίωση και τσεκάρουμε την απαίτηση για κωδικό πρόσβασης.
Εν τέλει από το σπίτι απλά κάνουμε VNC στη συγκεκριμένη IP (αν έχουμε Windows), ή Εφαρμογές -> Διαδίκτυο -> Σύνδεση απομακρυσμένης επιφάνειας εργασίας αν έχουμε Linux.

alkisg

Και για όσους δεν έχουμε cisco router, επισυνάπτω μια τροποποιημένη έκδοση του αρχείου εκκίνησης gpxe.krn.
Δηλαδή ακολουθείτε τα βήματα που αναγράφονται στο Disk images για εκκίνηση από δισκέτα, CD, σκληρό ή από το δίκτυο, αντικαθιστάτε το gpxe.krn με το συνημμένο και υποτίθεται ότι θα παίζουν όλα σωστά με τον σχολικό router και χωρίς δεύτερο dhcp server.

Τεχνικές λεπτομέρειες:
Με αυτήν την έκδοση του gpxe.krn οι clients θα παίρνουν IP από τον router, αλλά επειδή δεν θα περιλαμβάνεται η οδηγία filename, έχω αλλάξει τον κώδικα ώστε να γίνεται "/ltsp/i386/pxelinux.0" (δηλαδή η ρύθμιση που χρειάζεται για LTSP).
Επίσης, η οδηγία next-server (=tftp server) που πάλι είναι αναγκαία διορθώνεται αυτόματα ώστε να "λήγει" σε .10 και να δείχνει τον LTSP server (x.x.x.10).
Εάν ο router δίνει οδηγία filename, τότε το συνημμένο gpxe.krn δεν πειράζει τίποτα (λειτουργεί δηλαδή σαν το αυθεντικό), οπότε μπορεί να χρησιμοποιηθεί ακόμα κι αν έχουμε cisco routers.

Ο κώδικας που προστέθηκε (στο αρχείο autoboot.c και ακριβώς πριν τη γραμμή /* Try to download and boot whatever we are given as a filename */) ήταν:
Κώδικας: C
//alkisg - start
//settings = ip, netmask, gateway, mac, dns, next-server, keep-san, hostname,
//filename, root-path, username, password, priority, initiator-iqn, serial
//reverse-username, reverse-password, dhcp-server, uuid, manufacturer, product
	fetch_string_setting ( NULL, &filename_setting, buf, sizeof ( buf ) );
	if ( !buf[0] ) {
		printf( "alkisg: filename was empty, forcing to \"/ltsp/i386/pxelinux.0\"\n" );
		storef_named_setting( "filename", "/ltsp/i386/pxelinux.0" );
		fetch_ipv4_setting ( NULL, &next_server_setting, &next_server );
		printf( "alkisg: changing next-server from \"%s\"", inet_ntoa ( next_server ) );
		fetch_ipv4_setting ( NULL, &ip_setting, &next_server );
		next_server.s_addr &= 0x00ffffff;
		next_server.s_addr |= 0x0a000000;
		printf( " to \"%s\"\n", inet_ntoa ( next_server ) );
		storef_named_setting( "next-server", inet_ntoa ( next_server ) );
	}
//alkisg - end