Tech Handbook Null Yard

FreeBSD jako serwer

FreeBSD to kompletny system operacyjny z rodziny BSD, a nie dystrybucja Linuksa. Kernel, system bazowy, narzędzia administracyjne i dokumentacja powstają jako spójna całość, natomiast aplikacje dodatkowe trafiają zwykle do hierarchii /usr/local przez Packages lub Ports.

Kiedy ten materiał jest przydatny: przy budowie i utrzymaniu serwera FreeBSD, pracy z rc.conf i usługami rc.d, ZFS, jailami, PF, SSH, aktualizacjami oraz podczas diagnozowania problemów z siecią i usługami.

Punkt odniesienia: FreeBSD 15.1-RELEASE, aktualne wydanie Production w chwili audytu. Wiele opisanych mechanizmów administracyjnych pozostaje również wspólnych dla wspieranych wydań gałęzi 14.

Dalsze tematy: FreeBSD - shell oraz SSH i zdalna administracja. Dla porównania z kontenerami linuksowymi przydatne jest także kompendium Docker.

Mapa kompendium


1. Jak myśleć o FreeBSD

FreeBSD nie jest dystrybucją Linuksa. To kompletny system operacyjny rozwijany jako spójna całość:

  • kernel,
  • podstawowe narzędzia systemowe,
  • biblioteki,
  • system startowy,
  • narzędzia sieciowe,
  • dokumentacja,
  • mechanizmy aktualizacji.

To, co w Linuksie często pochodzi z wielu osobnych projektów, we FreeBSD w dużej części należy do jednego base system.

Oprogramowanie dodatkowe - nginx, PostgreSQL, Git, Vim, Samba itd. - pochodzi natomiast z systemu Packages/Ports.

To rozróżnienie jest fundamentalne:

FreeBSD base system
├── kernel
├── /bin
├── /sbin
├── /usr/bin
├── /usr/sbin
├── /etc
└── podstawowe biblioteki

Pakiety dodatkowe
├── /usr/local/bin
├── /usr/local/sbin
├── /usr/local/etc
├── /usr/local/lib
└── /usr/local/etc/rc.d

Dlatego typowa konfiguracja wygląda tak:

/etc/ssh/sshd_config

dla OpenSSH należącego do systemu bazowego, ale:

/usr/local/etc/nginx/nginx.conf

dla nginx zainstalowanego przez pkg.

Ta reguła bardzo często pomaga odnaleźć konfigurację usługi.


2. Wersja systemu

Podstawowe polecenia:

freebsd-version

Pokazuje wersję zainstalowanego userlandu.

uname -r

Pokazuje wersję uruchomionego kernela.

uname -a

Pokazuje więcej informacji o systemie.

Po aktualizacji może się zdarzyć, że:

freebsd-version

i:

uname -r

pokazują różne wersje.

Najczęściej oznacza to, że kernel został zaktualizowany, ale system nie został jeszcze zrestartowany.


3. Najważniejsze katalogi

/etc

Konfiguracja systemu bazowego.

Najważniejsze pliki:

/etc/rc.conf
/etc/sysctl.conf
/etc/fstab
/etc/hosts
/etc/resolv.conf
/etc/ssh/
/etc/pf.conf
/etc/jail.conf
/etc/jail.conf.d/

/usr/local

Tutaj trafia oprogramowanie instalowane z Packages/Ports.

Najważniejsze miejsca:

/usr/local/bin
/usr/local/sbin
/usr/local/etc
/usr/local/etc/rc.d
/usr/local/lib

Przykładowo:

/usr/local/etc/nginx/nginx.conf
/usr/local/etc/postgresql.conf

/var

Dane zmienne:

/var/log
/var/db
/var/run
/var/tmp

W szczególności:

/var/log/messages

jest jednym z najważniejszych logów systemowych.


/home i /usr/home

W FreeBSD katalogi domowe użytkowników często znajdują się fizycznie pod:

/usr/home

a /home może być dowiązaniem.


/boot

Kernel, moduły i konfiguracja startu systemu.

Ważne:

/boot/loader.conf

Nie należy tam wpisywać rzeczy, które mogą być ustawione przez sysctl, jeśli nie ma ku temu powodu.


4. Minimalny shell administratora

Nie jest to kurs shella. Poniższe polecenia wystarczą jednak do większości prostych zadań administracyjnych.

Poruszanie się

pwd
ls
ls -la
cd /katalog
cd ..
cd ~

Pliki

cp plik kopia
mv stary nowy
rm plik
mkdir katalog
rmdir katalog

Rekurencyjne usuwanie:

rm -r katalog

Używać ostrożnie.


Podgląd plików

cat plik
less plik
tail plik
head plik

Śledzenie logu na żywo:

tail -f /var/log/messages

Wyszukiwanie

grep tekst plik
grep -R tekst /usr/local/etc
find /usr/local -name "*.conf"

Procesy

ps aux
top
pgrep nginx
pkill proces

Pomoc

Najważniejsze narzędzie FreeBSD:

man polecenie

Przykłady:

man service
man rc.conf
man sysrc
man pf.conf
man zfs
man jail

Sekcję manuala można wskazać jawnie:

man 5 rc.conf
man 8 service

5. Root i uprawnienia

Konto root ma pełne prawa do systemu.

Przejście na roota:

su -

Zwykły użytkownik musi zwykle należeć do grupy:

wheel

Sprawdzenie grup:

id

Dodanie użytkownika do grupy:

pw groupmod wheel -m user

Można również zainstalować sudo:

pkg install sudo

i skonfigurować:

/usr/local/etc/sudoers

Bezpieczniej edytować przez:

visudo

6. Użytkownicy i grupy

Lista użytkowników

cat /etc/passwd

Dodanie użytkownika

Interaktywnie:

adduser

Usunięcie użytkownika

rmuser nazwa

Narzędzie pw

Bardziej skryptowalne:

pw useradd nazwa
pw usermod nazwa
pw userdel nazwa
pw groupshow wheel

Przykład:

pw useradd webapp -m -s /bin/sh

7. Pakiety - pkg

pkg jest podstawowym narzędziem do instalacji oprogramowania.

Jeśli nie jest jeszcze zainstalowane, pierwsze uruchomienie:

pkg

zaproponuje bootstrap.


Aktualizacja katalogu pakietów

pkg update

Aktualizacja wszystkich pakietów

pkg upgrade

Typowy zestaw:

pkg update
pkg upgrade

Instalacja

pkg install nginx

Kilka pakietów:

pkg install nginx git vim

Usuwanie

pkg delete nginx

Lista zainstalowanych pakietów

pkg info

Informacje o konkretnym pakiecie:

pkg info nginx

Wyszukiwanie

pkg search nginx

Dokładniejsze:

pkg search -f nginx

Zależności, które nie są już potrzebne

pkg autoremove

Najpierw zawsze przeczytaj, co pkg chce usunąć.


Audyt podatności

Bardzo przydatne na serwerze:

pkg audit -F

-F pobiera świeżą bazę podatności.


Informacja, skąd pochodzi plik

pkg which /usr/local/bin/nginx

Pliki należące do pakietu

pkg info -l nginx

8. Packages a Ports

FreeBSD posiada dwa sposoby instalowania oprogramowania:

  1. Packages - gotowe binaria,
  2. Ports - kompilacja ze źródeł.

Na zwykłym serwerze najczęściej używaj:

pkg

Ports mają sens, gdy potrzebujesz:

  • nietypowych opcji kompilacji,
  • własnych patchy,
  • wersji/konfiguracji niedostępnej jako standardowy pakiet.

Drzewo Ports zwykle znajduje się w:

/usr/ports

Na typowym serwerze nie ma powodu komplikować życia bez potrzeby.


9. Najważniejsza rzecz: system usług FreeBSD

FreeBSD nie używa systemd.

Usługi obsługuje klasyczny mechanizm:

rc(8)
rc.conf
rc.d
service
sysrc

To trzeba znać dobrze.


10. Gdzie znajdują się skrypty usług

Usługi systemowe:

/etc/rc.d

Usługi zainstalowane z pakietów:

/usr/local/etc/rc.d

Przykład:

/etc/rc.d/sshd
/usr/local/etc/rc.d/nginx

Nie trzeba uruchamiać tych skryptów bezpośrednio.

Używaj:

service

11. Lista usług

Wszystkie skrypty usług:

service -l

Usługi włączone:

service -e

Usługi uporządkowane zgodnie z kolejnością startu:

service -r

Bardziej szczegółowo:

service -rv

12. Uruchamianie usług

Schemat:

service NAZWA AKCJA

Przykład:

service sshd status
service sshd start
service sshd stop
service sshd restart
service nginx restart

Najczęstsze akcje:

start
stop
restart
reload
status
rcvar

Nie każda usługa obsługuje wszystkie.


13. Dlaczego service nginx start czasem nie działa

We FreeBSD zwykłe:

service nginx start

zakłada, że usługa jest włączona w konfiguracji startowej.

Jeżeli nie jest, zobaczysz komunikat sugerujący ustawienie odpowiedniej zmiennej.

Dla nginx:

nginx_enable="YES"

14. rc.conf - centrum konfiguracji systemu

Najważniejszy plik:

/etc/rc.conf

Przykład:

hostname="server.example"
sshd_enable="YES"
nginx_enable="YES"
pf_enable="YES"

Nie edytuj:

/etc/defaults/rc.conf

To plik z wartościami domyślnymi systemu.

Własne ustawienia umieszczaj w:

/etc/rc.conf

15. sysrc - najlepszy sposób zmiany rc.conf

Zamiast ręcznie dopisywać:

nginx_enable="YES"

można zrobić:

sysrc nginx_enable="YES"

To bezpieczne i wygodne.


Odczyt wartości

sysrc nginx_enable

Sama wartość

sysrc -n nginx_enable

Włączenie usługi

sysrc nginx_enable="YES"

Wyłączenie

sysrc nginx_enable="NO"

Usunięcie zmiennej

sysrc -x nginx_enable

16. Typowy cykl instalacji nowej usługi

Przykład nginx.

1. Instalacja

pkg install nginx

2. Sprawdzenie plików

pkg info -l nginx

3. Sprawdzenie skryptu usługi

service nginx rcvar

Najczęściej zobaczysz informację w rodzaju:

nginx_enable="NO"

4. Włączenie autostartu

sysrc nginx_enable="YES"

5. Uruchomienie

service nginx start

6. Status

service nginx status

7. Sprawdzenie portu

sockstat -4 -6 -l

8. Logi

Zależnie od aplikacji:

/var/log
/usr/local/var/log

lub ścieżka skonfigurowana przez usługę.


17. onestart, onestop i onerestart

Czasem chcesz uruchomić usługę bez włączania jej na stałe.

Wtedy:

service nginx onestart

Zatrzymanie:

service nginx onestop

Restart:

service nginx onerestart

To omija wymóg:

nginx_enable="YES"

Bardzo przydatne podczas testów.


18. force*

Istnieją również warianty typu:

service nginx forcestart
service nginx forcestop

Nie należy ich używać jako standardowego sposobu administracji.

force* ignoruje część normalnych zabezpieczeń mechanizmu rc.

Najpierw rozwiąż przyczynę problemu.


19. Restart wszystkich lokalnych usług

Można wykonać:

service -R

Polecenie restartuje włączone lokalne usługi.

Nie jest to coś, co należy robić bezmyślnie na produkcji.


20. Autostart usług - zasada

Jeśli usługa ma wystartować po reboot:

sysrc nazwa_enable="YES"

Przykłady:

sysrc sshd_enable="YES"
sysrc nginx_enable="YES"
sysrc postgresql_enable="YES"

Następnie:

service nazwa start

21. Konfiguracja usług

Dobra reguła:

usługa systemowa

szukaj w:

/etc

usługa z pakietu

szukaj w:

/usr/local/etc

Przykłady:

/etc/ssh/sshd_config
/usr/local/etc/nginx/nginx.conf

Pakiety często instalują:

plik.conf.sample

który trzeba skopiować:

cp plik.conf.sample plik.conf

22. Sprawdzenie konfiguracji przed restartem

To bardzo ważny nawyk.

Przykłady:

nginx -t
sshd -t
pfctl -vnf /etc/pf.conf

Najpierw test konfiguracji, dopiero potem:

service nginx reload

lub:

service nginx restart

Na zdalnym serwerze może to uratować dostęp.


23. Własna aplikacja jako usługa

Załóżmy, że masz program:

/usr/local/bin/myapp

który działa ciągle w tle.

Najlepiej utworzyć dla niego skrypt:

/usr/local/etc/rc.d/myapp

Minimalny przykład:

#!/bin/sh

# PROVIDE: myapp
# REQUIRE: NETWORKING
# KEYWORD: shutdown

. /etc/rc.subr

name="myapp"
rcvar="${name}_enable"

pidfile="/var/run/${name}.pid"

command="/usr/sbin/daemon"
command_args="-f -S -p ${pidfile} -u myapp /usr/local/bin/myapp"

load_rc_config "$name"

: ${myapp_enable:="NO"}

run_rc_command "$1"

Nadaj wykonywalność:

chmod +x /usr/local/etc/rc.d/myapp

Włącz:

sysrc myapp_enable="YES"

Uruchom:

service myapp start

Sprawdź:

service myapp status

W tym przykładzie daemon(8):

  • odłącza aplikację od terminala,
  • uruchamia ją jako użytkownik myapp,
  • zapisuje PID,
  • może kierować wyjście do sysloga.

Dla własnych aplikacji Go jest to bardzo wygodny sposób integracji z FreeBSD.


24. daemon(8)

daemon uruchamia zwykły program jak proces serwerowy.

Przykład:

daemon -u webapp /usr/local/bin/webapp

Można włączyć logowanie do sysloga:

daemon -S -u webapp /usr/local/bin/webapp

PID:

daemon -p /var/run/webapp.pid /usr/local/bin/webapp

Automatyczny restart po zakończeniu:

daemon -r /usr/local/bin/webapp

To bardzo przydatne dla małych własnych usług.


25. Aktualizacje systemu

FreeBSD należy aktualizować w dwóch warstwach:

  1. base system,
  2. pakiety.

To nie jest to samo.


26. Aktualizacja pakietów

Standardowo:

pkg update
pkg upgrade

Potem:

pkg audit -F

27. Aktualizacja systemu bazowego

Tradycyjna instalacja FreeBSD używa:

freebsd-update

Aktualizacje bezpieczeństwa:

freebsd-update fetch
freebsd-update install

Po aktualizacji kernela:

shutdown -r now

Po restarcie sprawdź:

freebsd-version
uname -r

28. Uwaga: pkgbase

FreeBSD 15 rozwija również mechanizm zarządzania systemem bazowym przez pakiety - pkgbase.

Nie mieszaj metod aktualizacji bez zrozumienia, w jaki sposób system został zainstalowany.

Typowa instalacja klasyczna:

freebsd-update → system bazowy
pkg            → aplikacje

Instalacja używająca pkgbase może zarządzać systemem bazowym przez repozytorium pakietów.

Jeśli administrujesz istniejącym serwerem, najpierw ustal sposób instalacji i aktualizacji, zamiast automatycznie przełączać go na inną metodę.


29. Boot Environments - jedna z najlepszych rzeczy przy ZFS

Jeśli root znajduje się na ZFS, możesz korzystać z boot environments.

Polecenie:

bectl

Lista:

bectl list

Przed dużą aktualizacją:

bectl create before-upgrade

Jeżeli coś pójdzie źle, można uruchomić wcześniejsze środowisko.

Aktywacja:

bectl activate before-upgrade

To bardzo dobry nawyk przed:

  • dużym upgradem,
  • zmianą kernela,
  • ryzykowną modyfikacją systemu.

30. Sieć - najważniejsze narzędzia

Lista interfejsów:

ifconfig

Konkretny:

ifconfig igc0

Routing:

netstat -rn

Trasa domyślna:

route -n get default

Otwarte porty:

sockstat -4 -6 -l

To polecenie jest jednym z najważniejszych podczas administracji serwerem.

Przykład:

USER     COMMAND    PID   FD PROTO LOCAL ADDRESS
root     sshd       ...      tcp4 *:22
www      nginx      ...      tcp4 *:80

31. Konfiguracja interfejsu w rc.conf

DHCP:

sysrc ifconfig_igc0="DHCP"

Statyczny adres:

sysrc ifconfig_igc0="inet 192.168.10.20 netmask 255.255.255.0"

Brama:

sysrc defaultrouter="192.168.10.1"

Hostname:

sysrc hostname="server.example"

Po zmianach sieci można restartować odpowiednie elementy, ale na zdalnym serwerze rób to bardzo ostrożnie.

Pełny restart sieci może odciąć SSH.

Często bezpieczniejszy jest reboot, jeśli masz pewny dostęp konsolowy/IPMI.


32. DNS

Konfiguracja resolvera:

/etc/resolv.conf

Przykład:

nameserver 1.1.1.1
nameserver 9.9.9.9

Test DNS:

host freebsd.org

Jeżeli host nie jest dostępny, przydatne mogą być pakiety zawierające dig.


33. /etc/hosts

Lokalne mapowanie nazw:

127.0.0.1 localhost
192.168.10.20 server
192.168.10.30 nas

Sprawdzenie:

getent hosts server

34. SSH

FreeBSD posiada OpenSSH w systemie bazowym.

Usługa:

service sshd status

Włączenie:

sysrc sshd_enable="YES"

Uruchomienie:

service sshd start

Konfiguracja:

/etc/ssh/sshd_config

35. SSH - klucze

Na komputerze klienta:

ssh-keygen

Klucz publiczny trafia na serwer do:

~/.ssh/authorized_keys

Uprawnienia:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

36. SSH - podstawowe utwardzenie

Rozważ:

PermitRootLogin no

Po upewnieniu się, że logowanie kluczem działa:

PasswordAuthentication no

Przed restartem SSH:

sshd -t

Dopiero potem:

service sshd reload

Nie wyłączaj logowania hasłem zdalnie, zanim nie sprawdzisz w osobnej sesji, że logowanie kluczem rzeczywiście działa.


37. Firewall

FreeBSD zawiera kilka firewalli:

  • PF,
  • IPFW,
  • IPFILTER.

Na nowym serwerze sensownym wyborem jest najczęściej PF albo IPFW.

W tym kompendium używamy PF.


38. PF - włączenie

Konfiguracja:

/etc/pf.conf

Test konfiguracji:

pfctl -vnf /etc/pf.conf

Włączenie przy starcie:

sysrc pf_enable="YES"

Start:

service pf start

39. Minimalny PF dla serwera

Przykład:

ext_if="igc0"

set skip on lo0

block return all

pass out all keep state

pass in on $ext_if proto tcp to ($ext_if) port 22 keep state

To:

  • blokuje przychodzący ruch domyślnie,
  • pozwala na ruch wychodzący,
  • pozwala na SSH.

Jeśli serwer ma nginx:

pass in on $ext_if proto tcp to ($ext_if) port { 80 443 } keep state

40. PF - test przed przeładowaniem

Zawsze:

pfctl -vnf /etc/pf.conf

Jeśli poprawne:

pfctl -f /etc/pf.conf

Podgląd reguł:

pfctl -sr

Stany:

pfctl -ss

Statystyki:

pfctl -si

Na zdalnym serwerze błędna reguła PF może odciąć SSH. Dobrze mieć konsolę awaryjną.


41. Procesy i zasoby

top

top

Pokazuje:

  • CPU,
  • pamięć,
  • load average,
  • procesy.

ps

ps aux

Wyszukiwanie:

ps aux | grep nginx

Lepiej:

pgrep -fl nginx

Pamięć

sysctl hw.physmem

Informacje o VM:

vmstat

CPU

sysctl hw.model

Liczba CPU:

sysctl hw.ncpu

42. Dyski

Lista urządzeń:

geom disk list

Prościej:

camcontrol devlist

Zajętość filesystemów:

df -h

43. ZFS - dlaczego warto

ZFS jest bardzo dobrym wyborem dla FreeBSD jako serwera.

Zapewnia:

  • checksums,
  • snapshoty,
  • pule,
  • mirrory,
  • RAID-Z,
  • kompresję,
  • klony,
  • send/receive,
  • scrub,
  • boot environments.

44. Podstawowe pojęcia ZFS

Pool

Najwyższy poziom magazynu:

zroot
tank
storage

Polecenie:

zpool

Dataset

Logiczny filesystem wewnątrz puli:

tank/media
tank/backups
tank/jails

Polecenie:

zfs

45. ZFS - najważniejsze polecenia

Lista pul:

zpool list

Stan:

zpool status

Bardzo ważne:

zpool status -x

Jeżeli wszystko jest zdrowe, ZFS poinformuje, że wszystkie pule są zdrowe.


Datasety

zfs list

Utworzenie

zfs create tank/data

Kompresja

zfs set compression=lz4 tank/data

Sprawdzenie:

zfs get compression tank/data

46. ZFS snapshoty

Snapshot:

zfs snapshot tank/data@before-upgrade

Lista:

zfs list -t snapshot

Usunięcie:

zfs destroy tank/data@before-upgrade

Rollback:

zfs rollback tank/data@before-upgrade

Rollback usuwa późniejsze zmiany. Zawsze upewnij się, co robisz.


47. ZFS scrub

Scrub sprawdza integralność danych.

Uruchomienie:

zpool scrub tank

Status:

zpool status tank

Zatrzymanie:

zpool scrub -s tank

Na serwerze z ważnymi danymi okresowy scrub jest dobrą praktyką.


48. ZFS send / receive

Snapshot można wysłać do drugiej puli:

zfs send tank/data@snap | zfs receive backup/data

Przez SSH:

zfs send tank/data@snap | ssh backup-server zfs receive backup/data

To potężna baza do backupu ZFS.


49. ZFS to nie backup

Mirror ZFS:

dysk A + dysk B

chroni przed awarią pojedynczego dysku.

Nie chroni przed:

  • przypadkowym usunięciem,
  • błędem administratora,
  • ransomware,
  • pożarem,
  • kradzieżą,
  • uszkodzeniem całej maszyny.

RAID ≠ backup.


50. SMART

Zainstaluj:

pkg install smartmontools

Sprawdzenie dysku:

smartctl -a /dev/ada0

Test krótki:

smartctl -t short /dev/ada0

Test długi:

smartctl -t long /dev/ada0

Potem ponownie:

smartctl -a /dev/ada0

Nazwy urządzeń zależą od kontrolera i typu dysku.


51. Montowanie filesystemów

Aktualnie zamontowane:

mount

Zajętość:

df -h

Konfiguracja montowania przy starcie:

/etc/fstab

Przykład:

/dev/ada1p1    /data    ufs    rw    2    2

Przed rebootem warto sprawdzić:

mount -a

Błąd w fstab może utrudnić boot.


52. Logi

Najważniejsze miejsce:

/var/log

Typowe pliki:

/var/log/messages
/var/log/security
/var/log/auth.log
/var/log/cron

Nie każda instalacja musi mieć dokładnie ten sam zestaw.


53. Logi na żywo

tail -f /var/log/messages

Kilka ostatnich linii:

tail -100 /var/log/messages

Wyszukanie błędów:

grep -i error /var/log/messages

54. Syslog

Systemowy daemon:

service syslogd status

Konfiguracja:

/etc/syslog.conf

Po zmianie:

service syslogd reload

55. Rotacja logów

FreeBSD używa:

newsyslog

Konfiguracja:

/etc/newsyslog.conf
/usr/local/etc/newsyslog.conf.d/

Możesz wymusić rotację zgodnie z konfiguracją:

newsyslog

Aplikacje instalowane z pakietów mogą dostarczać własne wpisy konfiguracyjne.


56. Cron

Edycja crona bieżącego użytkownika:

crontab -e

Lista:

crontab -l

Format:

minuta godzina dzień_miesiąca miesiąc dzień_tygodnia polecenie

Przykład codziennie o 03:30:

30 3 * * * /usr/local/bin/backup.sh

57. Cron roota

Jako root:

crontab -e

Zadania roota wykonują się z uprawnieniami administratora.

Nie wpisuj tam skryptów, których właścicielem może być zwykły użytkownik.


58. periodic

FreeBSD ma dodatkowy mechanizm:

periodic

Standardowe zadania:

periodic daily
periodic weekly
periodic monthly

Konfiguracja:

/etc/periodic.conf

Jeżeli chcesz poznać dostępne opcje:

man periodic.conf

periodic wykonuje typowe prace konserwacyjne systemu i generuje raporty.


59. sysctl

sysctl pozwala odczytywać i zmieniać wiele parametrów kernela podczas pracy systemu.

Lista:

sysctl -a

Przykład:

sysctl hw.ncpu
sysctl hw.physmem

60. Tymczasowa zmiana sysctl

Przykład:

sysctl net.inet.ip.forwarding=1

Po restarcie zmiana znika.


61. Trwała zmiana sysctl

Plik:

/etc/sysctl.conf

Przykład:

net.inet.ip.forwarding=1

Nie kopiuj losowych „tuningów FreeBSD” z blogów.

Najpierw zrozum parametr i sprawdź:

man 4 ...
man 5 sysctl.conf

62. /boot/loader.conf

Używany głównie do ustawień wymaganych podczas startu kernela.

Przykład ładowania modułu:

foo_load="YES"

Nie wrzucaj tam każdego tuningu znalezionego w Internecie.

Jeżeli parametr można ustawić po starcie przez sysctl, zazwyczaj powinien trafić do:

/etc/sysctl.conf

63. Moduły kernela

Lista:

kldstat

Załadowanie:

kldload modul

Usunięcie:

kldunload modul

Informacje:

kldstat -v

64. Jails - podstawowa idea

Jail to natywna izolacja FreeBSD.

Można myśleć o niej jak o bardzo lekkim kontenerze systemowym.

Jail:

  • korzysta z kernela hosta,
  • ma własny filesystem/userland,
  • może mieć własny adres IP,
  • może mieć własne procesy i usługi,
  • jest izolowany od hosta.

To jeden z najmocniejszych elementów FreeBSD jako serwera.


65. Do czego używać jails

Przykładowy serwer:

host FreeBSD
├── jail: reverse-proxy
├── jail: aplikacja
├── jail: postgres
└── jail: monitoring

Korzyści:

  • separacja usług,
  • łatwiejsze backupy,
  • prostsze migracje,
  • ograniczenie skutków włamania,
  • porządek w konfiguracji.

66. Konfiguracja jails

Główne miejsca:

/etc/jail.conf
/etc/jail.conf.d/

Dobrą praktyką jest osobny plik:

/etc/jail.conf.d/www.conf

67. Minimalna definicja jail

Zakładamy, że system jail znajduje się już w:

/usr/local/jails/www

Przykład:

www {
    host.hostname = "www.local";
    path = "/usr/local/jails/www";

    exec.start = "/bin/sh /etc/rc";
    exec.stop = "/bin/sh /etc/rc.shutdown";

    mount.devfs;

    ip4.addr = "192.168.10.50";
    interface = "igc0";
}

Szczegóły sieci zależą od architektury serwera.


68. Autostart jails

sysrc jail_enable="YES"

Opcjonalnie równoległy start:

sysrc jail_parallel_start="YES"

69. Zarządzanie jail

Lista:

jls

Start wszystkich:

service jail start

Start konkretnego:

service jail start www

Stop:

service jail stop www

Restart:

service jail restart www

70. Wejście do jail

jexec www /bin/sh

lub:

jexec www /bin/csh

Wtedy pracujesz wewnątrz jail.


71. Usługi w jail

Można używać:

service -j www nginx status

Przykład:

service -j www nginx restart

To pozwala zarządzać usługami jail bez ręcznego jexec.


72. ZFS i jails

Bardzo wygodny układ:

zroot/jails
zroot/jails/www
zroot/jails/db

Daje to możliwość:

  • snapshotów pojedynczego jail,
  • backupu zfs send,
  • quota,
  • klonowania.

Przykład:

zfs create zroot/jails
zfs create zroot/jails/www

73. Service Jails w FreeBSD 15

FreeBSD 15 wprowadził service jails.

Pozwalają uruchomić pojedynczą usługę w automatycznie tworzonej izolacji jail bez budowania kompletnego tradycyjnego jail.

Przykładowa idea:

service syslogd stop
sysrc syslogd_svcj="YES"
service syslogd start

To rozwiązanie bardziej zaawansowane.

Najpierw dobrze opanuj klasyczne:

rc.conf
service
jails

dopiero potem eksperymentuj z service jails.


74. Backup

Backup powinien obejmować co najmniej:

/etc
/usr/local/etc
/home lub /usr/home
ważne datasety
bazy danych
klucze SSH
konfigurację aplikacji

Nie wystarczy backup plików aplikacji.


75. Backup baz danych

Nie kopiuj na żywo plików bazy PostgreSQL/MySQL jako zwykłych plików i nie zakładaj, że backup będzie spójny.

Używaj narzędzi bazy:

PostgreSQL:

pg_dump
pg_dumpall

lub kontrolowanego snapshotu przy poprawnie przygotowanej procedurze.


76. ZFS jako mechanizm backupu

Dobry schemat:

snapshot
↓
zfs send
↓
drugi serwer / drugi pool / backup off-site

Przykład:

zfs snapshot tank/data@2026-09-19
zfs send tank/data@2026-09-19 | ssh backup zfs receive backups/server/data

77. Aktualizacje - rozsądna procedura

Dla domowego lub małego serwera:

  1. sprawdź backup,
  2. sprawdź stan ZFS,
  3. utwórz boot environment,
  4. zaktualizuj base system,
  5. zrestartuj jeśli trzeba,
  6. zaktualizuj pakiety,
  7. sprawdź usługi,
  8. sprawdź logi,
  9. sprawdź porty,
  10. wykonaj podstawowe testy aplikacji.

Przykład:

zpool status -x
bectl create before-update

freebsd-update fetch
freebsd-update install

shutdown -r now

Po restarcie:

pkg update
pkg upgrade
pkg audit -F

Następnie:

service -e
sockstat -4 -6 -l
tail -100 /var/log/messages

78. Monitoring podstawowy

Bez instalowania ciężkich systemów monitoringu warto regularnie sprawdzać:

uptime
top
df -h
zpool status
sockstat -4 -6 -l
service -e
pkg audit -F

79. uptime

uptime

Pokazuje między innymi:

  • jak długo działa system,
  • ilu jest użytkowników,
  • load average.

Load average nie oznacza bezpośrednio procentów CPU.


80. dmesg

Komunikaty kernela:

dmesg

Przydatne przy:

  • problemach z dyskami,
  • siecią,
  • sterownikami,
  • USB,
  • błędach sprzętowych.

Ostatnie linie:

dmesg | tail

81. Porty i nasłuchujące procesy

Najważniejsze:

sockstat -4 -6 -l

Tylko TCP:

sockstat -4 -6 -l -P tcp

Jeżeli aplikacja „działa”, ale nie można się z nią połączyć:

  1. service app status
  2. sockstat -4 -6 -l
  3. sprawdź firewall,
  4. sprawdź bind address,
  5. sprawdź logi.

82. Typowy problem: localhost zamiast wszystkich interfejsów

Aplikacja może nasłuchiwać tylko:

127.0.0.1:8080

Wtedy z innego komputera nie będzie dostępna.

Sprawdź:

sockstat -4 -6 -l

Jeśli ma być dostępna z sieci, aplikacja musi nasłuchiwać na odpowiednim adresie, np.:

0.0.0.0:8080

albo konkretnym IP serwera.

Nie wystawiaj jednak bazy danych czy paneli administracyjnych na wszystkie interfejsy bez potrzeby.


83. Reverse proxy

Typowy serwer może wyglądać tak:

Internet
   ↓
PF
   ↓
nginx :80/:443
   ↓
aplikacja :8080

Aplikacja może wtedy nasłuchiwać wyłącznie na:

127.0.0.1:8080

a nginx wystawia ją na zewnątrz.

To często lepsze niż bezpośrednie wystawianie aplikacji.


84. Nginx - szybki przykład

Instalacja:

pkg install nginx

Włączenie:

sysrc nginx_enable="YES"

Test konfiguracji:

nginx -t

Start:

service nginx start

Reload:

service nginx reload

Konfiguracja:

/usr/local/etc/nginx/nginx.conf

85. Reverse proxy nginx

Przykładowa sekcja:

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Po zmianie:

nginx -t
service nginx reload

86. Bazy danych jako usługi

Pakiet zwykle instaluje:

  • binaria,
  • konfigurację,
  • skrypt rc.d.

Schemat pozostaje ten sam:

pkg install pakiet
service nazwa rcvar
sysrc nazwa_enable="YES"
service nazwa start
service nazwa status

Część baz wymaga dodatkowej inicjalizacji katalogu danych przed pierwszym startem.

Zawsze czytaj komunikaty wyświetlane przez pkg install.


87. WireGuard

FreeBSD posiada obsługę WireGuarda.

W zależności od sposobu konfiguracji możesz używać narzędzi:

wg
wg-quick

oraz interfejsów FreeBSD.

Kluczowa zasada administracyjna:

po uruchomieniu sprawdź:

ifconfig
wg show
netstat -rn

Routing jest równie ważny jak sama konfiguracja tunelu.


88. System DNS, routing i firewall - diagnostyka warstwami

Jeżeli „sieć nie działa”, nie zgaduj.

Sprawdzaj po kolei:

1. Interfejs

ifconfig

2. Adres IP

Czy interfejs ma poprawny adres?

3. Routing

netstat -rn

4. Brama

route -n get default

5. IP bez DNS

ping 1.1.1.1

6. DNS

host freebsd.org

7. Firewall

pfctl -sr

8. Nasłuch

sockstat -4 -6 -l

Takie podejście jest znacznie skuteczniejsze niż losowe restartowanie usług.


89. Diagnostyka usługi - uniwersalny schemat

Załóżmy, że nginx nie działa.

1. Czy usługa istnieje?

service -l | grep nginx

2. Czy jest włączona?

service nginx rcvar

lub:

sysrc nginx_enable

3. Status

service nginx status

4. Test konfiguracji

nginx -t

5. Próba startu

service nginx start

6. Logi

tail -100 /var/log/messages

plus log aplikacji.

7. Proces

pgrep -fl nginx

8. Port

sockstat -4 -6 -l

9. Firewall

pfctl -sr

90. Co uruchamia się podczas bootowania

W uproszczeniu:

loader
↓
kernel
↓
init
↓
rc
↓
rc.conf
↓
skrypty /etc/rc.d
↓
skrypty /usr/local/etc/rc.d

Kolejność usług ustalana jest przez zależności w skryptach rc.d.

Nie musisz ręcznie tworzyć kolejności typu:

01-database
02-web
03-app

Mechanizm rc potrafi zależności uporządkować.


91. Zależności w skryptach rc.d

Własny skrypt może zawierać:

# PROVIDE: myapp
# REQUIRE: NETWORKING
# BEFORE: LOGIN
# KEYWORD: shutdown

Znaczenie:

  • PROVIDE - co skrypt zapewnia,
  • REQUIRE - czego wymaga wcześniej,
  • BEFORE - przed czym ma wystartować,
  • KEYWORD - dodatkowe właściwości.

Kolejność można zobaczyć:

service -r

92. Awaryjny start i problemy z bootem

Jeśli system nie bootuje poprawnie, FreeBSD pozwala wejść w tryb single-user.

Po uruchomieniu mogą być potrzebne:

fsck

dla UFS lub diagnostyka ZFS.

Root filesystem może być tylko do odczytu.

Remount:

mount -u /
mount -a

Nie wykonuj fsck na zamontowanym do zapisu filesystemie.


93. Reboot i shutdown

Restart:

shutdown -r now

Wyłączenie:

shutdown -p now

Można też:

reboot

ale shutdown daje czytelniejszą kontrolę.


94. Sprawdzanie startu po reboot

Po restarcie:

uptime
service -e
sockstat -4 -6 -l
zpool status -x
tail -100 /var/log/messages

To szybki sanity check.


95. Bezpieczeństwo - minimum dla serwera

Przynajmniej:

  1. regularne aktualizacje,
  2. pkg audit -F,
  3. SSH na kluczach,
  4. root bez logowania po SSH,
  5. firewall,
  6. nie wystawiać niepotrzebnych usług,
  7. osobni użytkownicy dla aplikacji,
  8. backup poza maszyną,
  9. regularna kontrola logów,
  10. sprawdzanie otwartych portów.

96. Najważniejsza reguła bezpieczeństwa usług

Nie uruchamiaj aplikacji jako root, jeżeli nie musi działać jako root.

Przykład użytkownika:

pw useradd webapp -d /nonexistent -s /usr/sbin/nologin

Następnie aplikację uruchamiaj przez:

daemon -u webapp ...

Jeżeli proces zostanie przejęty, atakujący nie uzyskuje automatycznie praw roota.


97. Użytkownik bez logowania

Dla usług dobry shell to:

/usr/sbin/nologin

Sprawdzenie:

grep nologin /etc/shells

Konta aplikacyjne nie potrzebują interaktywnego logowania.


98. Uprawnienia plików

Zmiana właściciela:

chown user:group plik

Rekurencyjnie:

chown -R webapp:webapp /usr/local/webapp

Zmiana trybu:

chmod 640 config.conf
chmod 750 katalog

Nie rozwiązuj problemów przez:

chmod -R 777

To niemal zawsze zły pomysł.


99. Proces instalacji nowego serwera

Praktyczna kolejność:

1. Instalacja FreeBSD

Preferuj:

  • ZFS jako root,
  • rozsądny hostname,
  • poprawną sieć,
  • konto administratora.

2. Aktualizacja

freebsd-update fetch
freebsd-update install
pkg update
pkg upgrade

3. SSH

  • klucze,
  • test,
  • ograniczenie logowania.

4. Firewall

  • minimalny ruleset,
  • test składni,
  • dopiero potem aktywacja.

5. ZFS

  • datasety,
  • snapshoty,
  • plan scrub,
  • backup.

6. Usługi

Każda według schematu:

pkg install
→ konfiguracja
→ test konfiguracji
→ sysrc *_enable=YES
→ service start
→ status
→ port
→ log

100. Serwer aplikacji - przykładowa architektura

Prosty i czytelny układ:

FreeBSD host
│
├── PF
│
├── nginx
│   ├── :80
│   └── :443
│
├── aplikacja Go
│   └── 127.0.0.1:8080
│
├── PostgreSQL
│   └── 127.0.0.1:5432
│
└── ZFS
    ├── zroot/app
    ├── zroot/db
    └── zroot/backups

Można to później rozdzielić na jails:

FreeBSD host
│
├── jail nginx
├── jail app
└── jail postgres

Nie trzeba zaczynać od najbardziej złożonej architektury.


101. Co warto instalować na nowym serwerze

Przykładowy zestaw:

pkg install vim git curl rsync smartmontools

Opcjonalnie:

pkg install sudo tmux htop

Nie instaluj narzędzi tylko dlatego, że „wszyscy je mają”.

FreeBSD base system zawiera bardzo dużo użytecznych narzędzi.


102. Dokumentacja systemowa

Najważniejszą dokumentacją FreeBSD są manuale.

Przykład:

man service

Jeśli chcesz wiedzieć, jak działa konfiguracja:

man rc.conf

Jeśli nie pamiętasz nazwy polecenia:

apropos service

lub:

man -k jail

103. Jak czytać nazwy manuali

W dokumentacji zobaczysz zapis:

service(8)
rc.conf(5)
zfs(8)

Liczba oznacza sekcję manuala.

Typowo:

1 - polecenia użytkownika
2 - syscall
3 - biblioteki
4 - sterowniki/kernel
5 - formaty plików konfiguracyjnych
8 - administracja systemem

Przykład:

man 8 service
man 5 rc.conf

104. Najważniejsze komendy administratora

System

freebsd-version
uname -a
uptime
dmesg
sysctl

Pakiety

pkg update
pkg upgrade
pkg install
pkg delete
pkg info
pkg audit -F

Usługi

service -l
service -e
service nazwa status
service nazwa start
service nazwa stop
service nazwa restart
service nazwa reload
service nazwa rcvar

Autostart

sysrc nazwa_enable="YES"

Sieć

ifconfig
netstat -rn
route -n get default
sockstat -4 -6 -l

Procesy

top
ps aux
pgrep -fl nazwa

Dyski

df -h
zpool list
zpool status
zfs list

Jails

jls
jexec
service jail
service -j jail usluga

Logi

tail -f /var/log/messages
grep

105. Codzienna kontrola serwera

Nie trzeba wykonywać jej codziennie ręcznie, ale warto znać schemat:

uptime
zpool status -x
df -h
sockstat -4 -6 -l
pkg audit -F

Jeżeli coś wygląda źle:

tail -100 /var/log/messages

106. Kontrola po zmianie konfiguracji

Po każdej większej zmianie:

  1. test składni,
  2. reload zamiast restartu, jeśli możliwe,
  3. sprawdzenie statusu,
  4. sprawdzenie portu,
  5. sprawdzenie logu.

Schemat:

nginx -t
service nginx reload
service nginx status
sockstat -4 -6 -l
tail -50 /var/log/messages

107. Kontrola raz na tydzień / miesiąc

Warto sprawdzać:

pkg audit -F
pkg upgrade
zpool status
zfs list
df -h

SMART:

smartctl -a /dev/ada0

Okresowo:

zpool scrub tank

oraz przede wszystkim:

czy backup naprawdę da się odtworzyć.

Backup, którego nigdy nie testowano, jest tylko nadzieją.


108. Najczęstsze różnice względem Debiana/Linuxa

Debian/Linux FreeBSD
apt pkg
systemctl service
systemd units rc.d scripts
/etc/default/... zwykle rc.conf + config aplikacji
/etc/systemd/system /usr/local/etc/rc.d dla własnych usług
/etc dla pakietów często /usr/local/etc
Linux namespaces/containers jails
ip addr ifconfig
ss -lntp sockstat -4 -6 -l
/proc intensywnie używane dużo danych przez sysctl
distro + kernel spójny base system

To nie znaczy, że FreeBSD jest „lepszym Linuksem”.

To inny system z inną filozofią.


109. Czego nie robić

Nie edytuj:

/etc/defaults/rc.conf

Edytuj:

/etc/rc.conf

Nie instaluj wszystkiego ze źródeł

Jeśli:

pkg install

wystarcza, użyj pakietu.


Nie uruchamiaj wszystkiego jako root

Twórz użytkowników usług.


Nie otwieraj każdego portu w firewallu

Otwieraj tylko to, co rzeczywiście potrzebne.


Nie rób chmod 777, żeby „zadziałało”

Znajdź problem z uprawnieniami.


Nie restartuj całej maszyny przy każdym problemie

Najpierw:

service nazwa restart

lub:

service nazwa reload

Nie zakładaj, że mirror jest backupem

Nie jest.


110. Gdy usługa nie chce wystartować

Uniwersalne pytania:

Czy pakiet jest zainstalowany?

pkg info | grep nazwa

Czy skrypt istnieje?

service -l | grep nazwa

Czy jest włączona?

service nazwa rcvar

Czy config jest poprawny?

Użyj testera aplikacji.

Co mówi start?

service nazwa start

Co mówią logi?

tail -100 /var/log/messages

Czy proces istnieje?

pgrep -fl nazwa

Czy port jest otwarty?

sockstat -4 -6 -l

Czy firewall przepuszcza?

pfctl -sr

111. Przykład: instalacja własnej aplikacji Go

Załóżmy:

/usr/local/myapp/myapp

1. Użytkownik

pw useradd myapp -d /nonexistent -s /usr/sbin/nologin

2. Katalog

mkdir -p /usr/local/myapp
chown -R myapp:myapp /usr/local/myapp

3. Konfiguracja

/usr/local/etc/myapp.conf

Ustaw właściciela i prawa odpowiednio do tego, czy plik zawiera sekrety.

4. Skrypt rc.d

/usr/local/etc/rc.d/myapp

5. Włączenie

sysrc myapp_enable="YES"

6. Start

service myapp start

7. Kontrola

service myapp status
pgrep -fl myapp
sockstat -4 -6 -l

8. Reverse proxy

nginx kieruje:

app.example.com

do:

127.0.0.1:8080

112. Przykład: bezpieczna zmiana nginx

Edytujesz:

/usr/local/etc/nginx/nginx.conf

Następnie:

nginx -t

Jeżeli test jest OK:

service nginx reload

Kontrola:

service nginx status
sockstat -4 -6 -l

Jeśli coś nie działa:

tail -100 /var/log/messages

plus log nginx.


113. Przykład: pakiet został zaktualizowany i usługa nie działa

Sprawdź:

pkg info nginx
service nginx status
nginx -t
tail -100 /var/log/messages

Sprawdź także:

/usr/local/etc

Pakiet może zainstalować nowy plik:

*.sample

z nowymi opcjami konfiguracji.

Nie zakładaj automatycznie, że stary config jest kompatybilny.


114. Przykład: po reboot aplikacja nie wystartowała

Najpierw:

service myapp status

Potem:

service myapp rcvar

Jeżeli:

myapp_enable="NO"

to brak autostartu.

Włącz:

sysrc myapp_enable="YES"

Uruchom:

service myapp start

115. Przykład: serwer odpowiada lokalnie, ale nie z LAN

Na serwerze:

curl http://127.0.0.1:8080

działa.

Z innej maszyny nie działa.

Sprawdź:

sockstat -4 -6 -l

Jeżeli widzisz:

127.0.0.1:8080

to aplikacja celowo słucha tylko lokalnie.

Jeżeli powinna być dostępna bezpośrednio w LAN, zmień bind address.

Jeżeli ma być za nginx, nie zmieniaj - skonfiguruj reverse proxy.


116. Przykład: brak miejsca na dysku

Sprawdź:

df -h

Dla ZFS:

zfs list

Snapshoty:

zfs list -t snapshot

Pakiety:

pkg clean

Nie zaczynaj od losowego kasowania plików w:

/var

Najpierw ustal, co zajmuje miejsce.

Pomocne:

du -sh /*

oraz bardziej lokalnie:

du -sh /var/*

Na dużych filesystemach du może działać długo.


117. Przykład: podejrzenie problemu z dyskiem

Sprawdź:

zpool status
dmesg | tail -100
smartctl -a /dev/ada0

Nie ignoruj:

  • checksum errors,
  • read errors,
  • write errors,
  • urządzeń DEGRADED/FAULTED.

ZFS potrafi wykryć problemy, ale nie naprawi fizycznie umierającego dysku.


118. Dobra filozofia administracji FreeBSD

FreeBSD najlepiej administruje się spokojnie i deklaratywnie:

/etc/rc.conf
/usr/local/etc
/etc/pf.conf
/etc/jail.conf.d
/etc/sysctl.conf

Zamiast wykonywać serię losowych komend, staraj się tak skonfigurować system, żeby po reboot sam odtworzył poprawny stan.

To znaczy:

  • usługi mają autostart,
  • sieć ma trwałą konfigurację,
  • firewall ładuje swoje reguły,
  • jails startują automatycznie,
  • filesystemy montują się automatycznie,
  • zadania są w cron/periodic,
  • aplikacje nie zależą od ręcznego uruchamiania.

119. Minimalny workflow administratora

Jeżeli masz zapamiętać tylko jeden schemat pracy:

1. zmień konfigurację
2. sprawdź składnię
3. uruchom/reloaduj usługę
4. sprawdź status
5. sprawdź port
6. sprawdź log
7. upewnij się, że zmiana przetrwa reboot

Czyli:

edytor config
tester config
service app reload
service app status
sockstat -4 -6 -l
tail /var/log/...
sysrc ...

120. Ściąga: usługi

service -l
service -e

service nginx rcvar
service nginx status
service nginx start
service nginx stop
service nginx restart
service nginx reload

sysrc nginx_enable="YES"
sysrc nginx_enable="NO"

service nginx onestart
service nginx onestop

121. Ściąga: system

freebsd-version
uname -a
uptime
dmesg
top
ps aux
sysctl hw.model
sysctl hw.ncpu

122. Ściąga: pakiety

pkg update
pkg upgrade
pkg search nazwa
pkg install nazwa
pkg delete nazwa
pkg info
pkg info nazwa
pkg info -l nazwa
pkg which /sciezka/do/pliku
pkg autoremove
pkg audit -F

123. Ściąga: sieć

ifconfig
netstat -rn
route -n get default
sockstat -4 -6 -l
host freebsd.org
ping 1.1.1.1

124. Ściąga: ZFS

zpool list
zpool status
zpool status -x
zfs list

zfs create tank/data
zfs snapshot tank/data@snap
zfs list -t snapshot
zfs destroy tank/data@snap

zpool scrub tank

125. Ściąga: jails

jls
service jail status
service jail start
service jail stop

service jail start www
service jail stop www

jexec www /bin/sh

service -j www nginx status
service -j www nginx restart

126. Ściąga: PF

pfctl -vnf /etc/pf.conf
pfctl -f /etc/pf.conf
pfctl -sr
pfctl -ss
pfctl -si

sysrc pf_enable="YES"
service pf start
service pf status

127. Ściąga: logi

tail -100 /var/log/messages
tail -f /var/log/messages
grep -i error /var/log/messages

service syslogd status

128. Ściąga: diagnostyka usługi

service app status
service app rcvar
pgrep -fl app
sockstat -4 -6 -l
tail -100 /var/log/messages

Plus własny test konfiguracji aplikacji.


129. Co warto opanować po tym kompendium

W tej kolejności:

  1. pkg,
  2. rc.conf,
  3. sysrc,
  4. service,
  5. sockstat,
  6. SSH,
  7. PF,
  8. ZFS,
  9. cron/periodic,
  10. jails,
  11. własne skrypty rc.d,
  12. backup przez ZFS send/receive.

Jeżeli te elementy masz opanowane, jesteś w stanie samodzielnie utrzymywać mały lub średni serwer FreeBSD.


130. Dokumentacja i źródła

Oficjalna dokumentacja powinna być pierwszym źródłem informacji.

FreeBSD Handbook

https://docs.freebsd.org/en/books/handbook/

Configuration, Services, Logging and Power Management

https://docs.freebsd.org/en/books/handbook/config/

Packages and Ports

https://docs.freebsd.org/en/books/handbook/ports/

Updating and Upgrading FreeBSD

https://docs.freebsd.org/en/books/handbook/cutting-edge/

ZFS

https://docs.freebsd.org/en/books/handbook/zfs/

Jails and Containers

https://docs.freebsd.org/en/books/handbook/jails/

Firewalls

https://docs.freebsd.org/en/books/handbook/firewalls/

Manual pages

https://man.freebsd.org/

Informacje o wydaniach

https://www.freebsd.org/releases/

FreeBSD 15.1-RELEASE:

https://www.freebsd.org/releases/15.1R/announce/

Release Notes:

https://www.freebsd.org/releases/15.1R/relnotes/

Errata:

https://www.freebsd.org/releases/15.1R/errata/

Informacje o wsparciu i bezpieczeństwie

https://www.freebsd.org/security/


131. Ostatnia rzecz do zapamiętania

FreeBSD jako serwer robi się znacznie prostszy, kiedy zrozumiesz pięć elementów:

pkg       → instalacja aplikacji
sysrc     → trwała konfiguracja systemu/usług
service   → sterowanie usługami
ZFS       → magazyn danych i snapshoty
jails     → izolacja usług

I najważniejszy wzorzec:

pkg install aplikacja

sysrc aplikacja_enable="YES"

service aplikacja start

service aplikacja status

sockstat -4 -6 -l

To jest odpowiednik dużej części codziennej administracji serwerem FreeBSD.