Quick reference по всей серии из 10 статей. Команды сгруппированы по задачам. Для углублённого понимания — ссылки на соответствующие статьи.
Информация о системе
freebsd-version # версия base system (точнее uname -r)
freebsd-version -k # версия ядра
freebsd-version -u # версия userland
uname -a # полная информация о системе
sysctl hw.machine # архитектура
sysctl hw.model # модель CPU
sysctl hw.ncpu # число CPU
sysctl hw.physmem # физическая RAM
sysctl kern.boottime # время загрузки
uptime # uptime + load average
dmesg | less # сообщения ядра
kenv # переменные окружения загрузчика
📖 Статьи: файловая иерархия, sysctl и ядро
Управление сервисами (rc)
service <name> start|stop|restart|status
service <name> enable # = sysrc <name>_enable=YES
service -e # список включённых сервисов
service -l # все доступные rc-скрипты
sysrc <var>=<value> # установить переменную в /etc/rc.conf
sysrc -a # все переменные rc.conf
sysrc -x <var> # удалить переменную
# Service jails (лёгкая изоляция)
sysrc nginx_svcj="YES"
📖 Статья: rc-система
Сеть
# Интерфейсы
ifconfig # все интерфейсы
ifconfig vtnet0 inet 10.0.0.1/24 # назначить IP
ifconfig vtnet0 up|down # поднять/опустить
# Маршрутизация
netstat -rn # таблица маршрутизации
route add default 10.0.0.1 # шлюз по умолчанию
route add -net 192.168.0.0/16 10.0.0.2 # статический маршрут
# DNS
cat /etc/resolv.conf
drill example.com # аналог dig (base system)
# Диагностика
ping -c 3 8.8.8.8
traceroute 8.8.8.8
sockstat -l # слушающие порты (= ss -ln)
sockstat -4c # активные IPv4 соединения
netstat -an # все соединения
netstat -s # статистика протоколов
netstat -i # статистика интерфейсов
tcpdump -i vtnet0 -n port 80 # перехват трафика
arp -a # ARP-таблица
PF (firewall)
# Управление
pfctl -e # включить PF
pfctl -d # выключить PF
pfctl -f /etc/pf.conf # загрузить правила
pfctl -nf /etc/pf.conf # проверить синтаксис (dry run)
pfctl -sr # показать правила
pfctl -ss # показать state table
pfctl -si # статистика
pfctl -sa # всё вместе
# Таблицы
pfctl -t bruteforce -T show # содержимое таблицы
pfctl -t bruteforce -T add 203.0.113.4 # добавить IP
pfctl -t bruteforce -T delete 203.0.113.4
pfctl -t bruteforce -T expire 86400 # удалить записи старше 24ч
# Логи
tcpdump -i pflog0 -n # живой pflog
tcpdump -r /var/log/pflog -n # сохранённый pflog
📖 Статья: сеть
Пакеты и порты
# Бинарные пакеты (pkg)
pkg update # обновить индекс
pkg upgrade # обновить все пакеты
pkg install <name> # установить
pkg delete <name> # удалить
pkg search <query> # поиск
pkg info # установленные пакеты
pkg info <name> # детали о пакете
pkg which /path/to/file # какому пакету принадлежит файл
pkg audit -F # проверить уязвимости
pkg lock <name> # заблокировать от обновлений
pkg autoremove # удалить осиротевшие зависимости
pkg check -d -a # проверить зависимости
# Порты (сборка из исходников)
git clone https://git.FreeBSD.org/ports.git /usr/ports # portsnap удалён в 14.0
cd /usr/ports && git pull # обновить дерево портов
cd /usr/ports/<category>/<name>
make install clean # собрать и установить
make config # опции сборки
make deinstall # удалить
📖 Статья: pkg и порты
ZFS
# Пулы
zpool list # список пулов
zpool status # состояние, ошибки, scrub
zpool iostat 2 # I/O статистика
zpool scrub <pool> # проверка целостности
zpool history # история операций
zpool create tank mirror da0 da1 # создать зеркальный пул
# Датасеты
zfs list # все датасеты
zfs list -t snapshot # все снепшоты
zfs create zroot/data # создать датасет
zfs destroy zroot/data # удалить
zfs set compression=lz4 zroot # включить сжатие (наследуется)
zfs set quota=10G zroot/data # квота
zfs set atime=off zroot # отключить atime
zfs get all zroot/data # все свойства
zfs get compressratio zroot # коэффициент сжатия
# Снепшоты и клоны
zfs snapshot zroot/data@before # создать снепшот
zfs snapshot -r zroot@daily # рекурсивно
zfs rollback zroot/data@before # откатить (данные после снепшота ТЕРЯЮТСЯ)
zfs clone zroot/data@snap zroot/clone # клон (writable)
zfs promote zroot/clone # сделать клон независимым
# Send/receive (бэкапы)
zfs send zroot/data@snap | ssh remote zfs receive tank/data # полный
zfs send -i @snap1 zroot/data@snap2 | ssh remote zfs receive tank/data # инкрементальный
zfs send -R zroot@snap | xz > /backup/full.zfs.xz # рекурсивный + сжатие
# Boot environments
bectl list # список BE
bectl create before-upgrade # создать BE
bectl activate <name> # активировать для следующей загрузки
bectl destroy <name> # удалить
bectl export default | xz > backup.be.xz # экспорт
xzcat backup.be.xz | bectl import restored # импорт
# Пространство — кто занимает
zfs list -o name,used,usedbydataset,usedbysnapshots,usedbychildren zroot
zfs list -t snapshot -o name,used -s used # снепшоты по размеру
📖 Статья: ZFS
Jails
# Управление
service jail start <name> # запустить jail
service jail stop <name> # остановить
service jail restart <name> # перезапустить
jls # список запущенных jail'ов
jls -v # подробно
jexec <name> /bin/sh # shell внутри jail
jexec <name> pkg install <pkg> # установить пакет в jail
# Создание thick jail
zfs create zroot/jails/<name>
bsdinstall jail /usr/local/jails/<name>
cp /etc/resolv.conf /usr/local/jails/<name>/etc/
cp /etc/localtime /usr/local/jails/<name>/etc/
# Создание thin jail (ZFS clone)
zfs snapshot zroot/jails/templates/15.1-RELEASE@base
zfs clone zroot/jails/templates/15.1-RELEASE@base zroot/jails/<name>
# Ресурсы (rctl, нужен kern.racct.enable=1 в loader.conf)
rctl -a jail:<name>:memoryuse:deny=1g
rctl -u jail:<name> # текущее потребление
📖 Статья: jails
Безопасность
# SSH
ssh-keygen -t ed25519 # генерация ключа
ssh-copy-id user@server # копирование ключа на сервер
# doas — минималистичная альтернатива sudo; в base FreeBSD его нет, ставится из портов
pkg install doas # живой форк; persist не работает — пароль на каждую команду
# pkg install opendoas # persist есть, но апстрим заморожен с 2022; конфликтует с doas
echo 'permit :wheel' > /usr/local/etc/doas.conf
# Файловые флаги
chflags schg /etc/rc.conf # system immutable (даже root не изменит при securelevel≥1)
chflags sappnd /var/log/auth.log # system append-only
chflags noschg /etc/rc.conf # снять immutable
ls -lo /etc/rc.conf # посмотреть флаги
# Аудит
service auditd start
praudit /var/audit/current # читать аудит-лог
auditreduce -u root | praudit # действия root
# Проверка целостности
mtree -c -K sha256 -p /etc > /root/etc.mtree # baseline
mtree -f /root/etc.mtree -p /etc # проверка изменений
freebsd-update IDS # верификация base system
# Blocklistd (защита от брутфорса, base system); до 15.0 назывался blacklistd
sysrc blocklistd_enable=YES
# В /etc/ssh/sshd_config: UseBlocklist yes
Hardening sysctl (минимальный набор)
# /etc/sysctl.conf
security.bsd.see_other_uids=0
security.bsd.see_other_gids=0
security.bsd.see_jail_proc=0
security.bsd.unprivileged_read_msgbuf=0
security.bsd.unprivileged_proc_debug=0
kern.elf64.aslr.enable=1
kern.elf64.aslr.pie_enable=1
kern.randompid=1
kern.coredump=0
📖 Статьи: безопасность, sysctl и ядро
Обновление системы
# Patch-level (рутина)
freebsd-update fetch
freebsd-update install
# Ребут если обновлено ядро
# Minor upgrade (15.0 → 15.1)
bectl create before-15.1 # бэкап на ZFS
freebsd-update fetch install # сначала пропатчить текущую!
freebsd-update -r 15.1-RELEASE upgrade
freebsd-update install # 1-й: ядро
reboot
freebsd-update install # 2-й: userland
pkg upgrade
# Major upgrade (14.x → 15.x)
bectl create before-15.0
freebsd-update fetch install
freebsd-update -r 15.0-RELEASE upgrade
freebsd-update install && reboot # 1-й: ядро
freebsd-update install # 2-й: userland
freebsd-update install # 3-й: удаление старых libs
pkg-static install -f pkg && pkg upgrade -f # пересборка ВСЕХ пакетов
# Обновление jail'ов
freebsd-update -b /usr/local/jails/<name> fetch install
# Если система установлена пакетами базы (pkgbase, с 15.0)
pkg upgrade -r FreeBSD-base
# Пакеты
pkg update && pkg upgrade
pkg upgrade -n # dry run
pkg audit -F # проверка уязвимостей
📖 Статья: обновление системы
Мониторинг и отладка
# Быстрый обзор
top # процессы, CPU, RAM
top -o res # сортировка по памяти
top -P # загрузка по ядрам
vmstat 1 # CPU, RAM, swap, I/O (каждую сек)
systat -vmstat 2 # интерактивный монитор
# CPU
ps aux --sort=-%cpu | head # топ по CPU
# Память
vmstat -s # подробная статистика VM
swapinfo -h # swap
sysctl kstat.zfs.misc.arcstats.size # размер ZFS ARC
systat -zarc 2 # ARC интерактивно
# Диск
iostat -x 2 # I/O по дискам
gstat # GEOM I/O (интерактивно)
zpool iostat -v 2 # I/O по ZFS vdev
# Сеть
netstat -i # ошибки/дропы интерфейсов
netstat -s | grep retransmit # TCP ретрансмиссии
netstat -m # mbuf (сетевые буферы)
systat -ifstat 2 # throughput интерфейсов
# Процессы
truss -p <PID> # системные вызовы (= strace)
truss -f command # трассировка с дочерними
procstat -f <PID> # открытые файлы
procstat -k <PID> # стек ядра (на чём заблокирован)
kill -INFO <PID> # запросить прогресс (Ctrl+T)
fstat -p <PID> # файловые дескрипторы
# DTrace
kldload dtraceall # вручную; с 10.0 dtrace(1) делает это сам
dtrace -n 'syscall:::entry { @[execname] = count(); }' # кто делает syscall'ы
dtrace -n 'syscall::open*:entry { printf("%s %s", execname, copyinstr(arg0)); }' # что открывается
# Логи
tail -f /var/log/messages # следить за логами
dmesg | tail # последние сообщения ядра
grep -i error /var/log/messages # искать ошибки
# "Система тормозит" — алгоритм
# 1. top → CPU idle≈0? → кто ест CPU
# 2. vmstat 1 → pi/po≠0? → свопит, проверить RAM/ARC
# 3. iostat -x 2 → %b≈100? → I/O bottleneck
# 4. netstat -s → retransmits растут? → сетевые потери
# 5. dmesg → hardware errors?
📖 Статья: мониторинг и отладка
sysctl: ключевые переменные
sysctl -a # все переменные (5000+)
sysctl -d <var> # описание переменной
sysctl <var>=<value> # установить (до ребута)
# Персистентно: /etc/sysctl.conf (runtime) или /boot/loader.conf (boot-time)
# Сеть
kern.ipc.somaxconn=4096 # listen queue (дефолт 128)
net.inet.ip.forwarding=1 # маршрутизация
net.inet.tcp.fast_finwait2_recycle=1
# Ресурсы
kern.maxfiles=200000
kern.maxfilesperproc=100000
# ZFS (в /boot/loader.conf)
vfs.zfs.arc_max="1073741824" # 1GB — ограничить ARC на VPS
📖 Статья: sysctl и ядро
Файловая система: ключевые каталоги
/etc/ конфигурация системы
/etc/rc.conf главный конфиг сервисов
/etc/pf.conf firewall
/etc/ssh/sshd_config SSH-сервер
/boot/loader.conf tunables загрузчика
/usr/local/ сторонний софт (pkg/порты)
/usr/local/etc/ конфигурация стороннего софта
/usr/ports/ дерево портов
/usr/src/ исходники системы
/var/log/ логи
/var/db/pkg/ база пакетов
📖 Статья: файловая иерархия
Карта статей
- Файловая иерархия — FHS vs FreeBSD, base system и
/usr/local - rc-система — init, rc.conf, sysrc, управление сервисами
- Сеть — ifconfig, маршрутизация, PF firewall
- pkg и Ports — бинарные пакеты, дерево портов, poudriere
- sysctl и ядро — sysctl, loader.conf, сборка ядра, securelevel
- Jails — контейнеризация, VNET, типы jail'ов
- Безопасность — SSH, hardening, MAC, аудит
- ZFS — пулы, датасеты, снепшоты, boot environments
- Обновление системы — patches, minor/major upgrade
- Мониторинг и отладка — top, vmstat, DTrace
- bhyve — виртуализация после jails: virtio, zvol, nmdm, vm-bhyve
Связанные заметки
- FreeBSD — архитектура и философия — вводная статья цикла
- FreeBSD VPS: Honeypot и мониторинг безопасности — практический сценарий на базе цикла
- Linux — сводный cheatsheet — аналогичная шпаргалка по Linux
- FreeBSD — bhyve: виртуализация после jails — виртуальные машины поверх того же хоста
Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.
Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.