RTC
nl en
Upgrade van mijn thuis-netwerk en Linux kennis
Afgewerkt op
upgrade network

Doel

Ik wil volgende uitbreidingen aan mijn thuis-netwerk:

  • smart of managed switch met voldoende 2.5GbE poorten:
    mijn volledige netwerk is hierdoor volledig 2.5Gb Ethernet en heeft dus een grotere bandbreedte;
    mijn gast netwerk en IoT netwerk kan ik dan ook volledig isoleren van mijn intern netwerk en is dus veiliger;
    momenteel heb ik ook geen toegang tot de configuratie van door de ISP-geleverde centrale router;
    door deze switch achter deze router te plaatsen heb mijn thuisnetwerk ook beter afgezonderd van deze ISP router

Ik wil volgende uitbreidingen aan mijn nas-configuratie:

  • IP-gebaseerde KVM:
    mijn home-server staat op een afgezonderde plaats en wil ik daarom volledig op afstand kunnen beheren;
    via dit type KVM kan ik deze server via mijn pc aanzetten/afzetten, BIOS settings wijzigen, enz

Ik wil ook mijn kennis uitbreiden over Linux en server beheer:

  • aanmaak van een nieuwe LXC met Linux setup om te kunnen experimenteren met Linux:
    aanleren van Linux en gebruik van handige Linux utility software
  • toegang en beheer van mijn servers en netwerk van op afstand:
    gebruik van Terminal software voor bediening via commando’s, en van Remote Desktop software

Met dit project werk ik de realisatie van al mijn ideeën over netwerk- en server-infrastructuur af.
In volgend project wil ik mijn publieke website volledig afwerken en starten met het ontwikkelen van applicaties.


Resultaat

1 - Smart switch en IP-based KVM

SMART SWITCH

Smart switch

Ik kocht een smart web managed switch van Sodola met 8 x 2.5GbE poorten.
Ik installeerde deze switch tussen mijn ISP-router en de rest van mijn thuisnetwerk.
Daarna wijzigde ik het paswoord en IP adres van deze switch.

Netwerk-bandbreedte/snelheid (in Mbps) is verschillend van netwerk-latency/ping (in millisec).
Door de installatie van deze switch kan mijn volledige thuisnetwerk (LAN) met 2.5GbE bandbreedte werken op CAT5E bekabeling.
Dit is een upgrade van mijn netwerk-bandbreedte van 1 Gbps = 128 MBps naar 2.5 Gbps = 320 MBps.
Enkel mijn internet-verbinding (WAN) heeft nu nog een kleinere bandbreedte van 150 Mbps/15 Mbps (19 MBps/2 MBps) door mijn oud ISP contract.

Nadien wijzigde ik de configuratie van de smart switch om 2 VLAN’s te configureren:
(1) Thrusted VLAN (“Home” genoemd) voor intern gebruik van huisgenoten (met alle toegang)
(2) Guest VLAN (“Guest” genoemd) voor bezoekers die enkel internet-toegang kunnen krijgen.
Een aparte IoT VLAN (Internet Of Things) had ik nog niet nodig.

Ik realiseerde de aanmaak van een “Guest Wi-Fi Network”.
Hiermee kunnen bezoekers via een aparte wifi naam en paswoord inloggen.
Ze hebben dan toegang tot internet via mijn LAN, maar de rest van machines in mijn LAN blijft verborgen en is niet toegankelijk.

USB & ETHERNET ADAPTERS

Mijn home-server heeft reeds een 2.5GbE poort maar mijn Windows pc heeft enkel een 1GbE poort.
Ik kocht daarom een “USB-C to Ethernet” (voor 2.5Gb) adapter en een “USB-A to USB-C” (voor USB 3.0) adapter.
Daarna installeerde ik deze adapters op een USB-A 3.0 poort (donker blauw, max 5 Gbps) van mijn Windows pc.
Op deze manier heeft mijn Windows pc nu ook een 2.5GbE verbinding.

Deze adapters heb ik daarna ook gebruikt om een tweede 2.5GbE verbinding op mijn home-server te maken (via usb-poort).
Mijn Sodola switch ondersteunt ook “link aggregation” via LACP (IEEE 802.3ad), ook bekend als trunking, bonding of teaming.
Linkaggregatie combineert meerdere fysieke netwerkverbindingen, zoals Ethernet-poorten, tot één logische link
om een ​netwerkverbinding met hogere bandbreedte tussen twee apparaten te creëren.
Dit proces verhoogt de doorvoer en zorgt voor redundantie, omdat het verkeer over meerdere actieve links kan worden verdeeld.
Als één link uitvalt, kunnen de andere links de verbinding behouden.
Echter, een correcte functionering van linkaggregatie, vereist dat beide apparaten aan beide uiteinden van de verbinding (voor mij dus switch en nas)
linkaggregatie met dezelfde configuratiemodus (bijv. LACP) moeten ondersteunen.
Mijn home-server is een goedkope “MINIS FORUM UM350 Mini PC AMD Ryzen 5 3550H” (230 eur) met Proxmox software (Debian based) hierop geïnstalleerd.
In proxmox kunnen poorten op Linux-systemen samengevoegd (port aggregation) worden door een gekoppelde interface te configureren.
Er dient echter nog nagegaan worden of deze oudere hardware wel LACP ondersteunt.
Omdat ik niet dadelijk behoefte heb aan linked aggregation op mijn home-server (met 2 parallelle 2.5GbE verbindingen),
heb ik dit niet verder onderzocht.

IP-BASED KVM

JetKVM

Ik kocht de IP based KVM van JetKVM via de Kickstarter website (crowdfunding).
Wegens de tarieven-politiek van president Trump en de oorlog in Oekraine, heeft de levering vanuit Shenzhen (China) echter een zeer grote vertraging.
De levering aan huis moet nog steeds gebeuren, maar ik word goed op de hoogte gehouden door “JetKVM Shipping”.
De KVM kan ik daarom pas later installeren en aan mijn nas/home-server koppelen.

ONGOING - Na ontvangst en installatie van de KVM, zal dit gedeelte bijgewerkt worden.

2 - Linux kennis uitbreiden

Linux advanced

LINUX COMMANDS

Ik wil Linux vlot kunnen gebruiken in verschillende situaties:
WSL op Windows pc, Proxmox/LXC op mijn home-server en Linux (virtual) machine.
Omdat er ook verschillende Linux distros bestaan, wil ik Ubuntu en Fedora uitproberen om zo de 2 belangrijkste Linux distro families te leren kennen.
Ubuntu is van de Debian familie (met apt-get/apt als standaard package manager),
en Fedora is van de Red Hat familie (met rpm/yum als standaard package manager).

Als eerste wou ik alle belangrijke Linux commando’s aanleren.
Ik installeerde daarom “FedoraLinux-42” en “Ubuntu-24.04” in “WSL2” op mijn windows 11 desktop pc.
Met de “Windows Terminal” had ik daarna toegang tot de bash shell in deze linux distro’s op WSL.
De bestudeerde commando’s bracht ik samen in een samenvatting: Cheatsheet for Linux commands 👆

Op mijn op mijn home-server installeerde ik de populaire “LinuxMint-22.1 Cinnamon Edition” (vs “ArchLinux”) distro in een aparte VM.
Via de voorziene console in de proxmox web app kon ik shell commando’s via de browser op mijn windows pc uitvoeren.

Bij het aanleren van Linux commando’s schonk ik extra aandacht aan package managers:
“apt-get”/“apt” (voor ubuntu), “rpm”/“yum” (voor fedora) als package managers
en “nix” als extra (declative en tranactional) package manager voor alle distros.
Ik installeerde de “nix” package manager in Ubuntu, en gebruikte daarna nix om de “tmux” software in Ubuntu te installeren.

In Windows bestaat er nu ook een package manager om Windows-applicaties eenvoudiger te installeren en upgraden.
Gebruik hiervoor het “winget” commando in CMD of PowerShell (“App Installer” genoemd in Microsoft Store).
Via “winget” installeerde ik “VideoLAN.VLC” en “abdenasser.NeoHtop” als windows applicaties.
Microsoft heeft een nieuwe gratis en open source command line editor “MSEdit” (Microsoft Edit) vrijgegeven.
Deze text editor is erg goed en werkt op Windows, Linux en macOS (vs Notepad op Windows, Nano op Linux),
Je kan deze software (vs nano, vim) gebruiken op alle systemen om scripts aan te maken.
Zie Cheatsheet for Windows commands 👆 voor meer uitleg over Winget.

LINUX UTILITIES

Ik paste daarna de linux shell in mijn terminal aan:

  • “zsh” (vs “bash”, “fish shell”, “nushell”): een meer productieve terminal shell
  • “zinit” als plugin manager voor zsh
  • “powerlevel10k” (vs “Starship”): customisatie van shell prompt
  • tal van zsh plugins, aliases en zsh configuratie-opties

Daarna maakte ik kennis met volgende console utility software:

  • “fastfetch” (vs “neofetch”): overzicht van systeem informatie
  • “htop”, “tmux” (terminal multiplexer)
  • “curl” en vscode extension “REST Client”: cli toegang tot web services;
    “jq”/“yq”/“xq”/“jqp”: filtering en formatting support voor json, yaml en xml data

WSL-ONDERSTEUNING voor Linux GUI-toepassingen

“X11”/“X.org” en nieuwere “Wayland” zijn display protocols, die onderliggend gebruikt worden door window managers in linux (GNOME, KDE Plasma, Xfce, MATE).
WSL2 in Windows 11 ondersteunt Linux GUI applicaties (die X11 of Wayland gebruiken) natively.
Met WSL2 voelen Linux GUI-applicaties hierdoor native en natuurlijk aan op Windows.
We kunnen nu Linux-apps starten vanuit het Windows-startmenu en vastzetten op de Windows-taakbalk.
Daarnaast kunnen we met Alt+Tab schakelen tussen Linux- en Windows-apps en content tussen beide kopiëren en plakken.
Zie Cheatsheet for Windows commands 👆 voor meer uitleg over WSL.

Ik leerde Linux Gui applicaties en Windows Gui applicaties naast mekaar te gebruiken op mijn Windows pc.
Eerst installeerde ik verschillende GUI applicaties, waaronder nautilus en x11-apps, in Ubuntu.
In de “Start” menu van Windows kon ik via “All” een nieuwe “Ubuntu” groep terugvinden.
In deze groep kon ik de geinstalleerde Linux GUI applicaties (in Ubuntu op WSL) terugvinden.
De “nautilus” app is een File Explorer voor Linux.

3 - Toegang tot servers op afstand

Remote access

Al mijn servers en machines wil ik gemakkelijk kunnen besturen en beheren vanop afstand vanaf één machine.
Zeker omdat machines zich ook op verschillende fysieke plaatsen kunnen bevinden.
Mijn doel is daarom niet zozeer hulp bieden op afstand (over het internet), maar wel beheer van servers binnen mijn thuisnetwerk gemakkelijker maken.

REMOTE TERMINAL (Command line remoting tools)

Dit beheer vanop afstand gebeurt bijna steeds op de command line via SSH en SFTP/SCP software.
Dit is beveiligde client-server software, en hiervoor dient vooraf een SSH/SFTP server op de remote machine geconfigureerd te zijn.
Zie Cheatsheet for SSH and SFTP usage 👆 voor meer uitleg.

  • populaire SSH Client tools op Windows (machine besturen vanop afstand):
    “SSH” in shell, “PuTTY” (GUI for SSH, Telnet, SFTP), vscode extension “Remote Development” (SSH, WSL, DevContainer)
  • populaire SFTP/SCP Client tools op Windows (files uitwisselen met machine op afstand):
    “SFTP” & “SCP” in shell, “WinScp”, “FileZilla”, vscode extension “SFTP”
    (deze softwares gebruiken allemaal onderliggend SSH connecties)
  • meer geavanceerde tools voor uitgebreider SSH session management op Windows (multiple en/of permanent sessions):
    “mRemoteNG” (of “Remmina” voor Linux), “MobaXterm” (enkel gratis voor persoonlijk gebruik; ondersteunt SSH, Telnet, SFTP, built-in X-server)

Ik koos uiteindelijk voor “SSH” & “SFTP” & “SCP” software in “Windows/Linux Terminal” en voor “PuTTY” en “WinSCP” op Windows.
De vscode extensions “Remote Development” (SSH, WSL, DevContainer) & “SFTP” werden ook gebruikt.
Omdat ik slechts een beperkt aantal servers heb, maakte ik geen gebruik van “mRemoteNG” (of “Remmina” voor Linux).

Om de SSH, SFTP en SCP protocols te leren gebruiken, voerde ik volgende testen uit:

  • test “Client [Windows op pc] ===[SSH/SFTP/SCP]===> Server [Linux Mint in vm op nas]”:
    installatie en gebruik van SSH server op Linux Mint VM op NAS, en SSH Client in Windows Terminal op Windows pc;
    gebruik van Putty, WinSCP en VSCode “Remote Development” & “SFTP” extensions als client tools op Windows pc;
    installatie van SSH keys op Linux Mint VM op NAS, en gebruiken voor inloggen zonder paswoord vanaf Windows pc
  • test “Client [Ubuntu in wsl op pc] ===[SSH/SFTP/SCP]===> Server [Linux Mint in vm op nas]”:
    installatie van SSH server op Linux Mint VM op NAS, en SSH Client in Windows Terminal voor Ubuntu in WSL op Windows pc
  • test “Client [Linux Mint in vm op nas] ===[SSH/SFTP/SCP]===> Server [Windows op pc]”:
    installatie van SSH server op Windows pc, en SSH Client in Terminal en VSCode van Linux Mint VM op NAS;
    installatie van SSH keys op Windows pc, en gebruiken voor inloggen zonder paswoord vanuit Linux Mint VM op NAS

OpenSSH-Server op Windows werkt niet met Microsoft accounts.
Een local account of een Active Directory account is nodig in Windows voor authenticatie via SSH.
Om OpenSSH-Server op Windows te testen, maakte ik daarom een speciale local account voor SSH aan met “Administrator” account type.

REMOTE DESKTOP (GUI remoting tools)

Om Remote Desktop software te kunnen uitproberen,
dien ik best te beschikken over een grafische Desktop op mijn Linux systeem.
Omdat “X11-Forwarding” zeer inefficient is, wordt voor remote GUI toegang meestal volgende software gebruikt:
“Windows Remote Desktop”, “VNC” (Virtual Network Computing), “Chrome Remote Desktop”, “TeamViewer”, “AnyDesk” of “NoMachine”.
Ik gebruikte eerst de automatisch geïnstalleerde “Remote Desktop Connection” app (Microsoft RDP) in windows.
Deze software werkt echter enkel in een local netwerk en de RDP server dient een Windows Pro machine te zijn.

Daarna gebruikte ik de gratis en open source “RustDesk” software.
Deze Remote Desktop software kan op alle systemen (Windows, Linux, Mac en Android) gebruikt worden.
Guacamole is een andere gratis en open source remoting software.
Guacamole is echter web-based, ingewikkelder en meer geschikt voor grotere ondernemingen.

Ik koos uiteindelijk voor “RustDesk” als mijn Remote Desktop software.
Omdat ik RustDesk enkel binnen mijn thuiswerk (LAN) wilde gebruiken, werd in mijn situatie geen RustDesk Server (relay server) gebruikt.
Zie Cheatsheet for RDP usage 👆 voor meer uitleg.

Om RustDesk te leren gebruiken, voerde ik volgende testen uit:

  • test “Client [Windows op pc] ===[RDP]===> Server [Linux Mint in vm op nas]”
  • test “Client [Linux Mint in vm op nas] ===[RDP]===> Server [Windows op pc]”

4 - Vereenvoudig beheer van alle software-configuratie bestanden

Stow

In Linux wordt de configuratie van alle software in dotfiles opgeslagen.
Om deze dotfiles overheen al je computers gelijk te houden,
en gemakkelijk over te stappen naar nieuwe/oude configuraties,
gebruik ik voortaan de “GNU Stow” software (vs yadm) en een git repository.

Via de stow software worden alle configuratie-bestanden op een gemakkelijk manier vervangen door symbolic links,
die verwijzen naar deze bestanden in eenzelfde “.dotfiles” folder.
Door van deze folder een git repository te maken,
kunnen alle software-configuraties gemakkelijk centraal beheerd en ge-backup-ed worden.