Virtueller Arbeitsplatz: Unterschied zwischen den Versionen

Aus /usr/space Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 160: Zeile 160:
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!
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
== AMD Grafikkarten-Probleme ==
AMD Karten haben offenbar einen internen Bug der die Karte beim Weiterleiten nicht mehr richtig resettet. Das gibt schöne unerklärliche Fehler im Clinet, es kann auch der Host abstürzen. Man suche "AMD GPU Reset Proxmox", folgender Code dafür:


*tun/tap Device dem Container hinzufügen mittels der Zeile:  
<nowiki># Get latest Proxmox kernel headers:
*Proxmox Server* /etc/pve/lxc/102.conf
apt install pve-headers
lxc.mount.entry: /dev/net/tun dev/net/tun none bind,create=file


*Containert HERUNTERFAHREN, Starten.
# Did that fail? If so make sure you have Proxmox repository set up properly! https://pve.proxmox.com/wiki/Package_Repositories


* Abhängigkeiten erstellen
# Get required build tools:
apt-get install openvpn bridge-utils easy-rsa
apt install git dkms build-essential


cp -r /usr/share/easy-rsa/ /etc/openvpn/easy-rsa
# Perform the build:
./easyrsa init-pki
git clone https://github.com/gnif/vendor-reset.git
./easyrsa build-ca nopass
cd vendor-reset
./easyrsa build-server-full <servername> nopass
dkms install .
./easyrsa gen-dh


cd pki
# Enable vendor-reset to be loaded automatically on startup:
cp ca.crt dh.pem private/<servername>.key issued/<servername>.crt  /etc/openvpn/server/
echo "vendor-reset" >> /etc/modules
update-initramfs -u


 
# Reboot to load the module:
server.conf:
shutdown -r now</nowiki>
 
# Port Number.
port 11337
# TCP or UDP server.
proto udp
 
# Interface type, TUN or TAP.
dev tap0
 
# Certificates.
ca ca.crt
cert vpn.local.crt
key vpn.local.key
# Diffie hellman parameters.
dh dh.pem
 
# Subnet to use for OpenVPN Connections.
#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
 
# Keepalive: send ping every 10 seconds, tunnel down after 120 seconds no response.
keepalive 10 120
 
# LZO Compression for the tunnel.
comp-lzo
 
# Drop privileges to user/group nobody.
user nobody
group nogroup
 
# Makes the link more resistant to connection failures.
persist-key
persist-tun
 
# 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
 
# OpenVPN Status Log files.
status openvpn-status.log
 
# LOG FILE VERBOSITY:
# 0 is silent, except for fatal errors
# 4 is reasonable for general usage
# 5 and 6 can help to debug connection problems
# 9 is extremely verbose
verb 3
##############################################################
 
bridge_up.sh:
bridge_up
#!/bin/bash
 
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################
 
# Define Bridge Interface
br="br0"
 
# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"
 
# Define physical ethernet interface to be bridged
# 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:
#!/bin/bash
 
####################################
# Tear Down Ethernet bridge on Linux
####################################
 
# Define Bridge Interface
br="br0"
 
# 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

Version vom 22. Oktober 2021, 18:35 Uhr

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!


AMD Grafikkarten-Probleme

AMD Karten haben offenbar einen internen Bug der die Karte beim Weiterleiten nicht mehr richtig resettet. Das gibt schöne unerklärliche Fehler im Clinet, es kann auch der Host abstürzen. Man suche "AMD GPU Reset Proxmox", folgender Code dafür:

# Get latest Proxmox kernel headers: apt install pve-headers # Did that fail? If so make sure you have Proxmox repository set up properly! https://pve.proxmox.com/wiki/Package_Repositories # Get required build tools: apt install git dkms build-essential # Perform the build: git clone https://github.com/gnif/vendor-reset.git cd vendor-reset dkms install . # Enable vendor-reset to be loaded automatically on startup: echo "vendor-reset" >> /etc/modules update-initramfs -u # Reboot to load the module: shutdown -r now