Lenovo ThinkServer RD210
Der Artikel Server/dicke Berta gibt die Konfiguration der Grundinstallation des installierten Betriebssystem auf der dicken Berta wieder.
Gerät
ThinkServer
Hardware | Anzahl | Bezeichnung |
---|---|---|
RAM | 1/16 | 2G PC3-10600 ECC |
CPU | 1/2 | Intel(R) Xeon(R) CPU E5504 @2.00GHz |
HDD | 3/6 |
Lagerort
Die kursiv gekennzeichneten Teile des Inhaltes, sind variabel oder können hier nicht angegeben werden.
Software
Installation
PT und Frank Hebold orientierten sich ergänzend an der "Anleitung" FreeBSD 9 mit Root on ZFS.
Installation des Betriebssystems
Starten mit dem Startmedium
- mit Speicherabbild für den USB-Stick
Einrichtung der Festplatten zur Installation des Betriebssystems
Festplatten einrichten
- gpart create -s gpt /dev/da0
- gpart create -s gpt /dev/da1
- gpart create -s gpt /dev/da2
Partitionierung der Festplatten zur Installation des Betriebssystems
Festplatten partitionieren
- gpart add -s 512k -t freebsd-boot da0
- gpart add -s 512k -t freebsd-boot da1
- gpart add -s 512k -t freebsd-boot da2
- gpart add -s 3G -t freebsd-swap da0
- gpart add -s 3G -t freebsd-swap da1
- gpart add -s 3G -t freebsd-swap da2
- gpart add -t freebsd-zfs da0
- gpart add -t freebsd-zfs da1
- gpart add -t freebsd-zfs da2
Bootloader zur Installation des Betriebssystems
- gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da0
- gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da1
- gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 da2
Spiegeln des SWAP zur Installation des Betriebssystems
SWAP spiegeln (Redundanz erzeugen)
- gmirror label -v -b round-robin swap0 da0p2 da1p2 da2p2
- gmirror load
Anlegen des Pools für ZFS zur Installation des Betriebssystems
Pool für ZFS anlegen
- zpool create storich mirror da0p3 da1p3 da2p3
- zfs set mountpoint=/mnt storich
- zpool export storich
- zpool import -o cachefile=/var/tmp/zpool.cache storich
- zfs set checksum=fletcher4 storich
Anlegen der Datasets von ZFS zur Installation des Betriebssystems
Datasets von ZFS anlegen
- zfs create -o compression=on -o exec=on -o setuid=off storich/tmp
- chmod 1777 /mnt/tmp
- zfs create storich/usr
- zfs create storich/usr/home
- cd /mnt/
- ln -s /usr/home home
- zfs create -o compression=lzjb -o setuid=off storich/usr/ports
- zfs create -o compression=off -o exec=off -o setuid=off storich/usr/ports/distfiles
- zfs create -o compression=off -o exec=off -o setuid=off storich/usr/ports/packages
- zfs create -o compression=off -o exec=off -o setuid=off storich/usr/src
- zfs create storich/var
- zfs create -o compression=off -o exec=off -o setuid=off storich/var/crash
- zfs create -o exec=off -o setuid=off storich/var/empty
- zfs create -o compression=lzjb -o exec=off -o setuid=off storich/var/log
- zfs create -o compression=gzip -o exec=off -o setuid=off storich/var/mail
- zfs create -o exec=off -o setuid=off storich/var/run
- zfs create -o compression=lzjb -o exec=on -o setuid=off storich/var/tmp
- chmod 1777 /mnt/var/tmp
Installation des Betriebssystems zur Installation des Betriebssystems
Installation FreeBSD 9.X
- tar -xf /usr/freebsd-dist/base.txz
- tar -xf /usr/freebsd-dist/kernel.txz
- tar -xf /usr/freebsd-dist/doc.txz
- tar -xf /usr/freebsd-dist/lib32.txz
- tar -xf /usr/freebsd-dist/ports.txz
- tar -xf /usr/freebsd-dist/src.txz
- zfs set readonly=on storich/var/empty
Konfiguration des FreeBSD nach der Installation des Betriebssystems
Änderung des Rootverzeichnisses nach der Installation des Betriebssystems
Änderung des Rootverzeichnisses
- chroot /mnt
Setzen des Passwortes für root nach der Installation des Betriebssystems
root-Passwort setzen
- passwd
Anpassung zum Einhängen des SWAP-Mirror für jeden Boot-Vorgang nach der Installation des Betriebssystems
SWAP beim Hochfahren einhängen
- ee /etc/fstab
#Device Mountpoint FStype Options Dump Pass#
/dev/mirror/swap0 none swap sw 0 0
Anpassung zur Aktivierung von ZFS für jeden Boot-Vorgang nach der Installation des Betriebssystems
Aktivierung des ZFS
- ee /etc/rc.conf
zfs_enable="YES"
Laden der benötigten Kernel-Module
- ee /boot/loader.conf
zfs_load="YES"
vfs.root.mountfrom="zfs:storich"
geom_mirror_load="YES"
Anpassung zur Aktivierung der Netzwerkeinstellungen für jeden Boot-Vorgang nach der Installation des Betriebssystems
Grundkonfiguration der Netzwerkeinstellungen
- ee /etc/rc.conf
hostname="hostname der Maschine"
defaultrouter="IP des Defaultrouters"
ifconfig_bce0="IP der Maschine netmask 255.255.255.0"
Anpassung zur Festlegung der Dauer vom Bootscreen für jeden Boot-Vorgang nach der Installation des Betriebssystems
Festlegung (Reduzierung) der Dauer vom Bootscreen
- ee /boot/loader.conf
autoboot_delay="1"
Anpassung zur Festlegung der Zeitzone nach der Installation des Betriebssystems
Änderung der Zeitzone
- tzsetup
Europe
Germany
Abmelden aus dem Rootverzeichnisses nach der Installation des Betriebssystems
- exit
Kopieren der Informationen zum Pool für ZFS für jeden Boot-Vorgang nach der Installation des Betriebssystems
Informationen zum Pool für ZFS kopieren (oder verschieben)
- cp /var/tmp/zpool.cache /mnt/boot/zfs/
einmaliges Aushängen und Festlegung der zukünftige Einhängepunkte der Datasets von ZFS für jeden Boot-Vorgang nach der Installation des Betriebssystems
Datasets von ZFS aushängen und zukünftige Einhängepunkte festlegen
- cd /
- zfs unmount -a
- zfs set mountpoint=legacy storich
- zfs set mountpoint=/tmp storich/tmp
- zfs set mountpoint=/usr storich/usr
- zfs set mountpoint=/var storich/var
Neustarten nach der Installation des Betriebssystems
FERTIG! (Neustart!)
- reboot
Anpassungen und Ergänzungen nach der Installation des Betriebssystems
Anpassung zur Festlegung der Adressen für die Weiterleitung der Mails des Betriebssystems
Erstellung und Weiterleitung von Adressen für Mails vom Betriebssystem
- cd /etc/mail
- ee alias
- make aliases
Erstellung der Liste für Nameserver
- ee /etc/resolv.conf
domain domain.tld
nameserver "IP"
nameserver "IP"
Installation der Portscollection
- portsnap fetch extract
Bereitstellung von SSH
Konfiguration von OpenSSH
- openssh
- ssh auf anderen port legen
- Vorschläge für sshd_config
- ee /etc/ssh/sshd_config
VersionAddendum
Port $SSH_PORTNUMMER
ListenAddress $JAIL_IP
Protocol 2
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 1m
PermitRootLogin no
StrictModes yes
MaxAuthTries 4
MaxSessions 5
AllowUsers $DER_COOLE_LEUTE_CLUB
PermitEmptyPasswords no
X11Forwarding no
Banner none
- immer schön manpage lesen und mit dem Feinkamm durchgehen
- keys + passwörter zur Authentifizierung
- in jails:ListenAddress 0.0.0.0
Aktivierung von OpenSSH für jeden Boot-Vorgang
- ee /etc/rc.conf
sshd_enable="YES"
Anpassung der Sicherheitseinstellungen
Festlegung zur Automatisierung der Updates
- Automatische Portscollection updaten
- Mailinfo zusenden zu
- nicht aktuellen Ports
- verbugten Ports
- ee /etc/crontab
0 13 * * * root portsnap -I cron fetch && portsnap update && pkg_version -vIL=
0 14 * * * root portaudit -Fda
0 */12 * * * root /usr/sbin/audit -n
Installation der Audit-Unterstützung
- auditd starten
- /etc/rc.d/auditd start
Festlegen der Grundeinstellungen der Audit-Unterstützung
- flags setzen
- ee /etc/security/audit_control
flags:lo,aa,ex
- synchronize config:
- audit -s
Anpassung zur Aktivierung der Audit-Unterstützung für jeden Boot-Vorgang
- ee /etc/rc.conf
# Audit Deamon aktivieren
auditd_enable="YES"
Installation des Paket Filters (PF) von OpenBSD und ALTQ
- Paketfilter starten
- /etc/rc.d/pf start
- /etc/rc.d/pflog start
Festlegen der Regeln für den Paket Filter
- ee /etc/pf.conf
### MAKROS
thishost "$MAIN_IP"
# portsnap5 204.9.55.80
portsnap_freebsd "{ 204.109.56.116 204.9.55.80 }"
# auditfile.tbz is beeing fetched from portaudit.freebsd.org
portaudit_freebsd "69.147.83.36"
# dnsserver from resolv.conf
dnsserver "{ 85.214.73.63 217.79.186.148 27.110.120.30 204.152.184.76 194.150$
### RULES
# default deny
block in all
block out all
# lokales interface darf ohne einschränkungen
pass in quick on lo0 all
pass out quick on lo0 all
## HOST
# allow ssh
pass in on bce0 proto tcp from any to $thishost port $SSH_PORT
pass out on bce0 proto tcp from $thishost port $SSH_PORT to any
## allow outbound icmp
# echo request
pass out inet proto icmp icmp-type 8 code 0 keep state
# echo reply
pass in inet proto icmp icmp-type 0 code 0 keep state
# destination unreachable
pass in inet proto icmp icmp-type 3 keep state
# allow DNS lookups {also via tcp?} port 53
# what about traversal???
pass out on bce0 proto udp from $thishost to $dnsserver port 53 keep state
# allow portsnap to fetch from freebsd.org (ports?)
pass in on bce0 proto tcp from $portsnap_freebsd to $thishost
pass out on bce0 proto tcp from $thishost to $portsnap_freebsd
# allow portaudit to fetch auditfile.tbz via http
pass in on bce0 proto tcp from $portaudit_freebsd port 80 to $thishost
pass out on bce0 proto tcp from $thishost to $portaudit_freebsd port 80
## JAIL Beispiel (uneingeschränkt -> dumme Idee, ports dienstabhänging freigeben
pass in on bce0 proto { tcp udp icmp } from any to $jail_srs14
pass out on bce0 proto { tcp udp icmp } from $jail_srs14 to any
- Regeln überprüfen
- pfctl -vnf /etc/pf.conf
- alte Regeln durch die neuen Regeln ersetzen
- pfctl -Fa -f /etc/pf.conf
Anpassung zur Aktivierung des Paket Filters für jeden Boot-Vorgang
- ee /etc/rc.conf
# Packet Filter aktivieren
pf_enable="YES"
# auf die erstellte Datei mit den Regeln für den Packet Filter verweisen
pf_rules="/etc/pf.conf"
# Log für den Packet Filterlog aktivieren
pflog_enable="YES"
Anpassung zur Aktivierung des Durchroutens aller Jails für jeden Boot-Vorgang
- ee /etc/rc.conf
# host system is gateway for jails
gateway_enable="YES"
Anpassung zur Aktivierung der Systemlog-Informationen für jeden Boot-Vorgang
- ee /etc/rc.conf
# syslogd an Hauptmaschine binden
syslogd_flags="-b $MAIN_IP"
Anpassung zur Sprache und Zeichensatz
- ee /etc/login.conf
# deutsch einstellen
default:\
:charset=ISO-8859-1:\
:lang=de_DE.ISO8859-1:\
- cap_mkdb /etc/login.conf
Zusammenfassung der Einträge und Anpassung nach der Installation des Betriebssystems
- Hinweis
- Bei einer Mehrzahl von Einträgen sollte die Datei hier als Zusammenfassung abgebildet werden.
- Bei einmaligen Einträgen kann auf den entsprechende Abschnitt verwiesen werden.
/mnt/etc/fstab
/boot/loader.conf
zfs_load="YES"
vfs.root.mountfrom="zfs:storich"
geom_mirror_load="YES"
autoboot_delay="1"
/etc/rc.conf
zfs_enable="YES"
keymap="german.iso"
hostname="Name des Servers"
defaultrouter="IP(v4)-Adresse des nächsten Routers (im C-Netz)"
ifconfig_em0="IP(v4)-Adresse des Servers (host) netmask 255.255.255.0"
sshd_enable="YES"
# Audit Deamon aktivieren
auditd_enable="YES"
# Packetfilter aktivieren
pf_enable="YES"
# Packetfilter Datei
pf_rules="/etc/pf.conf"
# Packetfilterlog aktivieren
pflog_enable="YES"
# host system is gateway for jails
gateway_enable="YES"
# syslogd an Hauptmaschine binden
syslogd_flags="-b IP(v4)-Adresse des Servers (host)"
- Wenn IPv6 verfügbar ist, müssen noch weitere Anpassung für die Nutzung von IPv6 eingetragen werden.
- Hilfreiche Seite für das Tunneln von ipv6 zu 4 Adressen
#Aktivierung des IPv6 Supports
ipv6_enable="YES"
ipv6_defaultrouter="<IPv6-Adresse des nächsten Routers>"
ipv6_ifconfig_em0="<IPv6-Adresse des Servers (host)> prefixlen 128"
# host system is gateway for jails with ipv6
ipv6_gateway_enable="YES"
/etc/resolv.conf
siehe #Erstellung der Liste für Nameserver
- Aus Sicherheitsgründen wurde hier nicht der orginale Dateiinalt hingeschrieben
/etc/ssh/sshd_config
siehe #Konfiguration von OpenSSH
/etc/crontab
siehe #Festlegung zur Automatisierung der Updates
/etc/security/audit_control
sieh #Festlegen der Grundeinstellungen der Audit-Unterstützung
/etc/pf.conf
siehe #Festlegen der Regeln für den Paket Filter
- Aus Sicherheitsgründen wurde hier nicht der orginale Dateiinalt hingeschrieben
/etc/login.conf
siehe #Anpassung zur Sprache und Zeichensatz
srs1337 ist die Bezeichnung für das System auf dem Server dicke Berta.
Betriebssystem
FreeNAS 9.3
Die Entscheidung für FreeNAS als Betriebssystem fiel bei der Intern:Server/Aktualisierung/2015.
- Im Übrigen war eigentlich FreeBSD i. V. m. bhyve vorgesehen. Es fehlte die Unterstützung von grub2-bhyve für die Hardware vom Server dicke Berta. freebsd-port:grub2-bhyve wäre aber notwendig für den Betrieb von Debian unter bhyve gewesen. Die Möglichkeit zum (ergänzenden) Betrieb von Debian (oder anderen verbreiteten Linux für Server) war eine der eigenen Anforderungen.
Installation von FreeNAS
Vorbereitung der Installation von FreeNAS
sonst übliche Vorbereitung der Installation von FreeNAS
Die (Vorbereitung der) Installation von FreeNAS[1] erfolgt eigentlich schlichtweg durch
- das [2]Beziehen von einer iso-Datei, welche schon als startfähig vorbereitet ist,
- das [3]Erstellen von einem Startmedium mit der iso-Datei und
- das Starten von dem Startmedium auf der Maschine, wo FreeNAS betrieben werden soll.
besondere Vorbereitung der Installation von FreeNAS
- besondere Bedingungen für die Installation von FreeNAS bei Server/srs1337
FreeNAS muss, entgegen des üblichen Prozedere, auf der Festplatte betrieben werden. Mangels des Zugriffes auf BIOS (Das Passwort für das BIOS von Server/dicke Berta ist nicht bekannt.) ist keine Setzen der bevorzugten Priorität (etwa für einen USB-Stick, wovon FreeNAS betrieben werden würde) möglich.
Auch ist das Betreiben des Betriebssystems auf einem USB-Stick "bescheiden". Die Haltbarkeit von einem USB-Stick für eine solche Verwendung erscheint nicht gut. Eine Ausfallsicherung, etwa durch Redundanz auf einem weiteren USB-Stick, erscheint nur bedingt sinnvoll.
- In Anbetracht der fehlenden Möglichkeit von einem Neustart von Server/dicke Berta mit der Priorität (festgelegt durch das BIOS) auf einen USB-Stick ist dies gar ausgeschlossen.
Ein Teil von allen Festplatten soll zum Betreiben und als Spiegel für das Betriebssystem genutzt werden. Das Prozedere beim Installieren von FreeNAS sieht aber vor ein gesamtes Gerät (Speichermedium) zu verwenden. In Anbetracht von 3 Festplatten zu je 500 GB erscheint das Verwenden einer gesamten Festplatte für das Betriebssystem unangemessen. Insbesondere gilt das beim Wunsch zum Spiegeln auf mindestens eine andere Gerät.
- besondere Erstellung eines Startmediums für die Installation von FreeNAS bei Server/srs1337
16 GB sollen für FreeNAS als Speicherplatz bereitgestellt werden.
Auf jede der 3 Festplatten sollen Speicherplatz für das Betreiben von FreeNAS mit geringer Ausfallsicherheit bereitgestellt werden.
Demnach wurde sich eine selbst passende iso-Datei erstellt.
- Zentral wurde dabei eigentlich nur die
install.sh
[4] modifiziert.
Durchführung der Installation von FreeNAS
2015-03-12 22:31
- First Boot
- SWAP hinzufügen
gpart add -t freebsd-swap -i 3 -s 8g da0
gpart add -t freebsd-swap -i 3 -s 8g da1
gpart add -t freebsd-swap -i 3 -s 8g da2
- ZFS Partitionen für Daten erstellen (Rest der Festplatten)
gpart add -t freebsd-zfs -i 4 -a 4k da0
gpart add -t freebsd-zfs -i 4 -a 4k da1
gpart add -t freebsd-zfs -i 4 -a 4k da2
- Systemupdate
- Reboot
- FreeNAS Einstellungen
- System/Informationen
- Enable powerd (Power Saving Daemon):
- Show console messages in the footer:
- MOTD banner: StuRa DickeBerta
- Root CA und CA erstellt
- Zpool für Daten erstellen
zpool create zroot raidz /dev/da0p4 /dev/da1p4 /dev/da2p4
zfs set checksum=sha256 zroot
zfs set compression=lz4 zroot
zfs create -o checksum=sha256 -o compression=lz4 -o mountpoint=/zroot/jails zroot/jails
- zpool struktur
- nicht
zfs create -o checksum=sha256 -o compression=lz4 -o mountpoint=/mnt freebsd-boot/mnt
- nicht
- zpool export
zpool export zroot
- per GUI jetzt importieren
- Storage -> Import Volume
- Smartmontools Hack
$EDITOR /usr/local/etc/smartd.conf
DEVICESCAN
- Logfiles umlinken
- System -> Systemdatasets -> zroot/ für Syslog/Database
- SSH auf FreeNAS
- ssh logon
chmod 0700 /root/.ssh
$EDITOR /root/.ssh/authorized_keys
- keys einfügen
chmod 0600 /root/.ssh/authorized_keys
- (per Web GUI) Services -> SSH -> Einstellung
- Advanced Mode
- Feld Extra options
- Advanced Mode
PubkeyAuthentication yes
- SSH Neustarten
Anpassungen nach der Installation von FreeNAS
/etc/sysctl.conf
# SysV Interprozesskommunikation security.jail.sysvipc_allowed=1
Versand von Mails von FreeNAS
- System
- Email
- From email:
- srs1337@stura…
- Outgoing mail server:
- mail.stura…
- …
- From email:
- Email
- Account
- Users
- View Users
- root
- E-mail:
- srs1337@stura…
- E-mail:
- root
- View Users
- Users
zsh als übliche Shell für root
- Account
- Users
- View Users
- root
- Shell:
- zsh
- Shell:
- root
- View Users
- Users
Dokumentation FreeNAS
besonders Nennenswertes zu FreeNAS
Dieser Abschnitt dient zur Benennung, gar Erklärung, von Belangen, die sich durch FreeNAS ergeben und auf Server/srs1337 nennenswert eingesetzt werden. Praktisch soll das auch eine kleine Einführung werden.
- virtuelle Instanzen
- spezielle Jails als Plugin (für FreeNAS)
- klassische einfach Jails (als FreeBSD)
- Instanzen bei der einzigen Jail mit VirtualBox
- Paketverwaltung
- pkg
- pbi
Anpassungen
Berichtigung vom Fehler wegen der fehlenden Datei /usr/local/www/freenasUI/static/favicon.ico
Beim Durchsehen vom Log (/var/log/*) gab es die open() "/usr/local/www/freenasUI/static/favicon.ico" failed (2: No such file or directory). Dieser "Schönheitsfehler" wurde sich gleich angenommen.
cd /usr/local/www/freenasUI/static/
ln -s freenas_favicon.ico favicon.ico
Bedienung
Beobachtung vom Gerät
Anzeigen der Temperatur aller einzelnen Prozessoren
sysctl dev.cpu.{0..$(expr $(sysctl -n hw.ncpu) - 1)}.temperature
dev.cpu.0.temperature: 49.0C dev.cpu.1.temperature: 45.0C dev.cpu.2.temperature: 47.0C dev.cpu.3.temperature: 43.0C
Administration
Administration per http
Viele Dienste zur Administration sind per http bzw. https verfügbar. Zum Schutz vor unerlaubten Zugriff sollen die Dienst nicht einfach erreichbar sein.
Dienst | interne Adresse | Zugangsdaten |
---|---|---|
dicke Berta#Integrated Management Module | 192.168.100.12:80 | ?!? |
#Administration FreeNAS | 192.168.100.112:443 | ?!? |
Server/srs1337/VirtualBox | 192.168.100.212:80 | ?!? |
Zum Erreichen der privaten Adressen für IPv4 (192.168.….…) muss eine entsprechende Verbindung zum Server/srs1337 hergestellt sein.
- bestimmte (betreffende) Verbindungen an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen bestimmten Port an localhost knüpfen
ssh -p <port-for-ssh-on-server> -L 10012:192.168.100.12:80 -L 10112:192.168.100.112:443 -L 10212:192.168.100.212:80 -i ~/.ssh/<id_srs1337> root@srs1337.stura.htw-dresden.de
- Eintragen der Konfigurationen (in ~/.ssh/config) für das übliche Verbindung per ssh mit Server/srs1337
$EDITOR ~/.ssh/config
Host srs1337 HostName <host> Port <port> User root IdentityFile ~/.ssh/<id_srs1337> LocalForward 10012 192.168.100.012:80 LocalForward 10112 192.168.100.112:443 LocalForward 10212 192.168.100.212:80
- einen (dynamische) Verbindung an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen lokalen Socket knüpfen
ssh -D <port-for-local-socket> -p <port-for-ssh-on-server> -i .ssh/<id_srs1337> root@<host>
- port-for-local-socket ist die (nahezu) frei wählbare Nummer für einen Port, der für einen Socket auf der lokale Maschine (von der sich auf den Server/srs1337 verbunden wird) für das Adressieren zum Eingang der Verbindung dienen soll.
- Verbindung per ssh wird mit wikipedia:de:SOCKS als Proxy verwendet.
- port-for-ssh-on-server ist die Nummer vom Port, der beim Server/srs1337 für ssh festgelegt wurde. Standardmäßig ist das Port 22.
- Wer ohnehin drauf ist, kann sich
grep Port /etc/sshd_config
kann sich die Konfiguration anschauen.
- Wer ohnehin drauf ist, kann sich
- .ssh/id_srs1337 ist der (nahezu) frei gewählte Ort der eigenen Datei mit dem ssh-key, dessen öffentlicher key auf dem Server/srs1337 abgelegt wurde.
- host ist die Adresse für IPv4 oder der hostname für den es einen entsprechenden Eintrag für DNS gibt.
- port-for-local-socket ist die (nahezu) frei wählbare Nummer für einen Port, der für einen Socket auf der lokale Maschine (von der sich auf den Server/srs1337 verbunden wird) für das Adressieren zum Eingang der Verbindung dienen soll.
- per ~/.ssh/config automatisiert bei jeder Verbindung (ssh srs1337)
Host srs1337 HostName <host> Port <port> User root IdentityFile ~/.ssh/<id_srs1337> DynamicForwarding <port-for-local-socket>
- web browser zum Nutzen der Verbindung mit dem lokal verknüpften Socket als Proxy per SOCKS anpassen
- Beispiel Mozilla Firefox
- Bei der Verbindungseinstellungenenglish Anpassungen vornehmen.
- Manuelle Proxy-Konfiguration: auswählen
- bei SOCKS-Host: localhost eintragen; auf der gleichen Zeile bei Port: die Nummer von $port-for-local-socket eintragen
- OK bestätigen
- Manuelle Proxy-Konfiguration: auswählen
Administration per vnc
Mit einem Programm für vnc, z. B. wikipedia:en:krdc, kann der Bildschirm (,die Tastatur, usw.) der virtuellen Maschine über erreicht und genutzt werden.
Server/srs1337/VirtualBox/srs29 | 192.168.100.212:9000 | ?!? |
- bestimmte (betreffende) Verbindungen an einen bestimmten Port per ssh mit einem eigenen ssh-key herstellen und an einen bestimmten Port an localhost knüpfen
ssh -p <port-for-ssh-on-server> -L 19212:192.168.100.212:9000 -i ~/.ssh/<id_srs1337> root@<host>
- vnc://localhost:19212
Administration FreeNAS
Aktualisierung
Es sollten der Prozess des Aktualisierens immer nach folgender Reihenfolge erfolgen:
| |||
Aktualisierung Jails | |||
Jail mit VirtualBox | Jail für ein plugin von FreeNAS | standardmäßige Jail | |
---|---|---|---|
Debian als virtuelle Maschine | |||
Verbinden per ssh
spuckt kernel fehler (aka kernelmonitoring)
schauen, ob irgendwelche dienste, die laufen sollten nicht mehr laufen
0 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'. zum live-debugging:
alte schule (statt journalctl)
oder
Kontrolle des Zustandes (power off) bei VirtualBox
|
|
| |
Aktualisierung FreeNAS | |||
System -> Update -> Update Neustart erfolgt automatisch nach dem Aktualisieren | |||
nach der Aktualisierung | |||
ISPConfig
|
Genau genommen sollten vor der Aktualisierung einer jeden Instanz eine Datensicherung gemacht werden. Das sollte mindestens mit einer geeignete Art zum Festhalten des letzten Standes (vor der Aktualisierung) geschehen. Die bequeme Möglichkeit zur Erstellung von einem Snapshot mit ZFS sollte genutzt werden. | |||
Dienste in Ruhe versetzen | |||
Jail mit VirtualBox | Jail für ein plugin von FreeNAS | standardmäßige Jail | |
---|---|---|---|
Debian als virtuelle Maschine | |||
|
|||
aktuellen (ruhenden) Stand festhalten | |||
#Aktualisierung Jails | |||
Dienst wieder in Bewegung setzen | |||
Eigentlich ist ein erneutes in Bewegung setzen überflüssig, denn im Szenario ist davon auszugehen, dass auch die #Aktualisierung FreeNAS vorgenommen wird. Zum Abschluss der #Aktualisierung FreeNAS wird ohnehin das (gesamte) System neu gestartet. Beim Neustart vom gesamten (System) werden folglich auch alle Jails neu gestartet. Für das Starten der einzelnen Jails ist der jeweilige Eintrag (welcher auch über die GUI vorgenommen werden kann) der Option autostart entscheidend. Ist die Option autostart angewählt, so wird die Jail auch nach dem Neustart vom (gesamten) System neu gestartet. Dennoch kann nachfolgend in diesem Abschnitt beschrieben werden, wie die einzelnen Jails und ihre Dienste nach dem #aktuellen (ruhenden) Stand festhalten wieder in Bewegung gesetzt werden (können). |
Jails
Bezeichnung von Jails
- Auch wenn es bei der Eingabe so scheint, dass dies möglich wäre, so sollte die Bezeichnung einer Jail (bei #FreeNAS 9.3 nie 88 Zeichen überschreiten. Warden, das Tool für das Management von Jails kann damit nicht umgehen. Es wird eine unnütze Jail (samt Dataset usw.) erstellt. (Im Übrigen ist aktuell noch fragwürdig wie solcher Schmutz wieder entfernt werden kann.)
Jail einrichten
Jail mit #Andministration per http einrichten
- Siehe auch
- FreeNAS:9.3:Adding Jails
- IPv4 default gateway
- 141.56.50.254
- IPv6 Autoconfigure
- angewählt
- sysctl
Bei Sysctls: können verschiedene Optionen für besonderes zu sysctl hinzugefügt werden. Bei der Verwendung von mehreren Optionen sind sie hintereinander weg ausschließlich mit ,
(Komma) trennt einzutragen.
allow.raw_sockets=true
allow.sysvipc=1
Jails außerhalb vom web user interface von FreeNAS verwalten
Achtung! Dieser Abschnitt beinhaltet ausschließlich "Hacks".
Beim #Betriebssystem FreeNAS (9) ist die Verwaltung von Jails über die das web user interface vorgesehen. Es ist (aber) bekannt, dass #Betriebssystem FreeNAS (9) warden
als Werkzeug zur Verwaltung von Jails benutzt. Praktisch kann auch warden
ohne das web user interface von FreeNAS benutzt werden. Dabei wird aber schnell über den Funktionsumfang von FreeNAS hinaus gearbeitet. Praktisch kann die Verwendung von warden
(als Werkzeug ohne die Benutzung vom web user interface von FreeNAS), dazu führen, dass die Jails nicht ordentlich in FreeNAS verwaltet (und demnach auch betrieben) werden können. (Etwa das Importieren und Exportieren, gar das Klonen, ist von FreeNAS so nicht vom Umfang an Funktionalitäten nicht angedacht. Etwa Einträge in der Datenbank von FreeNAS werden durch warden
nicht vorgenommen. Demnach gibt es Fehler beim web user interface. So können "manipulierte" Jails nicht über das web user interface verwaltet werden.)
Letztlich können die Jails nicht ordentlich über das web user interface verwendet werden. Alle Änderungen der Konfiguration der Jail muss über warden
erfolgen.
warden help
warden help get
Jail klonen
- zu klonende Jail stoppen
- zu klonende Jail exportieren
- Zum Klonen ist der der erstellte Export der zu klonenden Jail zu importieren.
- Es ist zwangsläufig eine andere Adresse für IPv4 anzugeben.
- Anderenfalls erfolgt eine Fehlermeldung.
- (In diesem Fall wir angenommen das die zu klonende Jail die Adresse für IPv4 141.56.50.123 hat (beziehungsweise hatte).)
- Anderenfalls erfolgt eine Fehlermeldung.
- Es ist zwangsläufig eine andere Adresse für IPv4 anzugeben.
ERROR: A Jail already exists with IP: 141.56.50.123/24
- (zu klonende Jail (für den weiteren Betrieb wieder) starten)
- geklonte Jail anpassen
- IP-Adresse?
- (usw.)?
- geklonte Jail starten (und Funktionalität testen)
- Einstellungen, die für die Funktion in der zu klonende Jail vorgenommen wurden, für den Betrieb der geklonte Jail anpassen (und Funktionalität testen)
- (die geklonten Jail nutzen, als ob es eine normale eigenständige Jail wäre)
Jail exportieren
Für das Exportieren von Jails wurde ein Ordner neuer Ordner erstellt. (Eigentlich wäre es clever gewesen ein eigenständiges Dataset (mit ZFS) zu erstellen).
mkdir zroot/export
Exportieren der Jail jail in das dafür vorgesehene Verzeichnis
- Achtung! Das Exportieren einer Jail kann längere Zeit dauern. (Praktisch wird auch die gesamte Jail gepackt. Allein das Packen dauert längere Zeit.)
warden export jail --dir=/zroot/export
Creating compressed archive of jail... Please Wait...
Jail importieren
Exportieren der Jail aus der Datei 'jail.wdn (Export der zu klonenden Jail) in eine geklonte Jail jail_clone
warden import jail.wdn --host=jail_clone
- oder mit der Bestimmung einer (nicht verwendeten) Adresse für IPv4
warden import jail.wdn --host=jail_clone --ipv4=141.56.50.115/24
importierte Jail zum Laufen bringen
Achtung! Dieser Abschnitt ist nicht ordentlich dokumentiert. Er ist die Zusammensuchen nach dem erfolgreichen Rumgehacke!
(erster - wohl erfolgloser - Versuch für das) Starten der geklonte Jail jail_clone
warden start jail_clone
warden start jail_clone Mounting user-supplied file-systems ifconfig: AUTOCONF: bad value jail -c path=/mnt/zroot/jails/jail_clone ip4.addr=141.56.50.123/24 ip6.addr=AUTOCONF/ host.hostname=jail_jail allow.raw_sockets=true persist jail: ip6.addr: not an IPv6 address: AUTOCONF ERROR: Failed starting jail with above command... Unmounting /mnt/zroot/jails/jail_clone/proc
(optionales) Starten einer beliebigen anderen (nicht geklonten) Jail (zum Lernen)
warden start uncloned-jail
warden start uncloned-jail Mounting user-supplied file-systems jail -c path=/mnt/zroot/jails/uncloned-jail name=uncloned-jail host.hostname=uncloned-jail allow.raw_sockets=true persist vnet=new Setting IPv4 address: 141.56.50.123/24 inet6_enable: YES -> YES ip6addrctl_enable: YES -> YES rtsold_enable: YES -> YES ifconfig_epair12b_ipv6: inet6 accept_rtadv auto_linklocal -> inet6 accept_rtadv auto_linklocal add net default: gateway 141.56.50.254 route: writing to routing socket: File exists add net default: gateway 141.56.50.254 fib 0: route already in table Starting jail with: /etc/rc rtsold not running? (check /var/run/rtsold.pid). Starting rtsold.
Abgefrickelt!
jail -c path=/mnt/zroot/jails/jail_clone name=jail_clone host.hostname=jail_clone allow.raw_sockets=true persist vnet=new
warden set vnet-enable jail_clone
warden set ipv4 jail_clone 141.56.50.123
(erneuter Versuch für das) Starten der geklonte Jail jail_clone
warden import start jail_clone
Plugins
Plugins einrichten
Plugins werden grundsätzlich als eigenständige Jail erstellt. Somit können sie auch als solche "normal" verwaltet werden. Zusätzlich haben Plugins die Funktionalität, dass der angebotene Dienst direkt über die Oberfläche von FreeNAS an- und abgeschaltet werden kann.
Probleme bei und durch das Einrichten von einem neuen Plugin
- Konflikt zu IP-Adressen durch die Verwendung der von FreeNAS automatisch vergebene IP-Adresse
Bei der Erstellung der Jail für das Plugin gibt es keine Möglichkeit die IP-Adresse festzulegen. Es wird die bei FreeNAS "fortlaufende" IP-Adresse verwendet. Das ist für die Verwendung beim StuRa nicht geeignet.
So kann es dazu kommen, dass bei der Erstellung von einem Plugin (auch wenn dieses nur getestet werden soll) eine feste IP-Adresse verwendet (vergeben) wird, die bereits von einer anderen Instanz verwendet wird. Beispielsweise folgt nach der IP-Adresse von srs2 141.56.50.2 (auf dem Server/srs1337) direkt die IP-Adresse von srd2 141.56.50.3. Demnach kommt es zu einem Konflikt bei der Erstellung eines neuen Plugins. Es muss der Jail vom Plugin eine freie IP-Adresse zugewiesen werden.
- Konflikt zu IP-Adressen wegen möglicher nicht direkt freier IP-Adressen
Leider ist nicht genau bekannt welche Bereiche es an IP-Adressen gibt, welchen Zweck sie haben und welche IP-Adressen sie umfassen. Daher: Obacht!
Storage
Trennung der Daten nach Zweck
- Hintergrund
Wünschenswert ist eine Trennung zwischen
- den Daten, die verwaltet werden und
- Daten der Benutzerinnen und Benutzer
- "Nutzdaten"
- Daten der Benutzerinnen und Benutzer
- den Daten mit denen verwaltet wird
- Daten für das Programm der
- "Systemdaten"
- Daten für das Programm der
. Insbesondere im Zusammenhang mit der Anwendung snapshot "will mensch das ja haben". Angenommen es muss, wegen Fehlern in Software, auf einen alten Stand der Version der Software zurückgegangen werden, sollten ja aber die Daten von den Benutzerinnen und Benutzern seit dem alten Stand nicht einfach verloren sein. Da nicht üblich ist, dass mit einer nachfolgenden Version der Software die Daten der Benutzerinnen und Benutzer wesentlich anderes verwaltet werden (vielleicht gar einen neues Prinzip des Verwalten der Daten angewendet wird), können sie nahezu unabhängig betrachtet werden. Demnach können (sollten) sie in unterschiedlichen Datensätzen verwaltet werden.
- Erstellen eines eigenen Datensatzes (für ZFS) für die Daten des StuRa
- Achtung
- Die nachfolgend benannte Art und Weise gilt nicht als Ideal.
- Es sollte die grafische Oberfläche (siehe #Administration per http) verwendet werden.
- zroot ist die Bezeichnung des Pools (ZFS)
zfs create -o checksum=sha256 -o compression=lz4 zroot/data
Trennung der Daten für innerhalb von Server/Cloud
- Erstellen von zwei Datensätzen für die Instanz ownCloud (Server/Cloud)
- Beim Pool (ZFS) zroot wurde bereits ein Datensatz data erstellt, wo nun weitere spezielle Datensätze erstellt werden können.
zfs create -o checksum=sha256 -o compression=lz4 zroot/data/owncloud
zfs create -o checksum=sha256 -o compression=lz4 zroot/data/owncloud/media
- owncloud_1 ist die Bezeichnung der Jail für die Jail als Plugin owncloud für FreeNAS.
mv /mnt/zroot/jails/owncloud_1/media /mnt/zroot/jails/owncloud_1/media_DATEN_15.05.2015
mkdir /mnt/zroot/jails/owncloud_1/media
chown www:www /mnt/zroot/jails/owncloud_1/media
chmod 0770 /mnt/zroot/jails/owncloud_1/media
- per WebGUI dann zroot/data/owncloud/media nach /mnt/zroot/jails/owncloud_1/media, mit nullfs, mounten lassen
Datasets
- Achtung
- Es gibt eine Vielzahl von Datasets, die in diesem Abschnitt bisher noch nicht benannt und erklärt wurde.
- Gern kann das geändert werden. Dazu sollen (mindestens grob) die Datasets benannt und ihr Dasein und der Umgang mit ihnen erklärt werden.
Dataset zroot/lpreserver
lpreserver dient als Dataset für die Replikation für von Datasets (auch gesamten Pools) mit ZFS. Die Bezeichnung orientiert sich am Befehl lpreserver
, womit die Replikation einfach möglich ist.
Exemplarisch und zur Kontrolle der Funktionalität findet dort die Replikation eines Pools regelmäßig statt. Auch andere Menschen, die ZFS verwenden mögen sich gern an der stetigen Kontrolle aktiv beteiligen.
Die dazugehörigen Datasets mögen nach den Bezeichnungen der Accounts von den einzelnen Benutzerinnen und Benutzern von srs2 bezeichnet werden.
Längerfristig wäre das Verbinden mit einer Jail (Verwendung eines Datasets in einer Jail) wünschenswert.
Dataset zroot/mig
Intern:Server/cluster#ZFS TrueNAS offline
Dataset zroot/MIGRATION
Intern:Server/cluster#ZFS TrueNAS offline