Hero Image

Fabrik

Fabric-server

Jag använder Debian för alla mina servrar, och jag kommer att förklara varför vid ett senare tillfälle.

Först måste vi installera ”Fabric”, den server som ska användas för att installera virtuella servrar. Helst bör den inte vara tillgänglig för någon annan än den person som ska administrera den. Det är inget märkligt med det – vi gör en standardinstallation, men avmarkerar det grafiska gränssnittet och väljer ”Öppen SSH-server”.

Efter att vi har installerat operativsystemet måste vi göra några inställningar. Låt oss därför logga in som root.

Grundläggande konfiguration

Skapa språkinställningar

Ställ in systemspråket på engelska för att göra det lättare att upptäcka problem i loggfilerna:

apt install locales-all
localectl set-locale LANG=en_US.utf8
localectl status

Uppdatera Debian och installera de nödvändiga administrationsverktygen

apt update
apt install wget sudo screen nmap telnet tcpdump rsync net-tools dnsutils htop \
apt-transport-https vim gnupg lsb-release

Skapa nano /etc/sudoers.d/10-nopasswd och lägg till:

%emir ALL=(ALL) NOPASSWD: ALL

Konfigurera VIM

Öppna nano /etc/vim/vimrc och ersätt hela innehållet med:

runtime! debian.vim
syntax on
set background=dark
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
filetype plugin indent on
set encoding=utf-8
set nobackup
set nowritebackup
set showcmd
set updatetime=300
set showmatch
set ignorecase
set smartcase
set incsearch
set tabstop=2
set softtabstop=2
set shiftwidth=2
set expandtab
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif

Skapa en Vim-konfigurationsfil med nano ~/.vimrc och lägg till följande:

set mouse=
set nocompatible
set cursorline
set nocursorcolumn
set nowrap
set showmode
set hlsearch
set wildmenu
set wildmode=list:longest
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx

Starta om systemet och logga in som vanlig användare. I mitt fall emir.

Ställ in samma Vim-användarinställningar som ovan för den aktuella användaren.

Virtualisering

Konfigurera mappar

sudo mkdir -p /srv/virt/vmdisks
sudo mkdir -p /srv/virt/iso

Kontrollera om virtualisering stöds

egrep -c '(vmx|svm)' /proc/cpuinfo
grep -E --color '(vmx|svm)' /proc/cpuinfo

När du kör ovanstående kommandon för att kontrollera om virtualisering är aktiverad eller inte kommer utdata att vara större än noll. Om så inte är fallet måste du först starta om systemet och gå in i systemets BIOS. Aktivera virtualiseringen och starta sedan upp operativsystemet, där du återigen kör ovanstående kommando för att bekräfta detta.

Install QEMU-KVM & Libvirt

sudo apt install qemu-system libvirt-daemon-system qemu-kvm \
libvirt-clients libvirt-daemon-system bridge-utils dnsmasq virtinst \
libvirt-daemon virt-manager net-tools

Aktivera nätverket och ställ in automatisk omstart

sudo virsh net-start default
sudo virsh net-autostart default
sudo modprobe vhost_net
lsmod | grep vhost
# if vhost_net does not exist in /etc/modules run:
sudo echo "vhost_net" | sudo  tee -a /etc/modules 

Skapa ett nätverk av broar

Även om KVM levereras med ett nätverksgränssnitt av typen ”virbr0” som är konfigurerat från början, kan vi inte komma åt den virtuella KVM-maskinen från värddatorn via någon annan dator i nätverket på grund av det IP-intervall som tilldelats av detta gränssnitt. Därför ska vi skapa vårt eget fullbridge-gränssnitt över värdsystemets fysiska nätverkskort, som kommer att ha IP-adressintervallet för vårt nätverk.

Hitta det fysiska nätverksgränssnitt som är anslutet till ditt värdsystem och som du vill använda för bryggan ip a och redigera filen för ditt nätverksgränssnitt sudo vim /etc/network/interfaces.

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eno1
auto br0
iface br0 inet static
  address 10.115.100.2/24
  gateway 10.115.100.1
  bridge_ports eno1
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0
  # dns-* options are implemented by the resolvconf package, if installed
  dns-nameservers 8.8.8.8 8.8.4.4
  dns-search yourdomain.com

Andra skivan

Läs det här kapitlet om du, precis som jag, använder en separat hårddisk för virtuella maskiner.

Du kan kontrollera om hårddisken har lästs in av servern på flera olika sätt:

Med kommandot dmesg kan du se de senaste händelserna på servern. Enheten bör ha tilldelats en /dev/-beteckning (t.ex. /dev/sdc).

dmesg

En annan metod du kan använda är att kontrollera om det finns en ny enhet i listan i fdisk:

fdisk -l

Oavsett vilken metod du väljer bör enheten visas om operativsystemet har upptäckt den. Om du använder dmesg och enheten har varit ansluten under en längre tid kan du behöva koppla bort och ansluta den på nytt.

När du har kontrollerat att enheten har identifierats av operativsystemet måste du formatera den med den metod du föredrar. (fdisk/parted/etc.) Efter att du har formaterat enheten måste du skapa ett filsystem på den, varefter den är redo att monteras. Se längst ner i det här inlägget för en steg-för-steg-guide om du inte är bekant med formaterings- och filsystemskapningsprocessen.

Skapa en katalog där den nya enheten ska monteras (jag använder den befintliga katalogen /srv):

sudo mkdir -p /new/drive/

Montera enheten i den nya katalogen:

sudo mount /dev/sdb1 /new/drive

Se till att lägga till följande i sudo vim /etc/fstab om du vill att monteringen ska finnas kvar efter en omstart av datorn:

/dev/sdb1 /new/drive ext4 defaults 0 1

Till exempel: (Om vi antar att den nya enheten är /dev/sdb, att du vill använda ext4 som filsystem och att du planerar att använda hela disken)

sudo parted /dev/sdb
mklabel
gpt       # label type
mkpart
srv       # partition name
ext4      # File system type (ext3,ext4,etc.)
1         # Partition Starting point
100%      # Partition ending point
quit      # exit parted
sudo mkfs.ext4 /dev/sdb1

Skapa en lagringspool

En lagringspool kan skapas med hjälp av kommandoradsverktyget virsh. Med kommandoradsverktyget virsh kan du ange alla parametrar. I det här exemplet heter poolen vmdisks:

sudo virsh pool-define-as \
  --name vmdisks \
  --type dir \
  --target /srv/virt/vmdisks
sudo virsh pool-start --build vmdisks
sudo virsh pool-autostart vmdisks
sudo virsh pool-list --all

Avsluta med att granska informationen om lagringspoolen:

sudo virsh pool-info vmdisks

Användbara kommandon

sudo virsh console VM (or ID) # Escape character is ^] (Ctrl + ])
sudo virsh destroy VM # force shutdown
sudo virsh shutdown VM
sudo virsh start VM
sudo virsh edit VM
sudo virsh undefine VM # delete VM and then delete disk if actuellt
sudo virsh list --all
sudo virsh vncdisplay VM

Konfigurera SSH-inloggning med nycklar

Skapa ett nyckelpar på klienten macshine:

ssh-keygen

Överför den offentliga nyckeln till målmaskinen:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@{IP-ADDRESS-OR-FQDN}

Andra sätt att överföra pub-nyckeln

Du kan kopiera den offentliga nyckeln med scp och sedan köra:

cat id_rsa.pub >> ~/.ssh/authorized_keys

Eller från Windows:

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {IP-ADDRESS-OR-FQDN} "cat >> .ssh/authorized_keys"

Min design

Server IPv4-adress IPv6-adress Beskrivning
gateway 10.115.100.1 fd55:cdbc:12df::1/64 fire
fabric 10.115.100.2 fd55:cdbc:12df::2/64 KVM host
ca 10.115.100.3 fd55:cdbc:12df::3/64 Certifikatserver
dc01 10.115.100.4 fd55:cdbc:12df::4/64 Domänkontrollant (PDC)
dc02 10.115.100.5 fd55:cdbc:12df::5/64 Andra domänkontrollanten
srv01 10.115.100.6 fd55:cdbc:12df::6/64 Applikationsserver
srv02 10.115.100.7 fd55:cdbc:12df::7/64 HA-applikationsserver
mail 10.115.100.8 fd55:cdbc:12df::8/64 E-postserver

Virtuella servrar

När det gäller virtuella servrar kommer vi att installera en certifikatserver och två domänkontrollanter (Dans), två databaser (MariaDB) servrar för hög tillgänglighet, e-postserver med webbmail (iRedMail), den Nextcloud server och Diaspora server. Alla tjänster körs på Debian servrar. Även om vi kan sköta allt från Debian, så kommer vi till slut att använda Windows 11 med RSAT, bara för att visa att det fungerar.

Det finns flera sätt att installera en virtuell server. Vi kan använda VLC för grafisk installation (praktiskt om man installerar Windows). Du kan välja att installera från en ISO-bild som finns på servern eller via internet. Jag brukar installera Debian server via internet och utan grafiskt gränssnitt.

Nu ska vi installera vår första virtuella server. Jag väljer certifikatserver ->