Чтобы перенести всех системных пользователей на другой сервер надо просто скопировать поверх файлы /etc/master.passwd и /etc/group, и затем на новом сервере выполнить команду
Иногда возникает необходимость откатить приложение установленное через порты на более раннюю версию. Сначала откатим данные в нашей базе портов на нужную версию. К примеру будем откатывать php:
cd /usr/ports/ports-mgmt/portdowngrade && make install clean
/usr/local/sbin/portdowngrade -s "anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs" lang/php5
Выбираем 1, выбираем номер версии на которую нужно откатиться, пишем yes
Теперь мы получили нужную версию в дереве портов. Теперь, чтобы переустановить приложение в систему:
portupgrade -f php5
Если надо даунгрейдить другие приложения, то шаги нужно повторить.
Сначала скачиваем исходники системы.
Внимание на тэг обновления! Он обязательно должен совпадать с веткой установленной системы. Например, для системы FreeBSD 7.2-RELEASE-p2 тэг должен быть tag=RELENG_7_2.
cd /usr/share/examples/cvsup
Правим хост в standard-supfile на *default host=cvsup5.FreeBSD.org и запускаем:
csup ./standard-supfile
Затем:
mkdir /home/jail_sample
setenv D /home/jail_sample
mkdir -p $D
cd /usr/src
make buildworld
make installworld DESTDIR=$D
cd etc/ [1]
make distribution DESTDIR=$D
mount -t devfs devfs $D/dev
Убедиться, что демоны на хост-машине и в jail не пересекаются по используемым IP-адресам.
Команды для управления jail-ом:
/etc/rc.d/jail start/stop/restart sample
jls # список запущенных jail
jexec 2 tcsh # запустить шелл внутри jail с ID=2
Возможно, потребуется поправить некоторые sysctl на хост-машине:
security.jail.set_hostname_allowed – если 1, то внутри jail можно поменять имя хоста;
security.jail.socket_unixiproute_only – если 1 , то сокет в jail можно создать только для доменов PF_LOCAL, PF_INET или PF_ROUTE, иначе, возвращается ошибка;
security.jail.sysvipc_allowed – если 1, то то в jail можно получить доступ к глобальному System V IPC;
security.jail.getfsstatroot_only – если 1, то в jail можно получить информацию (df)только о той файловой системе на которой создан jail;
security.jail.allow_raw_sockets – если 1, то в jail можно создавать raw sockets;
security.jail.chflags_allow – если 1, то процессы в jail могут модифицировать флаги ФС.
Часто возникает задача в реальном времени наблюдать за загрузкой интернет-канала по пользователям сидящими за nat-ом. С этим отлично справляется iftop. Он выдает вот такую картинку:
Ставим:
cd /usr/ports/net-mgmt/iftop && make install
Можно использовать такой конфиг (.iftoprc) где 2М это ширина входящего интернет-канала:
port-resolution: no
show-bars: yes
promiscuous: no
port-display: off
line-display: one-line-sent
max-bandwidth: 2M
hide-source: yes
К пакету применяется последнее подходящее правило.
Параметры в rc.conf:
ipfilter_enable="YES" # Запуск межсетевого экрана ipf
ipfilter_rules="/etc/ipf.rules" # Загрузка файла с правилами
gateway_enable="YES" # Включение шлюза для локальной сети
ipnat_enable="YES" # Если надо задействовать nat
ipnat_rules="/etc/ipnat.rules" # Определение файла правил для ipnat
Примеры правил в ipf.rules:
pass out quick on lo0 proto ip from any to any
pass in quick on lo0 proto ip from any to any
pass in quick on fxp1 proto tcp from any to 1.2.3.1/32 port = 80 flags S keep state
pass out log quick on fxp1 from 1.2.3.1/32 to any
pass in quick on fxp1 proto icmp from any to any icmp-type 0
pass in quick on fxp1 proto icmp from any to any icmp-type 11
block in log quick on fxp1 proto icmp from any to any
block return-icmp(port-unr) in log quick on tun0 proto udp from any to 20.20.20.0/24 port = 111
quick означает, что если анализируемый пакет подпадает под данное правило, то дальнейший просмотр правил прекращается.
keep state означает, что так же будут разрешены все пакеты, которые пойдут по этому же соединению в том числе в обратную сторону.
ipf -Fa -f /etc/ipf.rules # сбросить все правила и загрузить новые из файла
ipfstat -in # вывод правил для входящего трафика
ipfstat -on # вывод правил для исходящего трафика
ipfstat -t # просмотр текущей статистики в виде TOP-а
ipnat -l # смотрим текущие редиректы для ipnat
/etc/rc.d/ipnat reload #для перезагрузки правил ната
Иногда бывает необходимость создать виртуальный диск в памяти для размещения данных, к которым требуется быстрый доступ. Добрый человек подсказал готовый скрипт:
#!/bin/sh
DISKSIZE="256m"
case "$1" in
start)
/bin/echo -n "Starting memdisk "
/sbin/mdconfig -a -t swap -s $DISKSIZE
/bin/mkdir -p /mnt/md0
/bin/chmod 777 /mnt/md0
/sbin/newfs /dev/md0
/sbin/mount /dev/md0 /mnt/md0
;;
Использование таблиц файрвола IPFW в некоторых случаях может быть очень удобным. Например, если нужно заблокировать много ip при dos-атаке. Суть в том, что все ip-адреса помещаются в таблицу и в правилах файрвола оперируем уже таблицей целиком.
ipfw table 3 add 10.10.11.1 #добавление в таблицу
ipfw table 3 add 10.11.11.2/24 #добавление в таблицу
ipfw table 3 list #посмотреть что в таблице
ipfw add deny ip from table\(3\) to me #пример исп-я. Слэши нужны!
ipfw table 3 delete 10.10.11.1 #удаляем
ipfw table 3 flush #чистим всю таблицу
Оперативно обновлять таблицу можно, к примеру, так:
#!/bin/sh
ipfw table 3 flush
cat /etc/ip.txt | while read ip; do
ipfw table 3 add $ip
done
portsnap fetch #получить свежую базу портов
portsnap extract #распаковать базу
portsnap update #обновить локальную базу после получения и распаковки
make extract # извлечь исходники для сборки
make config #указать праметры для сборки, они запомнятся для обновления порта
make showconfig #показать варианты конфигурирования
make rmconfig #удалить пользовательские настройки для сборки
make fetch-list #показать какие файлы будут загружены
make fetch-recursive-list #показать какие файлы будут загружены включая все зависимые
make #собрать приложение
make install #собрать и установить приложение
make deinstall #удалить приложение
make reinstall #переустановить приложение
make clean #удалить рабочие файлы
pkg_delete mc #удалить приложение
pkg_info #Список установленных приложений
pkg_version -v #Проверка на необходимость обновления
portupgrade mc #Обновления какого-либо порта (требуется установка)
portaudit -Fda #Проверка приложений на уязвимости (требуется установка)
portupgrade "php5-*" #Обновить все PHP5 пакеты
portmaster /usr/ports/misc/mc - установить mc с помощью Portmaster (тоже есть в портах)
portmaster expat-1.95.8 - обновляем expat
portmaster --clean-distfiles-all - удалить все старые скаченные дистрибутивы пакетов из distfiles
Данная манипуляция может понадобиться, например, если необходимо переносить и запускать программу на различных серверах, возможно не имеющих необходимых библиотек. Сделаем это на примере порта ncftp3:
cd /usr/ports/ftp/ncftp3
make configure
cd ./work/ncftp-3.2.2
./configure
Правим Makefile, дописываем в строчку CFLAGS= параметр “-static”.
cd ../..
make
Все. Из папки /usr/ports/ftp/ncftp3/work/ncftp-3.2.2/bin можно забирать готовые бинарники.
top -mio -o total – показать I/O по процессам
top -S – показать системные процессы в топе (по дефолту они не показываются)
gstat – нагрузка на диски
iostat -d -w1 -c7 – нагрузка на диски
systat -io start 1
diskinfo -t da0 – тест на дисковую производительность
tunefs -p /var/ – информация о настройках файловой системы
vmstat -z чего не хватает
vmstat -i прерывания по устройствам
netstat -i ошибки на интерфейсах
systat -ifstat – интенсивность передачи трафика
netstat -inb – передано через интерфейс в байтах
netstat -w1 – количество пакетов/ошибок/байт на интерфейсе
sysctl kern.ipc.numopensockets – количество открытых сокетов
df -H – количество свободного места
df -i – количество свободных инодов
Смотреть top: mem Inact, если меньше RAM/2 то мало памяти под дисковый кеш.
“помеченные как Inact, Cache и Buf – это всё кэшированные данные разных степеней устаревания”
При большой дисковой нагрузке, особенно с большим количеством мелких файлов смотреть на vfs.ufs.dirhash_maxmem. Можно увеличить до 8-16-32 мегов и более. sysctl -a | egrep “kmem|dirhash|shpg” смотреть чтобы vfs.ufs.dirhash_lowmemcount не росло.