299 lines
15 KiB
Markdown
299 lines
15 KiB
Markdown
# System-Konfiguration
|
|
|
|
## Host-Hardware
|
|
- **CPU:** Intel Core i9-14900HX
|
|
- **Hostname:** kr-nb-1003
|
|
|
|
## Festplatten
|
|
|
|
### nvme0n1 (2 TB) — Ventoy
|
|
- `nvme0n1p1` — Ventoy NTFS-Partition (VMs), UUID: `98FA5A9DFA5A7808`, Label: "Ventoy"
|
|
- `nvme0n1p2` — VTOYEFI (FAT16), UUID: `3105-B091`
|
|
- Unter Windows als `D:\` verfügbar, unter Linux als `/run/media/chk/Ventoy/`
|
|
|
|
### nvme1n1 (1 TB) — Windows
|
|
- `nvme1n1p1` — BOOT/EFI (FAT32), UUID: `9EAB-CAFA`
|
|
- `nvme1n1p2` — MSR (reserviert)
|
|
- `nvme1n1p3` — Windows (NTFS), UUID: `D086AC4D86AC363E`, Label: "Windows" — Schnellstart deaktiviert
|
|
- `nvme1n1p4` — Recovery (NTFS)
|
|
- Mountpoint unter Linux: `/mnt/windows`
|
|
|
|
## CachyOS VM (über Ventoy gebootet)
|
|
|
|
- **OS:** CachyOS (Arch-basiert, rolling release)
|
|
- **Kernel:** linux-cachyos (PREEMPT_DYNAMIC) + linux-cachyos-lts
|
|
- **Virtualisierung:** VirtualBox VM
|
|
- 14 vCPUs, 12 GB RAM
|
|
- 250 GB Disk (sda), BTRFS mit Subvolumes
|
|
- zram-Swap (11,6 GB)
|
|
- **Desktop:** KDE auf Wayland
|
|
- **Shell:** fish (Login-Shell ist zsh)
|
|
- **Init:** systemd (mit plymouth)
|
|
- **Sprache:** Deutsch
|
|
|
|
### SSH-Keys (gemeinsam mit Windows)
|
|
- Quelle: `C:\Users\d-chrka\.ssh\` (unter Linux: `/run/media/chk/Windows/Users/d-chrka/.ssh/`)
|
|
- Kopiert nach: `~/.ssh/` (CachyOS)
|
|
- **Keys:** `id_ed25519`, `chrka_ed25519`, `id_rsa` (jeweils mit `.pub`)
|
|
- Bei Änderungen auf einer Seite müssen die Keys manuell synchronisiert werden
|
|
- **known_hosts fehlt nach Ersteinrichtung** — Die Keys werden von Windows kopiert, aber `known_hosts` nicht. SSH-Verbindungen schlagen mit "Host key verification failed" fehl, bis die Host-Keys manuell hinzugefügt werden (z.B. `ssh-keyscan -p 2211 gitssh.straso.com >> ~/.ssh/known_hosts`)
|
|
|
|
### Git-Konfiguration
|
|
- **user.name:** Christian Kauer
|
|
- **user.email:** c.kauer@krah-gruppe.de
|
|
- Übernommen aus der Windows-Konfiguration (`/run/media/chk/Windows/Users/d-chrka/.gitconfig`)
|
|
|
|
### OneDrive (rclone bisync)
|
|
- **Paket:** `rclone` (über pacman)
|
|
- **Remote:** `onedrive:` (Typ: OneDrive Business, Drive: "Dokumente")
|
|
- **SharePoint-URL:** `https://krahgruppe-my.sharepoint.com/personal/c_kauer_krah-gruppe_de1/Documents`
|
|
- **Synchronisierter Ordner:** `onedrive:cachyos_windows_share` ↔ `~/OneDrive/cachyos_windows_share`
|
|
- **Modus:** `bisync` (bidirektional) — Änderungen werden in beide Richtungen synchronisiert
|
|
- **Automatisierung:** systemd-User-Timer (`rclone-onedrive.timer`), alle 10 Minuten
|
|
- Service: `~/.config/systemd/user/rclone-onedrive.service`
|
|
- Timer: `~/.config/systemd/user/rclone-onedrive.timer`
|
|
- **Ersteinrichtung:** `rclone bisync ... --resync` nötig um Baseline zu erstellen
|
|
- **Hinweis:** `onedrive-abraunegg` (nativer Client) wurde ebenfalls installiert, aber nicht konfiguriert — OAuth-Redirect wurde vom Browser als Phishing blockiert
|
|
|
|
### Sophos SSL VPN
|
|
|
|
- **Server:** `rcdro1.krah-gruppe.de:8443` (UDP)
|
|
- **Benutzer:** `d-chrka@internal.lan` (AD-User, nicht `c.kauer@krah-gruppe.de`)
|
|
- **Verschlüsselung:** AES-128-CBC, Auth SHA256
|
|
- **Authentifizierung:** Zertifikat + Benutzername/Passwort + 2FA (OTP wird ans Passwort angehängt)
|
|
- **CA:** Landata It-Solutions, Olpe (Sophos_CA_C330ACYPTCKJ3CA, gültig bis 2036-12-31)
|
|
- **Client-Zertifikat:** muss auf `d-chrka@internal.lan` ausgestellt sein (gültig bis 2036-12-31)
|
|
- **Funktionierendes Profil:** `sslvpn-fixed.ovpn` (vom Testgerät DR-NB-0142 übernommen)
|
|
- **Paket:** `networkmanager-openvpn`
|
|
|
|
#### Einrichtung unter Linux (NetworkManager)
|
|
|
|
1. Profil importieren: `nmcli connection import type openvpn file sslvpn-fixed.ovpn`
|
|
2. **Wichtig — Split-Tunneling aktivieren:** IPv4 → Routes → "Use this connection only for resources on its network" (Häkchen setzen), sonst geht aller Traffic durch den Tunnel und Internet fällt aus
|
|
3. **DNS-Routing konfigurieren** — ohne diesen Schritt werden Firmen-Hostnamen nicht aufgelöst (systemd-resolved routet DNS-Queries sonst über den lokalen Router statt über den VPN-Tunnel):
|
|
```bash
|
|
nmcli connection modify sslvpn-fixed ipv4.dns-search "~krah-gruppe.de,~internal.lan,~krah.intranet.de,~hirsau.seuffer,~resistec.pri,~krahicenet.local"
|
|
nmcli connection modify sslvpn-fixed ipv4.dns 172.21.20.201
|
|
```
|
|
Das `~`-Prefix markiert die Domains als Routing-Domains, sodass systemd-resolved Queries für diese Domains über `tun0` (172.21.20.201) schickt.
|
|
4. Verbinden: `nmcli connection up sslvpn-fixed`
|
|
|
|
#### Hinweise zum .ovpn-Profil (Sophos-Download vs. funktionierende Version)
|
|
|
|
Das vom Sophos-Portal heruntergeladene Profil (`sslvpn-c.kauer@krah-gruppe.de-client-config_V2-clients.ovpn`) funktioniert **nicht** unter Linux. Entscheidende Unterschiede zur funktionierenden `sslvpn-fixed.ovpn`:
|
|
|
|
| Problem | Original-Download | Fixed |
|
|
|---|---|---|
|
|
| **Client-Zertifikat** (Hauptursache) | Ausgestellt auf `c.kauer@krah-gruppe.de` | Ausgestellt auf `d-chrka@internal.lan` |
|
|
| `route remote_host ...` | Aktiv → NM-Import schlägt fehl | Auskommentiert |
|
|
| `script-security 2` | Fehlt | Vorhanden |
|
|
|
|
Die Firewall authentifiziert über AD als `d-chrka@internal.lan`. Ein Zertifikat für `c.kauer@krah-gruppe.de` wird mit `AUTH_FAILED` abgelehnt (sichtbar im Firewall Log Viewer unter "SSL VPN Authentication"). Die Original-Downloads (V2/V3) vom Sophos-Portal liegen weiterhin unter `~/OneDrive/cachyos_windows_share/`, werden aber nicht verwendet.
|
|
|
|
### DNS-Konfiguration (Split-DNS: Firmen-DNS + öffentlicher DNS)
|
|
|
|
- **Problem:** Die Firmen-DNS-Server (`172.21.20.201/202/210`), die via DHCP vom VirtualBox-Host kommen, können bestimmte CNAME-Ketten nicht vollständig auflösen (z.B. `streams.radio21.de` → `streamurls.streamabc.link` → NXDOMAIN). Betroffen sind u.a. Audio-Streaming-Dienste.
|
|
- **Ursache:** Die Sophos-Firewall/DNS-Resolver des Firmennetzwerks filtert oder blockiert bestimmte Domains (`.streamabc.link`, `.streamabc.net`).
|
|
- **Lösung:** Split-DNS via `systemd-resolved` — Firmen-Domains gehen zum Firmen-DNS, alles andere zu öffentlichen DNS-Servern.
|
|
- **Wichtig:** Alle DNS-Server auf einem Link zu mischen funktioniert **nicht** — `systemd-resolved` probiert bei NXDOMAIN nicht den nächsten Server. Split-DNS erfordert getrennte Scopes (Link vs. Global).
|
|
|
|
#### 1. Öffentlicher DNS als globaler Default
|
|
- **Datei:** `/etc/systemd/resolved.conf.d/public-dns.conf`
|
|
```ini
|
|
[Resolve]
|
|
DNS=9.9.9.9#dns.quad9.net 1.1.1.1#cloudflare-dns.com
|
|
```
|
|
```bash
|
|
printf '[Resolve]\nDNS=9.9.9.9#dns.quad9.net 1.1.1.1#cloudflare-dns.com\n' | sudo tee /etc/systemd/resolved.conf.d/public-dns.conf
|
|
sudo systemctl restart systemd-resolved
|
|
```
|
|
|
|
#### 2. Firmen-DNS nur für Firmen-Domains (Routing-Domains auf der Kabelverbindung)
|
|
```bash
|
|
nmcli connection modify "Kabelgebundene Verbindung 1" ipv4.dns-search "~krah-gruppe.de,~internal.lan,~krah.intranet.de,~hirsau.seuffer,~resistec.pri,~krahicenet.local"
|
|
nmcli connection up "Kabelgebundene Verbindung 1"
|
|
```
|
|
|
|
#### Resultat
|
|
| Domain | DNS-Server | Quelle |
|
|
|---|---|---|
|
|
| `*.krah-gruppe.de`, `*.internal.lan` etc. | 172.21.20.201 (Firmen-DNS via DHCP) | Link-Routing-Domains |
|
|
| Alles andere | 9.9.9.9, 1.1.1.1 (Quad9, Cloudflare) | Globaler DNS (resolved.conf) |
|
|
|
|
- **VPN-Koexistenz:** Wenn `sslvpn-fixed` aktiv ist, übernehmen die VPN-Routing-Domains auf `tun0` den Firmen-DNS für interne Auflösung — gleiche Domains, anderer Link
|
|
|
|
### Sophos Endpoint (Protection for Linux)
|
|
|
|
- **Paket:** Sophos Protection for Linux (SPL), installiert unter `/opt/sophos-spl`
|
|
- **Service:** `sophos-spl.service` (systemd)
|
|
- **Sophos Central:** Gerät registriert als `kr-nb-1003`, Online
|
|
- **Kernel-Einschränkung:** RuntimeDetections-Plugin unterstützt max Kernel 6.18.x — erfordert `linux-cachyos-lts` (6.18.19). Der reguläre Kernel (6.19.x) ist zu neu und führt zu `FATAL Kernel version check failed`.
|
|
- **Default-Kernel:** LTS in GRUB als Default setzen: `GRUB_DEFAULT="gnulinux-advanced-...-lts-advanced-..."` in `/etc/default/grub`
|
|
- **SafeStore:** Verzeichnis `/opt/sophos-spl/plugins/av/var/safestore/` fehlte nach Installation, manuell angelegt
|
|
|
|
### DataGrip (JetBrains)
|
|
|
|
- **Config:** `~/.config/JetBrains/DataGrip2025.3/` (Einstellungen, Datasources, Konsolen, JDBC-Treiber, Keymaps)
|
|
- **Projekte:** `~/DataGripProjects/` (SQL-Konsolen und Scratch-Dateien pro Datasource)
|
|
- **Passwörter:** verschlüsselt in `c.kdbx`, nicht portierbar — müssen nach Migration neu eingegeben werden
|
|
|
|
#### Migration von Rechner A nach B
|
|
|
|
```bash
|
|
# Auf Rechner B:
|
|
# 1. Config kopieren (Windows → Linux)
|
|
cp -r "<Windows>/Users/<user>/Anwendungsdaten/JetBrains/DataGrip2025.3/"* ~/.config/JetBrains/DataGrip2025.3/
|
|
|
|
# 2. Projekte kopieren
|
|
cp -r "<Windows>/Users/<user>/DataGripProjects" ~/DataGripProjects
|
|
|
|
# Linux → Linux: Pfade sind ~/.config/JetBrains/DataGrip<version>/ und ~/DataGripProjects/
|
|
```
|
|
|
|
### NAS (Synology DS920+)
|
|
|
|
- **Hostname:** `nas.straso.com`
|
|
- **SSH/SFTP-Port:** 2218
|
|
- **Zugriff via Dolphin:** `sftp://nas.straso.com:2218` in der Adressleiste
|
|
- **Hinweis:** SFTP muss in der DSM-Weboberfläche aktiviert sein (Systemsteuerung → Dateidienste → FTP → SFTP)
|
|
|
|
### SAP GUI for Java
|
|
|
|
- **Version:** 8.10 rev 10
|
|
- **Installation:** `/home/chk/SAPClients/SAPGUI8.10rev10/`
|
|
- **Start:** `GDK_SCALE=2 /home/chk/SAPClients/SAPGUI8.10rev10/bin/guilogon`
|
|
- **Java:** OpenJDK 25 (pacman: `jre-openjdk`)
|
|
- **HiDPI-Scaling:** `GDK_SCALE=2` als Umgebungsvariable beim Start setzen
|
|
- **Installer-Hinweis:** Installation muss aus dem Unterverzeichnis `com/sap/platin/micro/` gestartet werden (`java -cp ".:*" com.sap.platin.micro.Microkernel`), da der Installer einen Pfadfehler hat
|
|
|
|
### Remote Desktop Manager
|
|
|
|
- **Paket:** `remote-desktop-manager` (pacman), Start: `/usr/bin/remotedesktopmanager`
|
|
- **RDP-Client:** `freerdp` v3 — liefert nur `xfreerdp3`, aber RDM erwartet `xfreerdp`
|
|
- **Symlink nötig:** `sudo ln -s /usr/bin/xfreerdp3 /usr/bin/xfreerdp`
|
|
- **NLA-Problem:** Der eingebaute RDP-Client von RDM (Devolutions SSPI-Modul) scheitert an NLA/SPNEGO-Authentifizierung unter Linux. **Workaround:** In der Verbindung unter Authentication → "Enable Network Level Authentication (NLA)" deaktivieren
|
|
|
|
### Citrix Workspace App
|
|
|
|
- **Paket:** `icaclient` (AUR, via paru)
|
|
- **StoreFront:** `https://apps.krah-gruppe.de` (extern via Gateway) / `https://apps.krah.intranet.de` (intern)
|
|
- **Auth:** Domain + RSA (2FA)
|
|
|
|
#### SSL-Zertifikate
|
|
|
|
System-Zertifikate verlinken, sonst schlagen SSL-Verbindungen fehl:
|
|
```bash
|
|
sudo ln -sf /etc/ssl/certs/* /opt/Citrix/ICAClient/keystore/cacerts/
|
|
sudo c_rehash /opt/Citrix/ICAClient/keystore/cacerts/
|
|
```
|
|
|
|
**Fehlende Intermediate-Zertifikate:** Der Citrix StoreFront-Server (`apps.krah-gruppe.de`) liefert kein Intermediate-Zertifikat mit. Browser laden fehlende Intermediates automatisch nach (AIA), der Citrix-Client aber nicht. Das Intermediate muss manuell hinzugefügt werden:
|
|
```bash
|
|
# Intermediate-Zertifikat von GlobalSign herunterladen und konvertieren
|
|
curl -sL http://secure.globalsign.com/cacert/gsgccr6alphasslca2025.crt \
|
|
| openssl x509 -inform DER -out /opt/Citrix/ICAClient/keystore/cacerts/gsgccr6alphasslca2025.pem
|
|
sudo c_rehash /opt/Citrix/ICAClient/keystore/cacerts/
|
|
```
|
|
**Hinweis:** Bei Zertifikatserneuerung kann sich die Intermediate-CA ändern. Die AIA-URL steht im Server-Zertifikat:
|
|
```bash
|
|
openssl s_client -connect apps.krah-gruppe.de:443 </dev/null 2>&1 | openssl x509 -noout -text | grep 'CA Issuers'
|
|
```
|
|
|
|
#### receiver://-Protokoll-Handler
|
|
|
|
Das AUR-Paket registriert den `receiver://`-Protokoll-Handler **nicht** automatisch. Ohne diesen öffnet der Browser einen KIO-Fehler statt die Citrix App. Fix:
|
|
```bash
|
|
printf '[Desktop Entry]
|
|
Type=Application
|
|
Name=Citrix Receiver Protocol Handler
|
|
NoDisplay=true
|
|
MimeType=x-scheme-handler/receiver;
|
|
TryExec=/opt/Citrix/ICAClient/selfservice
|
|
Exec=/opt/Citrix/ICAClient/selfservice --icaroot /opt/Citrix/ICAClient %%u
|
|
' | sudo tee /usr/share/applications/citrix-receiver-handler.desktop
|
|
|
|
xdg-mime default citrix-receiver-handler.desktop x-scheme-handler/receiver
|
|
```
|
|
|
|
#### Store-Konfiguration importieren
|
|
|
|
Die StoreFront-Webseite bietet eine `.cr`-Datei (Provisioning-Datei) an. Diese wird als `text/x-crystal` erkannt und im Texteditor geöffnet statt in Citrix. Import über CLI:
|
|
```bash
|
|
/opt/Citrix/ICAClient/selfservice --icaroot /opt/Citrix/ICAClient ~/Downloads/receiverconfig.cr
|
|
```
|
|
|
|
### keyd — Tastatur-Remapping (Logitech MX Mechanical)
|
|
|
|
- **Paket:** `keyd` (AUR, via paru)
|
|
- **Gerät:** Logitech MX Mechanical Keyboard (`046d:b366`)
|
|
- **Config:** `/etc/keyd/default.conf`
|
|
- **Mapping:** Calculator-Taste → Druck/Screenshot
|
|
- **Wichtig:** `[ids]` nur auf die Logitech-ID beschränken, nicht `*` — sonst werden globale Shortcuts (z.B. Super+Shift+Space) blockiert
|
|
- **Keynamen ermitteln:** `sudo keyd -m` zeigt die tatsächlichen Keynamen (z.B. `calc`, nicht `calculator`)
|
|
|
|
```ini
|
|
[ids]
|
|
046d:b366
|
|
|
|
[main]
|
|
calc = print
|
|
```
|
|
|
|
```bash
|
|
sudo systemctl enable --now keyd
|
|
sudo keyd reload # nach Config-Änderungen
|
|
```
|
|
|
|
### Lenovo Dockingstation (DisplayLink)
|
|
|
|
- **Treiber:** `displaylink` (AUR, via paru) + `evdi-dkms` (AUR)
|
|
- **Service:** `displaylink.service` (systemd)
|
|
- **Einrichtung:**
|
|
```bash
|
|
paru -S evdi-dkms displaylink
|
|
sudo systemctl enable --now displaylink
|
|
```
|
|
- **Hinweis:** `evdi-dkms` kompiliert per DKMS gegen den aktiven Kernel — nach Kernel-Updates wird das Modul automatisch neu gebaut
|
|
|
|
### Installierte Pakete (manuell)
|
|
- `teams-for-linux` — MS Teams Client (CachyOS-Repo)
|
|
- `rclone` — Cloud-Sync (pacman)
|
|
- `onedrive-abraunegg` — OneDrive-Client (nicht in Verwendung)
|
|
- `networkmanager-openvpn` — OpenVPN-Plugin für NetworkManager
|
|
- Sophos Protection for Linux (SPL) — `/opt/sophos-spl`, via `SophosSetup.sh` aus Sophos Central
|
|
- SAP GUI for Java 8.10 — `/home/chk/SAPClients/SAPGUI8.10rev10/`, benötigt `jre-openjdk`
|
|
- `keyd` — Tastatur-Remapping (AUR)
|
|
- `freerdp` — RDP-Client für Remote Desktop Manager (Symlink `xfreerdp` → `xfreerdp3` nötig)
|
|
- `remote-desktop-manager` — Devolutions RDM
|
|
- `icaclient` — Citrix Workspace App (AUR)
|
|
- `dotnet-sdk-9.0` — .NET 9 SDK
|
|
- `evdi-dkms` — DisplayLink-Kernelmodul (AUR, DKMS)
|
|
- `displaylink` — DisplayLink-Treiber (AUR)
|
|
|
|
### Polkit: Laufwerke ohne Passwort mounten
|
|
- **Regel:** `/etc/polkit-1/rules.d/10-udisks2-mount.rules`
|
|
- Erlaubt Mitgliedern der Gruppe `storage` das Mounten über den Dateimanager ohne Passwortabfrage
|
|
- Abgedeckte Actions: `filesystem-mount`, `filesystem-mount-other-seat`, `filesystem-mount-system`
|
|
- **Einrichtung:**
|
|
```bash
|
|
printf 'polkit.addRule(function(action, subject) {
|
|
if ((action.id == "org.freedesktop.udisks2.filesystem-mount" ||
|
|
action.id == "org.freedesktop.udisks2.filesystem-mount-other-seat" ||
|
|
action.id == "org.freedesktop.udisks2.filesystem-mount-system") &&
|
|
subject.isInGroup("storage")) {
|
|
return polkit.Result.YES;
|
|
}
|
|
});
|
|
' | sudo tee /etc/polkit-1/rules.d/10-udisks2-mount.rules
|
|
```
|
|
- **Hinweis:** fish-Shell unterstützt kein `<< 'EOF'` Heredoc — `printf ... | sudo tee` verwenden
|
|
|
|
### BTRFS Subvolumes
|
|
- `/@` → `/`
|
|
- `/@home` → `/home`
|
|
- `/@root` → `/root`
|
|
- `/@srv` → `/srv`
|
|
- `/@cache` → `/var/cache`
|
|
- `/@tmp` → `/var/tmp`
|
|
- `/@log` → `/var/log`
|