Virtueller Arbeitsplatz

Aus /usr/space Wiki
Wechseln zu: Navigation, Suche

Doku meines Netzwerkaufbaus

Proxmox - Virtualisierung

Backup-Temp setzen und dem ACL geben. Superwichtig - sonst funktioniert das Backup von Containern nicht weil das proxmox root acl deaktiviert hat ?!

zfs create rpool/vztmp zfs set acltype=posixacl rpool/vztmp nano /etc/vzdump.conf tmpdir: /rpool/vztmp

ZFS

Deduplikation soll NICHT sinnvoll sein?

Nützliche Einstellungen: compression gzip atime off relatime off

Verschlüsseltes Volume mit Passwort: encryption aes-256-ccm keylocation prompt keyformat passphrase

zfs create -o encryption=aes-256-ccm -o keylocation=prompt -o keyformat=passphrase rpool/data/vm-130-disk-1-enc

Mount nur möglich mittels -l: zfs mount rbackup/privat -l

Bestehenden Tank zu einem Mirror machen: https://blog.fosketts.net/2017/12/11/add-mirror-existing-zfs-drive/ zpool attach rpool /dev/disk/by-id/ata-CT1000MX500SSD1_1845E1D61131-part3 /dev/disk/by-id/ata-Samsung_SSD_860_QVO_2TB_S4CYNF0MB06216B-part3 zpool attach <poolname> <bestehende Disk> <neue Disk> zpool status <- gibt uns die Infos dazu aus

Verschlüsselte VM

Wir können über Umwege die Festplatte einer virtuellen Maschine verschlüsseln: 1) Virtuelle Maschine erstellen, nicht booten! 2) ZFS Volume per Kommandozeile löschen: zfs destroy zssd/vm-121-disk-0 3) ZFS Volume neu erstellen mit Key (und 200gb Platte): zfs create -o encryption=aes-256-ccm -o keylocation=prompt -o keyformat=passphrase -V 200g zssd/vm-121-disk-0 4) ZFS Volume muss bei Reboot des Servers vor dem Start der VM entschlüsselt werden, ansonst freezed der Start-Befehl der VM in Proxmox. Shell: zfs mount -l zssd/vm-121-disk-0

Ich hab mir irgendwann den ZFS Auto-Mount zerschossen, wodurch die volumes nicht mehr sinnvoll gemountet wurden und die VMs nicht gestartet werden konnten. Folgendes hilft:

  • Die betroffenen Verzeichnisse unmounten
  • Falls die Verzeichnisse jetzt nicht verschwunden sind löschen (Files wurden falsch geschrieben, er weigert sich damit zu mounten weil "not empty"
  • zpool set cachefile=/etc/zfs/zpool.cache <pool> für alle Pools ausführen, erstellt den cache neu
  • update-initramfs -k all -u
  • reboot -> läuft wieder

Bessere Methode:

Verschlüsselten Speicherplatz erstellen Damit erben neu angelegte Maschinen automatisch den Schlüssel

  • ZFS Volume verschlüsselt anlegen: zfs create -o encryption=aes-256-ccm -o keylocation=prompt -o keyformat=passphrase zssd/crypt
  • Rechenzentrum -> Storage -> Hinzufügen -> ZFS
  • Verschlüsseltes Volume wählen, Maschinen dort anlegen
  • VM´s können erst gestartet werden nachdem das volume entschlüsselt wurde, hab mir dazu ein Script angelegt mit folgenden Zeilen:

zfs mount zssd/crypt -l # fragt nach dem Passwort, es reicht wenn das Root-Volume entschlüsselt wird zfs mount zssd/crypt/subvol-101-disk-0 -O # wird ein Container verschlüsselt muss der separat angeführt werden, proxmox mountet die nicht selbstständig beim Start! -O lässt in "non-empty Directorys" mounten, ohne dem gibts einen Fehler

Windows 10 Arbeitsplatz

Lizenzübertragung Win7 -> 10

Wir können unser Win10 aktivieren indem wir uns ein "Ticket" von einer >am selben Rechner< aktivierten Win7 Version holen, Auszug aus folgender Seite: https://www.heise.de/forum/heise-online/News-Kommentare/Und-noch-ein-Trick-weiterhin-kostenlos-an-Windows-10-zu-kommen/Win10-Aktivierung-gatherosstate-exe-Genuineticket-funzt-immer-noch-Telemetrie/posting-29686180/show/

Wer eine gültige Win7 Lizenz hat: gatherosstate.exe als Administrator ausführen unter einem aktivierten Win7 mit Lizenz Zu finden im Ordner des Win10 Installationsmediums: \x86\sources\gatherosstate.exe \x64\sources\gatherosstate.exe Ein paar Sekunden warten, bis Ticket erstellt wurde. Das Genuineticket.xml unter Windows 10 dann kopieren nach: C:\Programdata\Microsoft\Windows\Clipsvc\Genuineticket\


!Achtung! Böse Zungen behaupten dass es so möglich ist aus einer gecrackten Win7 Installation einen gültigen Win10 Key zu erhalten. Das wäre natürlich illegal, auch wenn die Aktivierung damit problemlos funktioniert!

Unnötigen Win10 Mist entfernen

Das sogenannte Decrapifier Script entfernt auf einer jungfräulichen Win10 Installation sämtliches unerwünschtes Windows Zubehör. Achtung - löscht auch sämtliche Benutzerdaten! https://community.spiceworks.com/scripts/show/4378-windows-10-decrapifier-18xx-19xx

Ich führe das gerne mit -clearstart aus, damit wird auch das Startmenü bereinigt.


Remotedesktop-Verbesserung

gpedit.msc ausführen Computerkonfiguration -> Administrative Vorlagen -> Windows-Komponenten -> Remotedesktopdienste -> Remotedesktopsitzungs-Host -> Umgebung für Remotesitzung sowie RemoteFX für windows Server

Hier aktivieren wir alles was die Qualität raufschraubt und die Netzwerknutzung verringert (weniger Daten = weniger Latenz lautet die Theorie). Bringt natürlich nur was wenn man im LAN verbunden ist, welche Option wozu müsste mal getestet werden. Danach ist es jedenfalls möglich über Remotedesktop nahezu Lagfrei 3D-CAD auszuführen!

Ganz wichtig ist die Einstellung "Hardwareadapter für alle Remotedesktopdienste-Sitzungen verwenden". Damit erlauben wir die Nutzung unserer guten teuren Grafikkarte fürs Zeichnen über RDP. Zu sehen ist das im Task-Manager bzw. Ressourcen-Monitor, wo die Auslastung der GPU angezeigt wird. Außerdem gibts noch einige Hardwarebeschleuniger und sonstige Codecs zu aktivieren.

Hier meine Liste, ohne Gewähr, *machmicheinklappbar* Einstellung Status Kommentar RemoteFX für Windows Server 2008 R2 Maximale Farbtiefe einschränken Deaktiviert Nein Entfernen des Remotedesktophintergrunds erzwingen Nicht konfiguriert Nein Hardwaregrafikadapter für alle Remotedesktopdienste-Sitzungen verwenden Aktiviert Nein Maximale Bildschirmauflösung begrenzen Aktiviert Nein Anzahl Überwachungen beschränken Aktiviert Nein Element "Trennen" aus dem Dialog "Herunterfahren" entfernen Nicht konfiguriert Nein Eintrag "Windows-Sicherheit" aus dem Startmenü entfernen Nicht konfiguriert Nein Verwendung erweiterter RemoteFX-Grafiken für RemoteApp Aktiviert Nein H.264/AVC 444-Grafikmodus für Remotedesktopverbindungen priorisieren Aktiviert Nein H.264/AVC-Hardwarecodierung für Remotedesktopverbindungen konfigurieren Aktiviert Nein Komprimierung für RemoteFX-Daten konfigurieren Aktiviert Nein Bildqualität für adaptive RemoteFX-Grafik konfigurieren Aktiviert Nein RemoteFX-Codierung für RemoteFX-Clients für Windows Server 2008 R2 SP1 aktivieren Aktiviert Nein Adaptive RemoteFX-Grafiken konfigurieren Aktiviert Nein WDDM-Grafiktreiber für Remotedesktopverbindungen verwenden Aktiviert Nein Ein Programm beim Herstellen der Verbindung ausführen Nicht konfiguriert Nein Immer Desktop bei Verbindungsherstellung anzeigen Nicht konfiguriert Nein


Wichtig, im RDP Client Optionen -> Leistung -> Dauerhafte Bitmapzwischenspeicherung aktivieren/deaktivieren. Die Einstellung verändert die schnelle Reaktion beim vollständigen Bildschirminhalt-Aktualisieren (drehen vom ganzen CAD-Modell)

GPU-Passthrough

https://pve.proxmox.com/wiki/Pci_passthrough

Das meiste ist unnötig, möglicherweise auch das laden der IOMMU: /etc/default/grub Intel: GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on" AMD: GRUB_CMDLINE_LINUX_DEFAULT="amd_iommu=on" update-grub

Bei neuen Versionen mit ZFS-Root und EFI wird nicht grub verwendet, stattdessen hier eintragen: /etc/kernel/cmdline pve-efiboot-tool refresh https://pve.proxmox.com/pve-docs/chapter-sysadmin.html#sysboot

Module laden mittels (zuerst prüfen ob die nicht schon geladen sind): nano /etc/modules vfio vfio_iommu_type1 vfio_pci vfio_virqfd


Mit dem stock Kernel hat das jetzt schon funktioniert, nach einem Update auf den neuesten war folgender Schritt notwendig, mit der frischen Installation rennts wieder ohne:

Device und Vendor ID finden: lspci -> Graka Suchen und die Nummer für den nächsten Befehl suchen: 09:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere [Radeon RX 470/480] (rev e7) 09:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]

Folgend die gefundene Nummer einsetzen: lspci -n -s 09:00 09:00.0 0300: 1002:67df (rev e7) 09:00.1 0403: 1002:aaf0

Eines ist die GraKa, das andere das HDMI Sound device, wir wollen beide weiterleiten:

echo "options vfio-pci ids=1002:67df,1002:aaf0" > /etc/modprobe.d/vfio.conf

Reboot - fertig

!!Wenn das unsere einzige GraKa war wird die Bildschirmausgabe bei "Reading all physical devices" hängen bleiben! Das ist KEIN Freeze, System bootet ganz normal weiter, aber die Grafikkarte ist nicht mehr fürs System nutzbar!


Sobald das funktioniert hat bootet er in der server-Konsole auf einen schwarzen Bildschirm - die reale grafikkarte ist jetzt display 1! Entweder vor den Monitor setzen oder davor Remotedeskop freischalten!

OpenVPN-Server

Wir erstellen einen OpenVPN Server mit einer Netzwerkbrücke ins lokale LAN (10.0.0.2) Zugriff über Port forwarding und DynDNS Client IP wird dabei vom vpn Server vergeben, Achtung das darf mit dem lokalen DHCP nicht kollidieren!

  • Priviligierten Container mit Ubuntu erstellen
  • tun/tap Device dem Container hinzufügen mittels der Zeile:
  • Proxmox Server* /etc/pve/lxc/102.conf

lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file

  • Containert HERUNTERFAHREN, Starten.
  • Abhängigkeiten erstellen

apt-get install openvpn bridge-utils easy-rsa

cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa ./easyrsa init-pki ./easyrsa build-ca nopass ./easyrsa build-server-full <servername> nopass ./easyrsa gen-dh

cd pki cp ca.crt dh.pem private/<servername>.key issued/<servername>.crt /etc/openvpn/server/


server.conf:

  1. Port Number.

port 11337

  1. TCP or UDP server.

proto udp

  1. Interface type, TUN or TAP.

dev tap0

  1. Certificates.

ca ca.crt cert vpn.local.crt key vpn.local.key

  1. Diffie hellman parameters.

dh dh.pem

  1. Subnet to use for OpenVPN Connections.
  2. server 10.8.0.0 255.255.255.0

server-bridge 10.0.0.2 255.255.255.0 10.0.0.20 10.0.0.99

  1. Keepalive: send ping every 10 seconds, tunnel down after 120 seconds no response.

keepalive 10 120

  1. LZO Compression for the tunnel.

comp-lzo

  1. Drop privileges to user/group nobody.

user nobody group nogroup

  1. Makes the link more resistant to connection failures.

persist-key persist-tun

  1. Username and Password authentication.

client-cert-not-required username-as-common-name plugin /usr/lib/x86_64-linux-gnu/openvpn/plugins/openvpn-plugin-auth-pam.so login

  1. OpenVPN Status Log files.

status openvpn-status.log

  1. LOG FILE VERBOSITY:
  2. 0 is silent, except for fatal errors
  3. 4 is reasonable for general usage
  4. 5 and 6 can help to debug connection problems
  5. 9 is extremely verbose

verb 3

bridge_up.sh:

bridge_up
  1. !/bin/bash
  1. Set up Ethernet bridge on Linux
  2. Requires: bridge-utils
  1. Define Bridge Interface

br="br0"

  1. Define list of TAP interfaces to be bridged,
  2. for example tap="tap0 tap1 tap2".

tap="tap0"

  1. Define physical ethernet interface to be bridged
  2. with TAP interface(s) above.

eth="eth0" eth_ip="10.0.0.2" eth_netmask="255.255.255.0" eth_broadcast="10.0.0.255"

for t in $tap; do

   openvpn --mktun --dev $t

done

brctl addbr $br brctl addif $br $eth

for t in $tap; do

   brctl addif $br $t

done

for t in $tap; do

   ifconfig $t 0.0.0.0 promisc up

done

ifconfig $eth 0.0.0.0 promisc up

ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast

bridge_down.sh:

  1. !/bin/bash
  1. Tear Down Ethernet bridge on Linux
  1. Define Bridge Interface

br="br0"

  1. Define list of TAP interfaces to be bridged together

tap="tap0"

ifconfig $br down brctl delbr $br

for t in $tap; do

   openvpn --rmtun --dev $t

done

client.conf:

client auth-user-pass dev tap proto udp remote <server> <port> resolv-retry infinite nobind

persist-key persist-tun ca ca.crt comp-lzo verb 3