Rootserver: Unterschied zwischen den Versionen

K (→‎Zuordnung: spaces)
 
(49 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt)
Zeile 13: Zeile 13:
 
* Server mit Versand: 370 Euro
 
* Server mit Versand: 370 Euro
 
* Festplatten: 260 Euro
 
* Festplatten: 260 Euro
* Kosten pro Monat bei durchschnittlicher Leistungsaufnahme von 250W: 60 Euro
+
* Kosten pro Monat bei durchschnittlicher Leistungsaufnahme von 250W: 60 Euro (1HE=10,- + 5x10,- pro 50Watt)
  
 
==Installation==
 
==Installation==
Zeile 51: Zeile 51:
 
* Funktionsweise:
 
* Funktionsweise:
 
** Vereichnis virsh im Homeverzeichnis jedes Nutzers
 
** Vereichnis virsh im Homeverzeichnis jedes Nutzers
** in virsh ein Verzeichnis pro Maschine, Namenskonvention: dom-<maschinenname>
+
** in virsh ein Verzeichnis pro Maschine, Namenskonvention: dom-<maschinenname> (maschinenname ohne Benutzerkürzel) - z.B.: mkdir /home/cs/virsh/dom-erich
 
** innerhalb des Maschinenverzeichnisses stehen Dateien für etwaige Aktionen, die Inhalte der Dateien werden als Parameter übergeben
 
** innerhalb des Maschinenverzeichnisses stehen Dateien für etwaige Aktionen, die Inhalte der Dateien werden als Parameter übergeben
 
** Cronjob läuft jede Minute durch die Virsh-Verzeichnisse aller Nutzer, die in der Gruppe vmguests sind
 
** Cronjob läuft jede Minute durch die Virsh-Verzeichnisse aller Nutzer, die in der Gruppe vmguests sind
Zeile 71: Zeile 71:
 
** unter Linux
 
** unter Linux
 
*** Start des Tunnels: <tt>ssh -N -L 5900:localhost:59xy username@root.weimarnetz.de</tt>
 
*** Start des Tunnels: <tt>ssh -N -L 5900:localhost:59xy username@root.weimarnetz.de</tt>
*** Start VNC-Client: <tt>vncviewer localhost:5900</tt>
+
**** (durch -N bleibt die Verbindung ohne Prompt hängen, das ist OK so)
 +
*** Start VNC-Client: <tt>vncviewer localhost (auf port 5900)</tt>
 
** unter Mac OS X
 
** unter Mac OS X
 
*** Start des Tunnels: <tt>ssh -N -L 5900:localhost:59xy username@root.weimarnetz.de</tt>
 
*** Start des Tunnels: <tt>ssh -N -L 5900:localhost:59xy username@root.weimarnetz.de</tt>
Zeile 89: Zeile 90:
  
 
* beim starten <tt>CTRL + B</tt> drücken, um in die iPXE konsole zu gelangen
 
* beim starten <tt>CTRL + B</tt> drücken, um in die iPXE konsole zu gelangen
* ein image über HTTP laden: <tt>$ chain https://releng.archlinux.org/pxeboot/ipxe.lkrn</tt>
+
* unsere vms haben fixe ips (Befehl dhcp geht net) -> http://ipxe.org/cmd/set
 +
* ein image über HTTP laden: <tt>$ chain http://releng.archlinux.org/pxeboot/ipxe.lkrn</tt>
 
* warten
 
* warten
 
* terminal promptet mit <tt>boot:</tt>, warten <tt>ENTER</tt> drücken
 
* terminal promptet mit <tt>boot:</tt>, warten <tt>ENTER</tt> drücken
 +
* wer das für ubuntu hinbekommt - immer her damit! Als Einstieg das: http://archive.ubuntu.com/ubuntu/dists/trusty-updates/main/installer-amd64/current/images/xenial-netboot/ubuntu-installer/amd64/
 
* profit!
 
* profit!
  
Zeile 100: Zeile 103:
 
         address 77.87.48.xx
 
         address 77.87.48.xx
 
         netmask 255.255.255.240
 
         netmask 255.255.255.240
         gateway 77.87.48.17
+
         gateway 77.87.48.17 oder 33
 +
 
 +
        iface eth0 inet6 static
 +
        address 2001:bf7:b101:1::xx
 +
        netmask 64
 +
        gateway 2001:bf7:b101:1::1
 +
 
 
* DNS einrichten in ''/etc/resolv.conf''
 
* DNS einrichten in ''/etc/resolv.conf''
 
  domain lan
 
  domain lan
Zeile 115: Zeile 124:
  
 
===Tipps und Tricks===
 
===Tipps und Tricks===
 +
====LV mounten und oder LV fsck====
 +
* wenn das Dateisystem des LV kaputt ist und das automatische fsck fehlschlägt:
 +
** fdisk fdisk /dev/vg_images/cs-erich und "p"
 +
Disk /dev/vg_images/cs-erich: 104.9 GB, 104857600000 bytes
 +
255 heads, 63 sectors/track, 12748 cylinders, total 204800000 sectors
 +
Units = sectors of 1 * 512 = 512 bytes
 +
Sector size (logical/physical): 512 bytes / 4096 bytes
 +
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
 +
Disk identifier: 0x000ee166
 +
                  Device Boot      Start        End      Blocks  Id  System
 +
/dev/vg_images/cs-erich1  *        2048  196943871    98470912  83  Linux
 +
** sudo mount -o loop,offset=$((2048 * 512)) /dev/mapper/vg_images-cs--erich /home/cs/mnt
 +
** oder für fsck: sudo losetup --offset=$((2048 * 512)) /dev/loop0 /dev/vg_images/cs-erich
 +
** /dev/loop0 kann dann gefsckt werden
 +
 +
 
* Nutzung der virtio-Treiber für HDD, Netzwerk und RAM-Controller
 
* Nutzung der virtio-Treiber für HDD, Netzwerk und RAM-Controller
 
* Distributionen wie Debian bringen diese schon bei der Installation mit und richten alles automatisch ein
 
* Distributionen wie Debian bringen diese schon bei der Installation mit und richten alles automatisch ein
 
* virtio-Treiber für RAM-Controller erlaubt uns, garantierten und maximalen RAM festzulegen. Bei Speicherknappheit im System werden die Resourcen pro VM zurückgefahren.
 
* virtio-Treiber für RAM-Controller erlaubt uns, garantierten und maximalen RAM festzulegen. Bei Speicherknappheit im System werden die Resourcen pro VM zurückgefahren.
 
* Zugriff auf Maschinen via SSH vom Host aus ermöglichen: -net user,hostfwd=tcp::5555-:22
 
* Zugriff auf Maschinen via SSH vom Host aus ermöglichen: -net user,hostfwd=tcp::5555-:22
 +
* block-device scheduler im Gast auf primitiv stellen, das macht der Wirt besser:
 +
** sudo echo "deadline" >/sys/block/sr0/queue/scheduler
  
===Probleme===
+
===Neue Maschine hinzu===
 +
* Benutzer anlegen
 +
* Maschine anlegen mit virt-manager
 +
* vnc Port festlegen mit virsh
 +
* sshd konfig anpassen damit jeder nur seinen vnc Port erreicht
 +
* Doku im WIKI
 +
* Spendenermunterung
  
noch zu lösende Probleme
 
 
* akt. setup erlaubt allen ssh-usern, auf jeden virtuellen VNC zu verbinden.
 
  * lösung 1: vnc-config erlauben (cli), user setzt passwort auth
 
  * lösung 2: evtl. geht es im sshd? kann man jedem user nur tunneln von einem best. port erlauben?
 
  * evtl: sockets vor die ports -> user-rechte ???
 
  
 
==Offline-DHCP==
 
==Offline-DHCP==
 
===Netze===
 
===Netze===
 
* 77.87.48.16/28 und 77.87.48.32/28
 
* 77.87.48.16/28 und 77.87.48.32/28
 +
* jeder hat dann sowas wie 77.87.48.IP
  
 
===Zuordnung===
 
===Zuordnung===
Zeile 140: Zeile 168:
 
! RevDNS
 
! RevDNS
 
! RAM
 
! RAM
 +
! CPU's
 +
! Pinning
 
|-
 
|-
 
| 18
 
| 18
Zeile 147: Zeile 177:
 
|-
 
|-
 
| 19
 
| 19
|  
+
| 2001:bf7:b101:1::19
 
| Weimarnetz e.V.
 
| Weimarnetz e.V.
 
| weimarnetz.de
 
| weimarnetz.de
| 1 GB
+
| 2 GB
 +
| 2
 +
| 5
 
|-
 
|-
 
| 20
 
| 20
|  
+
| 2001:bf7:b101:1::20
 
| Storchi
 
| Storchi
 
| cs.weimarnetz.de
 
| cs.weimarnetz.de
| 16 GB
+
| 2 GB
 +
| 1
 +
| 4
 
|-
 
|-
 
| 21
 
| 21
|  
+
| 2001:bf7:b101:1::21
 
| Andi
 
| Andi
 
| ja.ishalt.so
 
| ja.ishalt.so
 
| 2 GB
 
| 2 GB
 +
| 2
 +
| 6,7
 
|-
 
|-
 
| 22
 
| 22
|  
+
| 2001:bf7:b101:1::22
 
| Basti
 
| Basti
 
| bb.weimarnetz.de
 
| bb.weimarnetz.de
| 8 GB
+
| 1 GB
 +
| 1
 +
| 6
 
|-
 
|-
 
| 23
 
| 23
|  
+
| 2001:bf7:b101:1::23
 
| Thomas
 
| Thomas
 
| tf.weimarnetz.de
 
| tf.weimarnetz.de
| 2 GB
+
| 3 GB
 +
| 2
 +
| 4,5
 
|-
 
|-
 
| 24
 
| 24
|  
+
| 2001:bf7:b101:1::24
| Sven
+
| Weimarnetz
| sam.weimarnetz.de
+
| map.weimarnetz.de
 +
| 1 GB
 +
| 1
 +
|
 
|-
 
|-
 
| 25
 
| 25
|  
+
| 2001:bf7:b101:1::25
 
| Heiko
 
| Heiko
 
| hf.weimarnetz.de
 
| hf.weimarnetz.de
 
| 2 GB
 
| 2 GB
 +
| 1
 +
| 7
 
|-
 
|-
 
| 26
 
| 26
|  
+
| 2001:bf7:b101:1::26
 
| Stephan
 
| Stephan
 
| sj.weimarnetz.de
 
| sj.weimarnetz.de
| 2 GB
+
| 1 GB
 +
| 1
 +
| 0
 
|-
 
|-
 
| 27
 
| 27
 +
| 2001:bf7:b101:1::27
 +
| Weimarnetz e.V.
 +
| meet.weimarnetz.de
 +
| 4 GB
 +
| 2
 
|  
 
|  
| Simon
 
| guerillamesh.net
 
| 8 GB
 
 
|-
 
|-
 
| 28
 
| 28
|  
+
| 2001:bf7:b101:1::28
 
| Kay
 
| Kay
 
| ks.weimarnetz.de
 
| ks.weimarnetz.de
 
| 2 GB
 
| 2 GB
 +
| 1
 +
| 1
 
|-
 
|-
 
| 29
 
| 29
|  
+
| 2001:bf7:b101:1::29
 
| Bernd
 
| Bernd
 
| ed.weimarnetz.de
 
| ed.weimarnetz.de
 
| 1 GB
 
| 1 GB
 +
| 2
 +
| 2,3
 
|-
 
|-
 
| 30
 
| 30
|  
+
| 2001:bf7:b101:1::30
| Thomas temp
+
| Ufo
| server.weimarnetz.de
+
| vpn8.leipzig.freifunk.net
| 2 GB
+
| 512 MB
 +
| 1
 +
| 2
 
|-
 
|-
 
| 34
 
| 34
|  
+
| 2001:bf7:b101:1::34
|  
+
| Weimarnetz e.V.
|  
+
| dyn.weimarnetz.de
 +
| 1 GB
 +
| 1
 +
| 3
 
|-
 
|-
 
| 35
 
| 35
|  
+
| 2001:bf7:b101:1::35
 +
| Weimarnetz e.V.
 +
| vpn3.weimarnetz.de
 +
| 1GB
 +
| 2
 
|
 
|
|
 
 
|-
 
|-
 
| 36
 
| 36
|  
+
| 2001:bf7:b101:1::36
| reserviert
+
| Bernd
 
|
 
|
 
|-
 
|-
 
| 37
 
| 37
|  
+
| 2001:bf7:b101:1::37
|  
+
| Weimarnetz e.V.
|
+
| jabber.weimarnetz.de
 +
| 1
 +
| 1
 +
| 0
 
|-
 
|-
 
| 38
 
| 38
|  
+
| 2001:bf7:b101:1::38
|  
+
| ex Julius
|
+
| FREI FREI FREI
 +
| x
 +
| x
 +
| x
 
|-
 
|-
 
| 39
 
| 39
 +
|  2001:bf7:b101:1::39
 +
| Micha Stoecker
 +
| freifunk jena
 +
| 2
 +
| 1
 
|  
 
|  
|
 
|
 
 
|-
 
|-
 
| 40
 
| 40
 +
|  2001:bf7:b101:1::40
 +
|  frei
 +
 +
|
 
|  
 
|  
| [[FOC]]
+
|
| www.foc.is
 
| 2 GB
 
 
|-
 
|-
 
| 41
 
| 41
|  
+
| 2001:bf7:b101:1::41
| [[FOC]]
+
| tasifan
| mail.foc.is
+
| noch kein rDNS
| 2 GB
+
| 2
 +
| ?
 +
| ---
 
|-
 
|-
 
| 42
 
| 42
|
+
|   2001:bf7:b101:1::42
 
| Max
 
| Max
| js.ars.is
+
| ars.weimarnetz.de
| 2 GB
+
| 4 GB
 +
| 2
 +
| 0,1
 
|-
 
|-
 
| 43
 
| 43
|  
+
| 2001:bf7:b101:1::43
|  
+
| cs
 +
| wird wieder frei...
 +
| 1GB
 
|
 
|
 
|-
 
|-
 
| 44
 
| 44
|  
+
| 2001:bf7:b101:1::44
|
 
 
|
 
|
 +
| aktuell gateway für netz 2 zum Testen
 
|-
 
|-
 
| 45
 
| 45
|  
+
| 2001:bf7:b101:1::45
 
|  
 
|  
 
|
 
|
Zeile 405: Zeile 483:
 
exit(0);
 
exit(0);
 
</pre>
 
</pre>
 
=Über den Root-Server / Technik=
 
*Es handelt sich um einen virtuellen Root-Server mit Debian als Betriebssystem.
 
*der neue Rootserver steht in Berlin und ist eine alte HP Proliant-Gurke:
 
 
* HP ProLiant DL360 Server G3, 19" Ausführung,  1 Höheneinheit
 
** 2x Intel Xeon 2.8 GHz, 533 MHz/512 kB Cache
 
** 4 GB RAM
 
** 2 x 72.8 GB Hot Swap Ultra320 SCSI Festplatten 10.000 RPM
 
** RAID-Controller HP Smart Array 5i Plus mit 64 MB Cache und Akkupack
 
** CD-ROM
 
** 3.5" Diskettenlaufwerk
 
** 2 redundante Netzteile
 
** 2 x PCI-X Steckplätze
 
** 1 x SATA-Controller
 
** 1000 Gigabyte SATA-Festplatte
 
 
*Sound:
 
** unerträglich laut (SCSI@10.000 RPM)
 
 
*Anschlüsse:
 
** 2 x Gigabit LAN, VGA, seriell, 2x USB, iLO, PS/2 Maus und Tastatur
 
** angepriesen als "guter Zustand - absolut staubfrei aus DATA-Center"
 
 
==Kosten==
 
* Anschaffung Ende 2009 zum Preis von 140 Euro + 10 Euro SATA-Controller + 70 Euro SATA-Festplatte
 
* Kosten im RZ Berlin (http://in-berlin.de) fuer das Housing: 25 Euro/Monat, davon tragen 15 Euro einige Vereinsmitglieder
 
* domain weimarnetz.de = 1 Euro / Monat
 
** wird vom weimarnetz-Konto monatlich abgebucht
 
 
==Setup==
 
* am 26. Januar 2011 brachten andi, storchi und michi in einer halsbrecherischen Nacht- und Nebelaktion den Server ins Rechenzentrum nach Berlin
 
* Stromversorgung
 
** redundantes Netzteil zugunsten einer günstigen Festplatte entfernt
 
** zweites Netzteil ist in Berlin, damit es bei Bedarf getauscht werden kann
 
* Netzwerk
 
** Domains: root.weimarnetz.de auf eth0?, ilo.weimarnetz.de auf iLO
 
** benötigen 10 IP: 1 eth0, 1 iLO, 8 Gäste, erste Gast-IP: 77.87.48.18/28
 
* Festplattenkonfiguration
 
** 2x 72 GB SCSI-Platten im RAID 1 (sind die im Server original verbauten Platten)
 
** 1x 1,0TB (zu klein!) im Server "verlegt" und an SATA-PCIe-Karte angeschlossen
 
* Betriebssystem
 
** Wirt: Ubuntu 10.04 LTS Lucid Lynx
 
** Gast-Template unter /home/weimarnetz/skeleton angelegt, Start mit
 
*** ''linux udba=$dateiname umid=$user mem=400M con=null eth0=tuntap,tap1 &''
 
** Gastbetriebssystem: Debian lenny
 
** max. 8 Gastsysteme, je 400 MB RAM, je 6 GB HDD auf RAID1, Datenpartition auf Pornoplatte: Größe = (Gesamt * 0,8)/8 = 100GB
 
** pro Gast eine feste, öffentliche IP
 
** pro Gast ein Nutzer für SSH und UML
 
** jeder Nutzer erhält die Möglichkeit seine eigene Maschine zu starten und zu beenden, kein sudo
 
** Neustart Wirtssystem nur für bestimmte Nutzer
 
** Gast als UserModeLinux, "Skelett" wird bereitgestellt, automatischer Start (per init-skript pro Gast)
 
** Anleitung für UML unter Ubuntu: https://help.ubuntu.com/community/UserModeLinux <== die geht nicht, überhaupt bekommt man Ubuntu 10.04 nicht als UML-Gast zum laufen
 
* Gäste
 
** jeder Gast hat ca. 100 Gigabyte Datenplatz + 7 Gigabyte Systemplatte (Quota)
 
** ''77.87.48.19'' weimarnetz.de (config siehe weiter unten)
 
** ''77.87.48.20'' Storchi (cs)
 
** ''77.87.48.21'' Andi (ab)
 
** ''77.87.48.22'' - ''fe80::fcfd:ff:fe00:4/64'' Basti (bb)
 
** ''77.87.48.23'' Findi (tf)
 
** ''77.87.48.24'' Sveni (sam)
 
** ''77.87.48.25'' freenet heiko (hf)
 
** ''77.87.48.26'' Stephan (sj)
 
* IP-Konfiguration
 
** '''eth0''', feste, öffentliche IP
 
*** Nutzung des oberen Anschlusses
 
*** IP-Adresse: kommt per ''DHCP''
 
*** Netz: ''77.87.48.16''
 
*** Netzmaske: ''255.255.255.240'' =/28 = 14 IP-Adressen + Netz + Gateway = 16
 
*** Gateway: ''77.87.48.17''
 
** '''eth1''':
 
*** untagged IN-Berlin: ''217.197.91.138''
 
*** tagged Freifunk-VLAN mit bridge 77.87.48.18 = tag1300
 
**** dadurch sind alle Gäste per Bridge mit dem Freifunk-VLAN verbunden
 
** '''iLO'''
 
*** '''i'''ntegrated '''L'''ights '''O'''ut
 
*** IP-Adresse: ''217.197.91.137''
 
*** Domain: ''ilo.weimarnetz.in-berlin.de''
 
*** Subnetmask: ''255.255.255.192'' =/26
 
*** Gateway:    ''217.197.91.129''
 
*** DNS-1: ''192.109.42.41''
 
*** DNS-2: ''192.109.42.42''
 
*** ermöglicht:
 
**** Zugriff direkt auf Konsole
 
**** Ein- und Ausschalten der Stromversorgung
 
**** Mounten von Imagedateien
 
**** passwortgeschützt und verschlüsselt
 
 
=== Todo ===
 
** IP-Adressen setzen:
 
*** für Freifunk-VLAN (2. Karte und Guests: 77.87.48.16/28, .18 bis .30 für die Geräte)
 
** Startscripts für UML-Maschinen (siehe hier: http://www.jjoseph.org/linux_work/user_mode_linux_and_gentoo) ==> beispielhaft erledigt für weimarnetz-maschine
 
** Datenpartitionen
 
** Nutzer anlegen und Dateien kopieren (root_fs pro Nutzer und Datenpartition)
 
** Vertrag mit IN-Berlin abschließen ==> erledigt
 
** Domain umziehen: läuft, wird erledigt, wenn Server in Berlin
 
 
=== Wirt: Hauptrechner ===
 
* user: weimarnetz
 
** ''root''-Rechte entzogen
 
** SSH-Login als ''root'' gesperrt
 
* Schritte um eine neue UML-Maschine anzulegen:
 
** Kopieren der Datei /media/daten/uml/uml-root_skel (enthält das RootFS) vorzugsweise in das Homeverzeichnis (schnelle Platten im RAID 1)
 
** Erzeugen einer Datenpartition in ''/media/daten/$username'' mit
 
*** ''dd if=/dev/zero of=$username-loopdev.bin bs=10M count=9200''
 
** Kopieren der Optionsdatei ''/media/daten/uml/uml_default_settings'' nach ''/uml/uml_$username''
 
*** eindeutige MAC vergeben
 
*** Pfade zu den Dateien für das RootFS (UBDA) und die Datenpartition (UBDB) anpassen
 
*** Nutzer- und Maschinennamen anpassen
 
** Erzeugen eines Links ''/etc/init.d/uml_$username'' auf ''/etc/init.d/uml_startstop''
 
* Schritte danach:
 
** IP-Adresse (standardmäßig auf DHCP) muss auf statische gesetzt werden, IP-Verteilung siehen oben
 
** Root-Passwort ändern!
 
** Hostname setzen in /etc/hostname und /etc/hosts (FQDN)
 
** Rechenzentrum IN-Berlin empfiehlt: Installation apticron, sucht nach Updates und versendet eine Mail wenn neue Updates vorliegen
 
* Möglichkeit für "externe" swap-Partition in Init-Script eingebaut
 
**UBDC_OPT=
 
**[ -w $UBDC ] && UBDC_OPT="ubdc=$UBDC"
 
* Gäste benutzen den shared memory des Hosts mit der Grösse=$MEM -> 8 x 400M
 
** ==> FUNZT NICHT: der shared mem des Hosts ist per default Ram(4GB) / 2 -> irgendwann knallts -> /etc/default/tmpfs auf 4GB gestellt
 
** Größe im Betrieb verändern: mount -o remount,size=4G /dev/shm
 
** Eintrag in fstab erfolgt: tmpfs      /dev/shm      tmpfs  defaults,size=4g  0  0 ==> jetzt ist tmpfs nach dem Reboot sofort richtig eingestellt
 
* Wegen Zeitabweichung ntp installiert und gestartet
 
 
=== Gäste allgemein ===
 
* Konfiguration unter
 
/uml/uml_$nutzername
 
* Datenpartition einbinden
 
** jeder Nutzer kann seine Daten im Verzeichnis ''/media/daten/$nutzername'' haben (dauert ca. 20min@75mb/s)
 
dd if=/dev/zero of=/media/daten/bb/bb-loopdev.bin bs=10M count=9200
 
** Rechte an dieser Datei setzen, sonst kann jeder Gast diese Datei mounten!
 
** Eintrag in ''/etc/fstab'' oder
 
** Device node auf Gast erzeugen als root mit
 
mknod /dev/ubdb b 98 16
 
mount /dev/ubdb /.../...
 
* Swap erstellen
 
dd if=/dev/zero of=swap.bin bs=1M count=64
 
** manuelles einbinden:
 
mkswap swap.bin
 
swapon swap.bin
 
** bzw. einbinden in ''/etc/fstab''
 
* Netzwerk konfigurieren in ''/etc/network/interfaces''
 
auto eth0
 
        iface eth0 inet static
 
        address 77.87.48.xx
 
        netmask 255.255.255.240
 
        gateway 77.87.48.17
 
* DNS einrichten in ''/etc/resolv.conf''
 
domain lan
 
search lan
 
nameserver 192.109.42.41
 
nameserver 192.109.42.42
 
* SSHd einrichten in ''/etc/ssh/sshd_config''
 
** ''PermitRootLogin no''
 
* Passwort setzen!
 
passwd
 
* backup des eigenen rootfsw machen:
 
** mit df -h nachschauen, wieviel das rootfs belegt (z.b. 500 Megabyte)
 
** maschine stoppen
 
** ext3 rootfs in ext2 wandeln, um es später kleiner zu machen
 
tune2fs -O ^has_journal /home/bb/uml_root_bb
 
** checken
 
e2fsck -f /home/bb/uml_root_bb
 
** kleiner machen
 
resize2fs /dev/sda1 500M
 
** komprimieren und sichern
 
lzma -9 /home/bb/uml_root_bb        # aus 500 Megabyte werden so 150 Megabyte
 
cp /home/bb/uml_root_bb /home/bb/uml_root_bb.lzma.backup
 
** ext3-journal wieder herstellen und filesystem wieder aufblasen:
 
e2fsck -f /home/bb/uml_root_bb
 
resize2fs /dev/sda1 6000M
 
tune2fs -j /home/bb/uml_root_bb
 
 
=== Gast: weimarnetz ===
 
* Root-Rechte entzogen
 
** SSH-Login als root gesperrt
 
* Swap eingerichtet
 
* ejabberd
 
** Paket installiert
 
** Konfiguration von altem Server übernommen (/etc/ejabberd/ejabberd.cfg)
 
** Datenbank auf neuen Server migriert, nach diesem Tutorial: http://www.ejabberd.im/migrate-host
 
** Zertifikat vom alten Server kopiert
 
* pyicqt
 
** Paket installiert
 
** Konfiguration von altem Server übernommen (/etc/pyicqt.xml.comf)
 
* inn2
 
** Paket installiert
 
** /etc/news/incoming.conf übernommen - definiert die Server, die uns news schicken dürfen
 
** /etc/news/newsfeeds - konfiguriert die Kopplung von Mailingliste und Newsgruppen sowie die Verteilung von News an befreundete Server
 
** /etc/news/nntpsend.ctl - bestimmt Zeitpunkt der Synchronisation mit anderen Newsservern
 
** /etc/news/readers.conf übernommen - setzt Berechtigungen
 
** Nutzer freifunk übernommen
 
** Dateien news2mail und mailpost in /usr/lib/news/bin vom alten Server übernommen. Diese Dateien bereiten Emails oder News für das jeweils andere System auf.
 
** Sync nach dieser Anleitung eingerichtet: http://wiki.freifunk.net/Newsserver_einrichten
 
** Paket procmail installiert
 
* Webserver lighttpd
 
** Paket lighttpd und php5-cgi installiert
 
** module fastcgi, fastcgi-php, simple-vhost, auth aktiviert
 
** index.php und Verzeichnis newsgroups (php-basierter Newsreader) vom alten Server kopiert
 
* uml-utilities und vtun für tun/tap
 
** Pakete installiert
 
** Kernel 2.6.37 neu kompiliert mit TUNTAP-Unterstützung für VPN-Tunnel, die .config entspricht sonst der des anderen Kernels. Das zweite Image liegt unter /uml/kernel32-2.6.37_tuntap
 
** eth0:0 in /etc/network/interfaces hinzugefügt mit Adresse 10.63.30.253
 
** Konfigurations von altem Server übernommen:
 
*** /etc/init.d/vpn ==> erstellt Netzwerkumgebung, schreibt olsr-config und startet VPN-Server, angepasst für eth0:0
 
*** /etc/olsrd.conf_head ==> enthält allgemeine Einstellungen
 
*** startet automatisch in rc2.d: S21weimarnetz-vpn -> ../init.d/vpn
 
** Router mit Internetzugang registrieren sich per Webanfrage an http://weimarnetz.de/freifunk/vpn/index.php (von altem Server übernommen. '''Achtung böser Hack:''' die Webanfragen vom alten Server werden derzeit per .htaccess-Regel auf den neuen Server umgeleitet. Alle Router (zumindest die mit Internetzugang) benötigen die neu gesetzte nvram-Variable für den Rootserver (komischerweise wird hier die IP genommen, vielleicht stellen wir das auf Domainname um) ==> per FW-Update erledigt
 
** bei Registrierung wird Datei /tmp/vpnrestart angelegt, ein cron-job prüft alle 5 Minuten, ob die Datei existiert und startet das VPN-Script in diesem Fall neu
 
* OLSRd
 
** kompiliert und installiert
 
** Extensions txt_info, dot_draw, dns kompiliert, installiert und eingerichtet
 
** graphviz und imagemagick per apt-get installiert
 
* Intercity VPN
 
** quagga und tinc installiert
 
** einrichtung nach dieser Anleitung: http://wiki.freifunk.net/IC-VPN
 
* eingehende Email
 
** exim4 durch postfix ersetzt
 
 
===Gast: ab ===
 
* Update auf Debian Squeeze nach dieser Anleitung: http://www.go2linux.org/how-to-upgrade-from-debian-lenny-to-squeeze
 
* auf den ersten Blick hat es funktioniert
 
* Backup auf NAS nach http://www.notizbox.org/2010/08/howto-debian-5-0-lenny-mit-gpg-und-duplicity-verschlusseltes-backup-auf-ftp-server/
 
** duplicity aber in aktueller Version kompiliert und installiert
 
 
==Auslastung==
 
Die Auslastung des Rechners kann mit [[Serverlast_Howto|Jens seinem Skript]] kontrolliert werden.
 
 
Die Serverskripte bzw. Dateien
 
[[/etc/init.d/vpn]]
 
[[/etc/vtund.conf]]
 
[[/etc/olsrd.conf_head]]
 
sind Eigenentwicklungen.
 
 
==Gefrickel==
 
Damit Änderungen am Server von Allen nachvollzogen werden können werden Bauarbeiten im [[Weimarnetz-Rootserver-log|Frickel-Logbuch]] dokumentiert.
 
 
[[Kategorie:Weimarnetz]]
 
 
==Zugang==
 
* ticketsystem: https://kcm.keyweb.de
 
** kundennummer: 24090
 
** passwort: subsignal standard passwort
 
* management-Konsole (reboot etc.): https://87.118.106.19:4643
 
** login: root
 
** passwort: ...
 

Aktuelle Version vom 18. März 2020, 19:49 Uhr

Das Weimarnetz verwendet einen Rechner, der das Funk-Netz unterstützt und Dienste im Weimarnetz und im Internet anbietet. Wichtige Eigenschaften dieses Rechners sind eine sehr gute Internet-Anbindung, eine feste Internet-Adresse, hohe Verfügbarkeit und eine gute Internet-Verbindung zu den Internet-Anschlüssen im Weimarnetz. Je nach Aufgabe wird dieser Rechner hier im wiki als Root- oder Route-Server bezeichnet.

Rootserver 2.0

Technik

  • 19 Zoll ATX Server mit 1 Höheneinheit (1HE)
  • CPU: 2 x XEON QUAD CORE L5420 2,5 GHz
  • RAM: 32 GB DDR-2 FB ECC Reg.
  • HDD: incl. SATA-TRAY HOT-SWAP für 3 x SATA-HDD 3.5 Zoll
  • 600 Watt Win-Tact Powersupply WP507F12
  • 2 Platten Western Digital WD30EFRX, geeignet für Dauerbetrieb
  • Leistungsaufnahme: Beim Einschalten ca. 300 W, im Idle ca. 200 W

Kosten

  • Server mit Versand: 370 Euro
  • Festplatten: 260 Euro
  • Kosten pro Monat bei durchschnittlicher Leistungsaufnahme von 250W: 60 Euro (1HE=10,- + 5x10,- pro 50Watt)

Installation

Partitionierung

  • wegen 3TB, GPT und EFI nach dieser Anleitung vorgegangen: http://stackful.io/blog/raid-install-ubuntu-server-on-a-large-hard-drive/
    • 40GB Swap pro Platte, da nicht gespiegelt ==> 80 GB Swap ingesamt
    • 120GB für das System und ISO-Store zur Ablage von OS-Images (unter /media/isostore)
    • per LVM Rest für Images
  • Das alles im Raid 1 per mdadm. Fehlermeldungen kommen per Mail auf die Mailingliste
  • Erfolgreich getestet wurde, dass das System beim Ausfall einer Platte trotzdem noch bootet
  • Noch zu klären: Was machen wir im Fehlerfall? Vorschlag: Mit Daniel von Freifunk Berlin reden, ob wir ihm im Notfall eine Platte geben können. Diese muss gegen die defekte Platte getauscht werden (Reboot notwendig). Danach muss das gleiche Partitionsschema angelegt werden und die Platten können wieder synchronisieren (dauert insgesammt 8-9 Stunden)

OS

  • Ubuntu 12.04 LTS
    • Pakete: apticron, virt-manager, bridge-utils, ...

Netzwerk

  • Bridge und VLAN, IP-Konfiguration
    • feste, öffentliche IP
      • Netz: 77.87.48.16/28 und 77.87.48.32/28
      • Netzmaske: 255.255.255.240 =/28 = 14 IP-Adressen + Netz + Gateway = 16
      • Gateway: 77.87.48.17
    • eth0:
      • untagged IN-Berlin: 217.197.91.138
      • tagged Freifunk-VLAN mit bridge 77.87.48.18 = tag1300
        • dadurch sind alle Gäste per Bridge mit dem Freifunk-VLAN verbunden

Serielle Konsole

  • Zugriff über Konsolenserver
  • Zugang im Notfall, Neustart per serieller Konsole möglich?
  • Details folgen nach Einbau

HowTo

Start/Stop/Autostart

  • virsh-wrapper, um jedem Nutzer die Steuerung der eigenen Maschine(n) zu ermöglichen
  • virsh-wrapper ist erweiterbar zur Steuerung anderer KVM-Elemente, z.B. Storage, Netzwerk, usw.
  • https://github.com/weimarnetz/virsh-wrapper
  • Funktionsweise:
    • Vereichnis virsh im Homeverzeichnis jedes Nutzers
    • in virsh ein Verzeichnis pro Maschine, Namenskonvention: dom-<maschinenname> (maschinenname ohne Benutzerkürzel) - z.B.: mkdir /home/cs/virsh/dom-erich
    • innerhalb des Maschinenverzeichnisses stehen Dateien für etwaige Aktionen, die Inhalte der Dateien werden als Parameter übergeben
    • Cronjob läuft jede Minute durch die Virsh-Verzeichnisse aller Nutzer, die in der Gruppe vmguests sind
    • Chronik und Fehlermeldungen werden in anderen Verzeichnissen gespeichert
  • Start einer Maschine
    • touch ~/virsh/dom-<machine>/start
  • Anhalten einer Maschine
    • touch ~/virsh/dom-<machine>/shutdown (für Maschinen mit ACPI-Funktionen)
    • touch ~/virsh/dom-<machine>/destroy (falls die Maschine nicht mehr reagiert oder nicht per ACPI ausgeschaltet werden kann)
  • Autostart
    • touch ~/virsh/dom-<machine>/autostart (Autostart anschalten)
    • echo "--disable" > ~/virsh/dom-<machine>/autostart (Autostart deaktivieren)

VNC über SSH

  • VNC ist die Konsolenausgabe der virtuellen Maschinen
  • VNC hört nur auf 127.0.0.1 (ginge zwar auch anders, wollen wir aber nicht)
  • Pro Maschine ein Port, dieser wird manuell von uns auf 59xy festgelegt. xy entspricht der letzten Stelle der IP-Adresse
  • Verbindung erfolgt über SSH-Tunnel
    • unter Linux
      • Start des Tunnels: ssh -N -L 5900:localhost:59xy username@root.weimarnetz.de
        • (durch -N bleibt die Verbindung ohne Prompt hängen, das ist OK so)
      • Start VNC-Client: vncviewer localhost (auf port 5900)
    • unter Mac OS X
      • Start des Tunnels: ssh -N -L 5900:localhost:59xy username@root.weimarnetz.de
      • Da es Probleme mit dem Mac OS X VNC-Viewer gibt, empfiehlt sich Chicken of the VNC
    • unter Windows
      • Unter Putty normal eine Session zu root.weimarnetz.de starten, VOR dem anmelden jedoch im Punkt
      • Connection --> SSH --> Tunnels folgendes Eintragen:
      • Source Port: 5900 Destination: 127.0.0.1:59xy (xy ist eure IP)
      • Button "Add" drücken, der Tunnel sollte dann unter "forwarded ports" stehen. Diese Session könnt ihr euch auch dauerhaft speichern
      • --> Open Connection, anmelden und vncviewer auf localhost starten
  • Unter Umständen bricht die SSH-Verbindung ab und dann ist der lokale Port mit der gestorbenen SSH-Session blockiert. Mit ps aux | grep ssh kann man die Prozess-ID ermitteln und mit kill $ID wieder befreien.

iPXE

PXE ist teil des virtuellen bootloaders jeder vm. wenn kein image zugewiesen ist (= keine virtuelle cd eingelegt), kann der bootloader ein frisches image laden und booten. per http!

Netzwerkkonfiguration im Gast

  • je nach verwendetem OS: Netzwerk konfigurieren in /etc/network/interfaces (Ubuntu, Debian)
auto eth0
       iface eth0 inet static
       address 77.87.48.xx
       netmask 255.255.255.240
       gateway 77.87.48.17 oder 33
       iface eth0 inet6 static
       address 2001:bf7:b101:1::xx
       netmask 64
       gateway 2001:bf7:b101:1::1
  • DNS einrichten in /etc/resolv.conf
domain lan
search lan
nameserver 192.109.42.41
nameserver 192.109.42.42
  • manuell
NR=(interne vm nummer)
ip link set eth0 up
ip addr add 77.87.48.$NR/28 dev eth0
ip route add default via 77.87.48.17
vim /etc/resolv.conf

Tipps und Tricks

LV mounten und oder LV fsck

  • wenn das Dateisystem des LV kaputt ist und das automatische fsck fehlschlägt:
    • fdisk fdisk /dev/vg_images/cs-erich und "p"
Disk /dev/vg_images/cs-erich: 104.9 GB, 104857600000 bytes
255 heads, 63 sectors/track, 12748 cylinders, total 204800000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000ee166
                  Device Boot      Start         End      Blocks   Id  System
/dev/vg_images/cs-erich1   *        2048   196943871    98470912   83  Linux
    • sudo mount -o loop,offset=$((2048 * 512)) /dev/mapper/vg_images-cs--erich /home/cs/mnt
    • oder für fsck: sudo losetup --offset=$((2048 * 512)) /dev/loop0 /dev/vg_images/cs-erich
    • /dev/loop0 kann dann gefsckt werden


  • Nutzung der virtio-Treiber für HDD, Netzwerk und RAM-Controller
  • Distributionen wie Debian bringen diese schon bei der Installation mit und richten alles automatisch ein
  • virtio-Treiber für RAM-Controller erlaubt uns, garantierten und maximalen RAM festzulegen. Bei Speicherknappheit im System werden die Resourcen pro VM zurückgefahren.
  • Zugriff auf Maschinen via SSH vom Host aus ermöglichen: -net user,hostfwd=tcp::5555-:22
  • block-device scheduler im Gast auf primitiv stellen, das macht der Wirt besser:
    • sudo echo "deadline" >/sys/block/sr0/queue/scheduler

Neue Maschine hinzu

  • Benutzer anlegen
  • Maschine anlegen mit virt-manager
  • vnc Port festlegen mit virsh
  • sshd konfig anpassen damit jeder nur seinen vnc Port erreicht
  • Doku im WIKI
  • Spendenermunterung


Offline-DHCP

Netze

  • 77.87.48.16/28 und 77.87.48.32/28
  • jeder hat dann sowas wie 77.87.48.IP

Zuordnung

IP IPv6 Nutzer RevDNS RAM CPU's Pinning
18 Bridge
19 2001:bf7:b101:1::19 Weimarnetz e.V. weimarnetz.de 2 GB 2 5
20 2001:bf7:b101:1::20 Storchi cs.weimarnetz.de 2 GB 1 4
21 2001:bf7:b101:1::21 Andi ja.ishalt.so 2 GB 2 6,7
22 2001:bf7:b101:1::22 Basti bb.weimarnetz.de 1 GB 1 6
23 2001:bf7:b101:1::23 Thomas tf.weimarnetz.de 3 GB 2 4,5
24 2001:bf7:b101:1::24 Weimarnetz map.weimarnetz.de 1 GB 1
25 2001:bf7:b101:1::25 Heiko hf.weimarnetz.de 2 GB 1 7
26 2001:bf7:b101:1::26 Stephan sj.weimarnetz.de 1 GB 1 0
27 2001:bf7:b101:1::27 Weimarnetz e.V. meet.weimarnetz.de 4 GB 2
28 2001:bf7:b101:1::28 Kay ks.weimarnetz.de 2 GB 1 1
29 2001:bf7:b101:1::29 Bernd ed.weimarnetz.de 1 GB 2 2,3
30 2001:bf7:b101:1::30 Ufo vpn8.leipzig.freifunk.net 512 MB 1 2
34 2001:bf7:b101:1::34 Weimarnetz e.V. dyn.weimarnetz.de 1 GB 1 3
35 2001:bf7:b101:1::35 Weimarnetz e.V. vpn3.weimarnetz.de 1GB 2
36 2001:bf7:b101:1::36 Bernd
37 2001:bf7:b101:1::37 Weimarnetz e.V. jabber.weimarnetz.de 1 1 0
38 2001:bf7:b101:1::38 ex Julius FREI FREI FREI x x x
39 2001:bf7:b101:1::39 Micha Stoecker freifunk jena 2 1
40 2001:bf7:b101:1::40 frei
41 2001:bf7:b101:1::41 tasifan noch kein rDNS 2 ? ---
42 2001:bf7:b101:1::42 Max ars.weimarnetz.de 4 GB 2 0,1
43 2001:bf7:b101:1::43 cs wird wieder frei... 1GB
44 2001:bf7:b101:1::44 aktuell gateway für netz 2 zum Testen
45 2001:bf7:b101:1::45

Dienste

  • interne IP ist 10.63.1.1

Kabelkopplung

Erfreulicherweise erstreckt sich das Weimarnetz über weite Teile der Stadt. Um sicher zu stellen, dass alle Teilnehmer im Netz miteinander kommunizieren können wird das Weimarnetz zusätzlich zum Funknetz über die Internet-Einspeiser am Route-Server zusammengehalten. Neben der Verbindung von Funk-Inseln können langsame Verbindungen über viele Funk-Knoten mit einer Abkürzung über den Route-Server verbessert werden.

Newsserver

Auch in Weimar existiert nun ein Newsserver als zukünftige Alternative zu den Mailinglisten. Entscheidende Vorteile sind, daß man diese Newsgroups einfach bestellen und auch wieder abbestellen kann (ohne das aufwändige Senden von Mails wie bei Mailinglisten) und die Synchronisation mit Newsservern in Leipzig und Halle. Damit kann auf die Newsgroups anderer Freifunk-Communities zugegriffen werden.

TODO

  • Upstream auch in Richtung Leipzig

Proxy

Ein Proxy dient als Zwischenstation zum Internet. Damals, als das Internet noch langsam und Pluto ein Planet war, dienten Proxies als Zwischenspeicher häufig angeforderter Dateien aus dem Internet. Dieser Nutzen verliert in der Verwendung am Root-Server an Wert, da

  • der Server nur über das Internet erreichbar ist und als zusätzlicher Umweg eher bremst als beschleunigt
  • die meisten Stöberer selbst lokal Informationen speichern
  • schlecht programmierte Web-Anwendungen Probleme mit Proxies haben können
  • Informationen gespeichert werden können, die besser nicht gespeichert werden sollten

Vorteilhafter wirkt der Proxy als Werbefilter und um Die Rückverfolgung von Internet-Nutzern am Root-Server statt am nächsten Internet-Einspeiser enden zu lassen.

Der Proxy ist mit folgender Einstellungen erreichbar: momentan nicht aktiviert

Proxy: 87.118.106.19
Port: 3128

Portforwarding (Dienste ins Internet zur Verfuegung stellen)

Johannes Gramse / Kirchmessaufbau:
# noch nicht aktiv

Erinnerung ans Treffen für den Kassenwart

  • liegt unter /usr/local/bin/meeting_reminder.pl
  • verschickt Montags um 12 die aktuellen Daten des Treffens
  • als cronjob in /etc/cron.d/scripts definiert

hier das Script zum Verbessern:

#! /usr/bin/perl

use Net::NNTP;
use LWP::Simple;

#######
## change this to point to your NNTP server host.
$nntpserver = 'localhost';
########
# url to wiki
my $url_meeting="http://wireless.subsignal.org/index.php?title=Treffen";
my $place="undef";
my $date="undef";
my $subject="";
my $body="";
my $newsgroup="freifunk.de.weimar.discuss";

# Print warning and exit.  Some mailers will discard warning string.
# # Postfix is nice enough to display it in the mailq & log output when
# # we exit with non-success exitcode.
sub croak {
   my ($msg,$exitcode) = @_;

   warn "$msg\n";
   exit($exitcode);
}


my $content = get $url_meeting;
die "Couldn't get $url_meeting" unless defined $content;

# Then go do things with $content, like this:

if($content =~ m/Naechster Stammtisch<\/a>: (.*?)<\/b>.*?<a.*?>(.*?)<\/a>/s) {
	$date=$1;
	$place=$2;
	}

#build subject
if ($place eq "undef" or $date eq "undef") {
	$subject="Naechstes Treffen wahrscheinlich am Dienstag in der M18";
	$body="Hallo allerseits, \n\nda das Wiki aktuell nicht erreichbar ist oder sich die Seitenstruktur erheblich veraendert hat, sind derzeit keine genauen Prognosen bezueglich des naechsten Treffens moeglich\n\nVielleicht ist es ja schonwieder erreichbar: " . $url_meeting . "\n\nDer Weimarnetzerinnerungsdienst\n\nps: Das ist eine computergenerierte Nachricht";
	}
else {
	$subject="Naechstes Treffen am: " . $date . ", Ort: " . $place;
	$body="Hallo allerseits, \n\nnaehere Informationen zum naechsten Treffen sind unter " . $url_meeting . " auffindbar. Sollte das Datum veraltet sein, hat sich wieder niemand um das aktuelle Treffen gekuemmert.\n\nDer Weimarnetzerinnerungsdienst\n\nps: Das ist eine computergenerierte Nachricht";
	}


push @headers,"From: Weimarnetz Wiki <do_not_reply\@weimarnetz.de>\n";
push @headers,"Newsgroups: ". $newsgroup ."\n";
push @headers,"Subject: ". $subject ."\n";
push @headers,"\n";


my $nntp = Net::NNTP->new($nntpserver) or croak('Net::NNTP failure.', "1");

$nntp->post() or croak('post() failure',&EX_TEMPFAIL);
$nntp->datasend(\@headers) or croak('datasend() header failure',"1");

#while (<>) {
  $nntp->datasend($body)or croak('datasend() body failure',"1");
#}

#$nntp->debug(1);		# if error exit code, log to maillog (STDERR)
$nntp->dataend() or croak('Post dataend() failure.', "2");
$nntp->quit();

exit(0);