Inhaltsverzeichnis

linux4education 11. - 13. Juli 2011 - Fortgeschrittene

Virtualisierung

= in unserem Fall: Betreiben von mehreren virtuellen Betriebssystemen (Gast) unter einem physikalischen System (Host).
Man unterscheidet:

Gängige Virtualisierungslösungen sind:

Installation von server4education und desktop4education

Anbindung des server4education an das Internet

Zuvor, mit d4e2010 und s4e2010: http://d4e.at/support/version-2010/netzwerk/internetverbindung-ueber-server4education/
Wird nun in das Yast Modul für den s4e2011 integriert sein.
Voraussetzungen:

Benutzerverwaltung am server4education

Anbindung von desktop4education am server4education

Anbindung von Windows-Clients am server4education

Drucken mit CUPS

Benutzerprofil ändern

Deployment/Klonen

Datensicherung

rsync

rsync -av -P --delete /quelle/ /ziel/.
rsync -av -P --delete -e ssh root@192.168.100.1:/home/ /home/.
rsync -av -P --delete /home/ -e ssh root@192.168.100.1:/home/.

Vorsicht bei / und /. !!!
Quelle am besten immer mit / abschließen
Ziel am besten immer mit /. abschließen
Zielordner muss aber hierbei vorhanden sein!

-a              archive mode
-v              verbose mode
-P              zeigt den Fortschritt während der Synchronisation an
--delete        löscht Dateien/Ordner auch im Zielordner, falls sie im Quellordner gelöscht worden sind

Wichtige Serverdaten speichern

Backupskripte am besten in einen extra Ordner anlegen: /backup
Hauptsicherung: Konfigurationsdaten, Backupskripte selbst, Cronjob selbst
Login ohne Passwort einrichten für ssh: SSH-Schlüssel - Anmeldung ohne Passwort
Cronjob anlegen:

crontab -e
MAILTO=""
# Minute Stunde Tag(Monat) Monat Tag(Woche) Kommando
 
# Sicherung auf Newton
#10 2 * * * /usr/bin/rsync -a -e ssh root@10.67.0.254:/daten/ /daten > /dev/null 2>&1
 
# Sicherung der MySQL Datenbanken
45 0 * * * /backup/mysql.sh > /dev/null 2>&1
# Sicherung der openLDAP Datenbank
45 0 * * * /backup/ldap.sh > /dev/null 2>&1
# Sicherung der wichtigsten Konfigurationsdaten
45 0 * * * /backup/run.sh > /dev/null 2>&1
 
# Beispiele:
# Jeden Tag um zehn Minuten nach Mitternacht:
#10 0 * * * /pfad/zum/programm
 
# Jeden Mittwoch um zehn Minuten nach Mitternacht:
#10 0 * * 3 /pfad/zum/programm
 
# Jeden Wochentag um zehn Minuten 13,14 und 15Uhr:
#10 13-15 * * 1-5 /pfad/zum/programm
 
# Jedes Jahr zu Silvester:
#0 0 31 12 * /pfad/zum/programm
/backup/run.sh
#!/bin/bash
 
HOST="10.67.0.2"
DATUM=$(date "+%d%m%y")
SERVER="einstein"
 
rsync -a /backup/ -e ssh root@$HOST:/daten/sicherung/$SERVER/backup/
rsync -a --delete /etc/ -e ssh root@$HOST:/daten/sicherung/$SERVER/etc/
rsync -a --delete /root/ -e ssh root@$HOST:/daten/sicherung/$SERVER/root/
rsync -a --delete /var/spool/cron/ -e ssh root@$HOST:/daten/sicherung/$SERVER/var/spool/cron/
rsync -a --delete /var/lib/named/*.hosts -e ssh root@$HOST:/daten/sicherung/$SERVER/var/lib/named/
rsync -a --delete /var/lib/named/*.rev -e ssh root@$HOST:/daten/sicherung/$SERVER/var/lib/named/
rsync -a --delete /var/lib/named/*.zone -e ssh root@$HOST:/daten/sicherung/$SERVER/var/lib/named/
 
sync

Sichern von MySQL Datenbanken

/backup/mysql.sh
#!/bin/bash
 
HOST="10.67.0.2"
DATUM=$(date "+%d%m%y")
USER="root"
PASSWORD="<passwort!!!>"
 
mysqlcheck --user=$USER --password=$PASSWORD --all-databases --auto-repair > /backup/mysql-einstein/mysql_status_$DATUM
mysqldump --user=$USER --password=$PASSWORD --all-databases --opt -l --force | gzip > /backup/mysql-einstein/mysql_$DATUM.sql.gz
 
databases=$(/usr/bin/mysql --user=$USER --password=$PASSWORD -e 'SHOW DATABASES;' | grep -Ev '(Database|information_schema)')
for db in $databases; do
 /usr/bin/mysqldump -l --opt --hex-blob --force --user=$USER --password=$PASSWORD $db | gzip > /backup/mysql-einstein/db_$db-$DATUM.sql.gz
done
 
rsync -a /backup/ -e ssh root@$HOST:/daten/sicherung/einstein/backup/
rm /backup/mysql-einstein/*
 
sync

openLDAP sichern

/backup/ldap.sh
#!/bin/bash
 
HOST="10.67.0.2"
DATUM=$(date "+%d%m%y")
SERVER="kepler"
 
/usr/sbin/slapcat -l /backup/kepler_$DATUM.ldif
 
rsync -a /backup/ -e ssh root@$HOST:/daten/sicherung/$SERVER/backup/
rm /backup/kepler_*.ldif
 
sync

PXE - Netzwerkstart

=ist ein Verfahren, um Computern einen netzwerkbasierten Bootvorgang zu ermöglichen. Der Computer ist dadurch von Massenspeicher und darauf installiertem Betriebssystem unabhängig.
Muss im BIOS aktiviert sein, sollte aber jeder PC seit dem Jahr 1998(?) können. Oft sehr kreative Namensgebung der Hersteller.
Für den Betrieb sind grundsätzlich 3 Komponenten notwendig:

/etc/dhcpd.conf
authoritative;
ddns-update-style none;
 
#eth2 unterrichtsnetz
 
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.60 192.168.100.200;
  default-lease-time 3600;
  max-lease-time 172800;
  option broadcast-address 192.168.100.255;
  option routers 192.168.100.254;
  option subnet-mask 255.255.255.0;
  option netbios-name-servers 193.170.221.1;
  option domain-name-servers 8.8.8.8, 193.170.221.1;
  option ntp-servers 193.170.221.1;
  # pxe 
  filename "pxelinux.0";
  next-server 192.168.100.4;
}
/etc/sysconfig/atftpd
ATFTPD_OPTIONS="--daemon "
ATFTPD_USE_INETD="no"
ATFTPD_DIRECTORY="/tftpboot"
ATFTPD_BIND_ADDRESSES=""
SYSLINUX
    dient dem Starten von FAT-Dateisystemen (wie Disketten und USB-Speichergeräten).
ISOLINUX
    dient dem Starten von ISO 9660-Dateisystemen von CD-ROMs.
PXELINUX
    dient dem Starten von einem Netzwerk-Server mittels der Preboot Execution Environment (PXE).
EXTLINUX
    dient dem Starten von Linux' ext2-/ext3-Dateisystemen.
MEMDISK
    dient dem Starten älterer Betriebssysteme wie MS-DOS von diesen Medien. 
/tftpboot/pxelinux.cfg/default
DEFAULT menu.c32
PROMPT 0
 
MENU TITLE Willkommen!
 
LABEL harddisk
 MENU LABEL Von Festplatte booten
 localboot 0x80
 
LABEL openSUSE 11.3 32-bit
 MENU LABEL openSUSE 11.3 32-bit
 KERNEL /suse113/i586/boot/i386/loader/linux ramdisk_size=65536
 APPEND initrd=/suse113/i586/boot/i386/loader/initrd UseDHCP=1 InstMode=nfs Install=nfs://192.168.100.4/daten/pxe/suse113/i586 vga=0x317 splash=silent insecure=1 Language=de_DE showopts
 
LABEL openSUSE 11.3 64-bit
 MENU LABEL openSUSE 11.3 64-bit
 KERNEL /suse113/x86_64/boot/x86_64/loader/linux ramdisk_size=65536
 APPEND initrd=/suse113/x86_64/boot/x86_64/loader/initrd UseDHCP=1 InstMode=nfs Install=nfs://192.168.100.4/daten/pxe/suse113/x86_64 vga=0x317 splash=silent insecure=1 Language=de_DE showopts
 
LABEL openSUSE 11.4 32-bit
 MENU LABEL openSUSE 11.4 32-bit
 KERNEL /suse114/i586/boot/i386/loader/linux ramdisk_size=65536
 APPEND initrd=/suse114/i586/boot/i386/loader/initrd UseDHCP=1 InstMode=nfs Install=nfs://192.168.100.4/daten/pxe/suse114/i586 vga=0x317 splash=silent insecure=1 Language=de_DE showopts
 
LABEL openSUSE 11.4 64-bit
 MENU LABEL openSUSE 11.4 64-bit
 KERNEL /suse114/x86_64/boot/x86_64/loader/linux ramdisk_size=65536
 APPEND initrd=/suse114/x86_64/boot/x86_64/loader/initrd UseDHCP=1 InstMode=nfs Install=nfs://192.168.100.4/daten/pxe/suse114/x86_64 vga=0x317 splash=silent insecure=1 Language=de_DE showopts
 
LABEL s4e 32-bit
 MENU LABEL server4education 32-bit installieren
 KERNEL /d4e2011/iso/i586/boot/i386/loader/linux ramdisk_size=65536
 APPEND initrd=/d4e2011/iso/i586/boot/i386/loader/initrd AutoYaST=nfs://192.168.100.4/daten/d4e2011/pxe/i586/s4e.xml UseDHCP=1 InstMode=nfs Install=nfs://192.168.100.4/daten/d4e2011/iso/i586 vga=0x317 splash=silent insecure=1 Language=de_DE showopts
 
LABEL d4e 32-bit
 MENU LABEL desktop4education 32-bit installieren
 KERNEL /d4e2011/iso/i586/boot/i386/loader/linux ramdisk_size=65536
 APPEND initrd=/d4e2011/iso/i586/boot/i386/loader/initrd AutoYaST=nfs://192.168.100.4/daten/d4e2011/pxe/i586/d4e.xml UseDHCP=1 InstMode=nfs Install=nfs://192.168.100.4/daten/d4e2011/iso/i586 vga=0x317 splash=silent insecure=1 Language=de_DE showopts
 
LABEL s4e 64-bit
 MENU LABEL server4education 64-bit installieren
 KERNEL /d4e2011/iso/x86_64/boot/x86_64/loader/linux ramdisk_size=65536
 APPEND initrd=/d4e2011/iso/x86_64/boot/x86_64/loader/initrd AutoYaST=nfs://192.168.100.4/daten/d4e2011/pxe/x86_64/s4e.xml UseDHCP=1 InstMode=nfs Install=nfs://192.168.100.4/daten/d4e2011/iso/x86_64 vga=0x317 splash=silent insecure=1 Language=de_DE showopts
 
LABEL d4e 64-bit
 MENU LABEL desktop4education 64-bit installieren
 KERNEL /d4e2011/iso/x86_64/boot/x86_64/loader/linux ramdisk_size=65536
 APPEND initrd=/d4e2011/iso/x86_64/boot/x86_64/loader/initrd AutoYaST=nfs://192.168.100.4/daten/d4e2011/pxe/x86_64/d4e.xml UseDHCP=1 InstMode=nfs Install=nfs://192.168.100.4/daten/d4e2011/iso/x86_64 vga=0x317 splash=silent insecure=1 Language=de_DE showopts
 
LABEL g4l
 MENU LABEL ghost4linux
 KERNEL /klonen/g4l/bz37 ramdisk_size=65536 root=/dev/ram0
 APPEND initrd=/klonen/g4l/ramdisk.lzma
 
LABEL g4u
 MENU LABEL ghost4unix
 kernel memdisk
 Append iso initrd=/klonen/g4u/g4u.iso raw
 
LABEL rescuecd_std
  MENU LABEL SystemRescueCd
  LINUX /sysrescd/isolinux/rescuecd
  INITRD /sysrescd/isolinux/initram.igz setkmap=de nfsboot=192.168.100.4:/daten/pxe/sysrescd
  APPEND scandelay=1
 
LABEL udpcast
 MENU LABEL Udpcast
 KERNEL /klonen/udpcast/LINUX ramdisk_size=65536 auto=yes lang=DE kbmap=DE dhcp=yes enableDiskmodule=yes netmodule=tg3 netmodparm= port=9000 diskmodule=ata_piix diskmodparm= udpcparam= disk=/dev/sda umode=rcv compr=none
 APPEND initrd=/klonen/udpcast/INITRD
 
LABEL GParted Live
 MENU LABEL GParted Live
 KERNEL /gparted/live/vmlinuz1
 APPEND initrd=/gparted/live/initrd1.img boot=live noswap noprompt config union=aufs nosplash vga=788 netboot=nfs nfsroot=192.168.100.4:/daten/pxe/gparted --
 
LABEL memtest
 MENU LABEL MEMTEST
 KERNEL /memtest
schroedinger:/tftpboot # la
insgesamt 309
drwxr-xr-x  5 root root    384 10. Jul 16:32 .
drwxr-xr-x 26 root root    632 10. Jul 16:19 ..
lrwxrwxrwx  1 root root     14 29. Apr 18:52 d4e2011 -> /daten/d4e2011
lrwxrwxrwx  1 root root     18 29. Apr 18:52 gparted -> /daten/pxe/gparted
drwxr-xr-x  5 root root    120  3. Mär 09:52 klonen
drwxr-xr-x  2 root root     48  3. Mär 09:52 knoppix
-rw-r--r--  1 root root  25084  5. Jul 2010  memdisk
-r--r--r--  1 root root 165080 23. Feb 00:00 memtest
-rw-r--r--  1 root root  52148  1. Okt 2010  menu.c32
-r--r--r--  1 root root  41212  7. Nov 2010  pxeboot_ia32.bin
-rw-r--r--  1 root root  16838  1. Okt 2010  pxelinux.0
drwxr-xr-x  2 root root     72 17. Jul 19:36 pxelinux.cfg
lrwxrwxrwx  1 root root     18 29. Apr 18:52 suse113 -> /daten/pxe/suse113
lrwxrwxrwx  1 root root     18 29. Apr 18:52 suse114 -> /daten/pxe/suse114
lrwxrwxrwx  1 root root     19 29. Apr 18:52 sysrescd -> /daten/pxe/sysrescd
schroedinger:/tftpboot #
/etc/exports
/daten/d4e2011 192.168.100.*(crossmnt,async,ro,root_squash,no_subtree_check)
/daten/pxe 192.168.100.*(crossmnt,async,ro,no_root_squash,no_subtree_check)

Softwareupdate am server4education und desktop4education

#!/bin/bash
zypper ar -f -C http://ftp.halifax.rwth-aachen.de/opensuse/repositories/openSUSE:/11.4:/Contrib/standard/ contrib
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/Education/openSUSE_11.4/ edu
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/KDE:/Extra/openSUSE_11.4/ extra
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/KDE:/Release:/46/openSUSE_11.4/ kde
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/network:/ldap/openSUSE_11.4/ ldap
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/X11:/lxde/openSUSE_11.4/ lxde
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/mozilla/openSUSE_11.4/ mozilla
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/distribution/11.4/repo/non-oss/ non-oss
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/distribution/11.4/repo/oss/ oss
zypper ar -f -C http://packman.inode.at/suse/11.4 packman
zypper ar -f -C http://ftp.halifax.rwth-aachen.de/opensuse/repositories/devel:/languages:/perl/openSUSE_11.4/ perl
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/server:/php:/applications/openSUSE_11.4/ php
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/Printing/openSUSE_11.4/ pykota
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/network:/samba:/STABLE/openSUSE_11.4/ samba
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/science/openSUSE_11.4/ science
zypper ar -f -C http://ftp.halifax.rwth-aachen.de/opensuse/repositories/openSUSE:/Tumbleweed/standard/ tumbleweed
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/update/11.4/ update
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/home:/openLHAG:/branches:/Virtualization/openSUSE_Tumbleweed/ virt_tumbleweed
zypper ar -f -C http://download.videolan.org/pub/videolan/vlc/SuSE/11.4 vlc
zypper ar -f -C http://ftp5.gwdg.de/pub/opensuse/repositories/X11:/XOrg/openSUSE_11.4/ x11

NAT/Bridge

NAT

Clientrechner hinter einem Router/Proxy
Von außen nur durch Router/Proxy aus sichtbar: Verbindungen von Clients erscheinen außerhalb alle als 1 Verbindung des Routers
Um Zugriff von außen auf einen Client intern zu erhalten: Port Weiterleitung:

/etc/init.d/bridge
#!/bin/sh
### BEGIN INIT INFO
# Provides:          bridge 
# Required-Start:    network
# Should-Start:     
# Required-Stop:     
# Should-Stop:      
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: bridge
# Description:       Start bridge
### END INIT INFO
 
. /etc/rc.status
 
rc_reset
 
case "$1" in
    start)
        echo -n "Starting bridge "
 
#################################
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
 
echo 1 > /proc/sys/net/ipv4/ip_forward
 
INTDEV="br1"
EXTDEV="eth0"
INTERN=10.0.0.10
EXTERN=193.170.221.4
 
## NAT-Regeln ##
# Zugriff nach außen
iptables -t nat -A POSTROUTING -o $EXTDEV -s $INTERN -j SNAT --to-source $EXTERN
# Zugriff von außen
iptables -t nat -A PREROUTING -i $EXTDEV -p tcp -d $EXTERN -m multiport --dport 25,53,80,110,443,8080 -j DNAT --to-destination $INTERN
 
## Firewall-Regeln ==
# Akzeptiere alle aufgebauten Verbindungen
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
 
#################################
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down bridge "
 
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
 
#################################
 
        rc_status -v
        ;;
    restart)
        $0 stop
        $0 start
 
        rc_status
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
        ;;
esac
rc_exit