Artikler · Guide

Hvad er FreeBSD?

FreeBSD er et komplet open source-operativsystem, hvor kerne og værktøjer udvikles samlet af ét projekt. Det giver et system, der hænger sammen og ændrer sig langsomt. Med ZFS, jails og PF har du det, en server skal bruge, uden at lægge noget ovenpå.

Hvad er FreeBSD

FreeBSD er et Unix-lignende operativsystem til servere, netværksudstyr og indlejrede systemer. Det er ikke en Linux-distribution. Linux er en kerne, og en distribution samler kernen med værktøjer fra mange forskellige projekter. FreeBSD er det hele: kerne, C-bibliotek, kommandoer, konfiguration og dokumentation, udviklet sammen af det samme projekt.

Historien, og hvor FreeBSD står i dag

FreeBSD stammer fra BSD, den Unix-version, som University of California, Berkeley udviklede fra slutningen af 1970’erne. Da Berkeley stoppede, fortsatte flere projekter arbejdet. FreeBSD 1.0 kom i 1993. Licensen er BSD-licensen, der lader dig bruge og ændre koden, også i lukkede produkter.

Projektet ejes ikke af en virksomhed. Det drives af frivillige og ansatte udviklere og støttes af FreeBSD Foundation, en non-profit stiftelse.

Den frie licens er en af grundene til, at FreeBSD tit sidder inde i andre produkter. Netflix bruger det på de servere, der leverer deres video. PlayStation-konsollernes styresystem bygger på det, og det samme gør firewalls som pfSense og OPNsense. Du ser det sjældent, men det kører mange steder.

Ét base system, ét team

Det, der følger med FreeBSD fra start, kaldes base system. Kernen og userland ligger i ét repository og udgives samlet. Kommandoerne passer til kernen, og man pages passer til kommandoerne. Når du læser man ifconfig, beskriver den præcis den version, du har.

Konfigurationen samles ét sted. Næsten alt om, hvad der starter, og hvordan netværket ser ud, står i /etc/rc.conf. Du ændrer den med sysrc:

# sysrc sshd_enable=YES
# service sshd start

Systemet ændrer sig langsomt. En opsætning fra for fem år siden ser stort set ens ud i dag.

Releases og opdateringer

FreeBSD har tre grene:

  • RELEASE: de udgivne versioner, fx 15.1. Det er dem, du bruger i drift.
  • STABLE: grenen, som næste release bygges fra.
  • CURRENT: udviklingsgrenen, hvor nyt kommer ind først.

Fra FreeBSD 15 får hver hovedversion fire års support. Der kommer en ny punktversion cirka hvert halve år. Hver punktversion får sikkerhedsrettelser i tre måneder efter, at den næste er kommet. Så skal du fra 15.1 til 15.2, men det er en lille opgradering.

Base system kan opdateres på to måder. Den klassiske er freebsd-update:

# freebsd-update fetch install

FreeBSD 15 introducerede pkgbase, hvor base system installeres som pakker. Så opdaterer du det hele med pkg upgrade, og freebsd-update nægter at køre. Installeren lader dig vælge. Planen er, at pkgbase bliver den eneste måde i FreeBSD 16.

Tredjepartssoftware: ports og pakker

Alt, der ikke er en del af base system, kommer fra ports. Der er over 35.000 færdige pakker, fx nginx, PostgreSQL, Postfix og Zabbix. Du installerer dem som færdige pakker med pkg:

# pkg install nginx
# pkg audit -F

pkg audit tjekker de installerede pakker mod kendte sårbarheder.

Pakkerne bygges i to grene. quarterly fryses hvert kvartal og får kun rettelser. latest følger den nyeste version af hvert program. På servere bruger du quarterly.

Tredjepartssoftware installeres under /usr/local, mens base system ligger i /usr og /etc. Du kan altså opdatere PostgreSQL uden at røre ved operativsystemet, og omvendt.

ZFS

ZFS er et filsystem og en volume manager i ét. Det tjekker data med checksums, kan lave snapshots på et sekund og sende dem til en anden server. Det er indbygget i FreeBSD, og installeren kan lægge hele systemet på ZFS.

En særlig fordel er boot environments. Før en opgradering laver du en kopi af systemet:

# bectl create foer-opgradering

Går opgraderingen galt, vælger du kopien og genstarter. Så er du tilbage, hvor du var:

# bectl activate foer-opgradering
# shutdown -r now

Kopien fylder næsten intet, fordi ZFS kun gemmer det, der ændrer sig bagefter.

Jails og bhyve

Jails deler en FreeBSD-server op i adskilte miljøer. Hvert jail har sine egne processer, brugere og filer, men de deler kernen med værten. Det er tæt på containere, men en del af FreeBSD siden 2000. Med ZFS kan hvert jail have sit eget dataset, du kan snapshotte og flytte.

bhyve er FreeBSDs hypervisor. Den kører hele virtuelle maskiner med deres egen kerne. Du bruger den, når noget ikke kan køre i et jail, fx Linux eller Windows. bhyve følger med base system, og værktøjer som vm-bhyve gør det nemmere at styre mange maskiner.

Tommelfingerreglen er: jails til tjenester, der kan køre på FreeBSD, og bhyve til alt andet.

Netværk og PF

Netværket er en af FreeBSDs stærke sider. Den har det, du skal bruge på en server eller en router: VLAN, link aggregation (lagg), CARP til en delt IP-adresse mellem to servere og VNET, der giver et jail sin egen netværksstak. Det hele konfigureres i rc.conf:

ifconfig_vtnet0="inet 192.0.2.10/24"
vlans_vtnet0="20"
ifconfig_vtnet0_20="inet 10.0.20.1/24"
defaultrouter="192.0.2.1"

Firewallen PF kommer fra OpenBSD. Reglerne står i én fil, /etc/pf.conf, og læses oppefra og ned. Den sidste regel, der passer, bestemmer. Med quick stopper PF ved den første. Her blokerer serveren alt ind, undtagen SSH og HTTPS:

ext_if = "vtnet0"

set skip on lo0
block in all
pass out all keep state
pass in on $ext_if proto tcp to port { 22 443 } keep state

Du slår PF til og starter den:

# sysrc pf_enable=YES
# service pf start

Når du senere ændrer reglerne, tjekker du filen, før du indlæser den. Er der en fejl, bliver de gamle regler stående:

# pfctl -nf /etc/pf.conf && service pf reload

FreeBSD har også firewallen IPFW, der fx kan forme trafik med dummynet.

Kommandoerne i artiklen er testet på FreeBSD 15.1.

Vores anbefaling

Vi bruger FreeBSD til serverhosting og som grundlag for Gatekeeper, vores open source-firewall. Gatekeeper bygger på netop det, der står i denne artikel: PF til firewallen, CARP til to firewalls i et par og ZFS under det hele.

FreeBSD passer godt, når du vil have et system, der ændrer sig langsomt, og hvor du forstår alle delene. Det gælder især firewalls, routere, storage og tjenester, der kan køre i jails. Skal du køre software, der kun findes til Linux, eller har dit team kun erfaring med Linux, er Linux det enkleste valg.

Vil du i gang, er FreeBSD Handbook det bedste sted at starte.

Har du brug for hjælp?

Vi drifter FreeBSD-servere og hjælper med at vælge, sætte op og passe dem. Læs om rådgivning og managed drift, eller skriv til os.