четверг, 15 сентября 2011 г.

Сетевые Intel во FreeBSD

EM
Драйвер для гигабитных сетевых карточек
Можно увеличить размеры очередей в карточке (в данном случае до 4 Мб).

### EM net
hw.em.rxd=4096
hw.em.txd=4096
hw.em.max_interrupt_rate=32000

Примечание: желательно посмотреть, какой буфер в реальности имеет ваша сетевая карточка. При возникновении проблем можно уменьшить его в 2 или 4 раза.
Для нормальной работы сетевой особо больше ничего не нужно. Драйвер em в FreeBSD уже очень давно и большинство глюков уже отловлено.
Можно разве что, еще немного заняться тюннингом sysctl.

IGB
Это драйвер для более новых гигабитных сетевых карточек (чипы 82575, 82576, 82580).
Поведение данного драйвера при первоначальном внедрении не очень радовало многих(FreeBSD 7.x). Особенно проблемы возникали с новыми "фичами".
Можно вместо базовых драйверов:
Скачать последнюю версию драйвера igb с офф.сайта Intel
Либо использовать драйвера от Yandex
Драйвера от Yandex более грамотно раскладывают нагрузку по ядрам процессора.
Добавляем в /etc/rc.conf

ifconfig_igb0="-rxcsum -txcsum -lro -tso up"
Это отключает LRO TSO и checksum.
Работать с LRO на данный момент при большом потоке не реально.
Добавляем в /boot/loader.conf

hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000
hw.igb.lro=0

Можно также внести изменения в ядро.
Рекомендуемые:

## Убирать, т.к. выкладывает проц в полку без прироста в производительности
#options                FLOWTABLE  
#Для создания дополнительных буферов под копирование сокетов
options         ZERO_COPY_SOCKETS # man 9 zero_copy_sockets
## Несколько таблиц маршрутизации.
## Полезно при использовании jail
#options         ROUTETABLES=10
options         HZ=4000
options         PANIC_REBOOT_WAIT_TIME=16
device lagg
А также подтюнить sysctl(параметры подбираются индивидуально под задачу)

net.inet.ip.forwarding=1 #включаем форвардинг пакетов
net.inet.ip.fastforwarding=1 #эта опция действительно ускоряет форвардинг
net.inet.tcp.blackhole=2 #ядро убивает tcp пакеты, приходящие в систему на непрослушиваемые порты
net.inet.udp.blackhole=0 #как и выше, только не убивает ибо traceroute пакеты не покажут этот хоп
net.inet.icmp.drop_redirect=1 #не обращаем внимания на icmp redirect
net.inet.icmp.log_redirect=0 #и не логируем их
net.inet.ip.redirect=0 #не реагируем на icmp redirect
net.inet.ip.sourceroute=0 #отключение маршрутизации от источника
net.inet.ip.accept_sourceroute=0 #старый и бесполезный механизм
net.inet.icmp.bmcastecho=0 #защита от SMURF атак
net.inet.icmp.maskrepl=0 #не отдавать по icmp паску своей подсети
net.link.ether.inet.max_age=30 #переспрашиваем каждые 30 секунд mac адреса в своём arp пространстве
net.inet.ip.ttl=226 #почему бы не поставить ttl побольше ;)
net.inet.tcp.drop_synfin=1 #небольшая защита
net.inet.tcp.syncookies=1 #от доса
kern.ipc.somaxconn=32768 #увеличиваем размер очереди для сокетов
kern.maxfiles=204800 #увеличиваем число открытых файловых дескрипторов
kern.maxfilesperproc=200000 #кол-во ф.д. на каждоый процесс
kern.ipc.nmbclusters=524288 #увеличиваем число сетевых буферов
kern.ipc.maxsockbuf=2097152 #
kern.random.sys.harvest.ethernet=0 #не использовать трафик и прерывания
kern.random.sys.harvest.interrupt=0 #как источник энтропии для random'a
net.inet.ip.dummynet.io_fast=1 #заставляет dummynet работать побыстрее
net.inet.ip.dummynet.max_chain_len=2048 #
net.inet.ip.dummynet.hash_size=65535 #
net.inet.ip.dummynet.pipe_slot_limit=2048 #
net.inet.carp.preempt=1 #включаем carp
net.inet.carp.log=2 #пишем логи карпа
kern.ipc.shmmax=67108864 #макс. размер сегмента памяти
net.inet.ip.intr_queue_maxlen=8192 #размер очереди ip-пакетов
net.inet.ip.fw.one_pass=0 #пакеты, прошедшие пайпы не вылетают из фаервола, а дальше идут по нему
dev.igb.0.enable_lro=0 #отключение large receive offloading 
dev.igb.1.enable_lro=0
dev.igb.0.enable_aim=0 #так нет аномалий с работой сетевушек
dev.igb.1.enable_aim=0
dev.igb.0.rx_processing_limit=2048 #адаптивный polling, разрешаем прерывания с сетевухи при достижении значения
dev.igb.0.flow_control=0 #отключение контроля потока
dev.igb.1.rx_processing_limit=2048
dev.igb.1.flow_control=0

Ссылки:
Intel® Gigabit ET Dual Port Server Adapter (чип 82576) и FreeBSD
Немного об использовании igb во FreeBSD 8
Тюнинг FreeBSD 8.2. Часть 2. Производительность.
FreeBSD 8 igb баги 
Производительный роутер на FreeBSD 


четверг, 1 сентября 2011 г.

dump restore

Необходимость дампить систему рано или поздно появляется у Всех. Я не исключение...
Преимущестов утилит dump/restore в том, что они есть на любой юникс системе.
На основе этих утилит постоено достаточно много различных систем бекапирования, которые по сути являются просто надстройками над ними.
Я рассмотрю, как сделать дамп с какого либо раздела на FreeBSD.

snapshot UFS2 во FreeBSD

Начиная с FreeBSD 5.0 появилась возможность генерация мгновенных копий файловых систем.
Я приведу пару способов, как это можно сделать.
Рассмотрим их.

вторник, 23 августа 2011 г.

Установка Cacti (краткая заметка)

Cacti - система мониторинга, основным назначением является сбор данных по SNMP и отображение в графическом виде.
Приведу краткую заметку по установке cacti на freebsd.

воскресенье, 14 августа 2011 г.

Мелкие полезности в shell

Иногда нужно что-то сделать, находишь простое решение - однострочную команду
Лучше себе его записать....
Вот здесь и будут храниться вот такие вот мелочи

Получение номеров вланов и сортировка их по возрастанию (FreeBSD)
ifconfig | grep vlan: | awk '{print $2}' | sort -n

Просмотр лога апача, чтоб определить, кто-то пытается получить доступ, полезно для определения различных видов атак. Выводит количество конектов и соответствующий ip.
Аналогичным образом можно анализировать не только логи апача..
tail -5000 /var/log/apache2/access_log | awk '{print $1}' | sort | uniq -c | sort -r | head
206    71.126.170.114
198    85.228.153.247
196    78.168.184.111
...

понедельник, 1 августа 2011 г.

Использование sftp+chroot из openssh в качестве альтернативы ftp-серверу

Потребовалось создать безопасный файлообменник.
Требования:
1. Безопасность.
2. Простота использования
3. Возможность использовать на различных ОС

Всем этим критериям больше всего удовлетворяет sftp.

SFTP расшифровывается как SSH File Transfer Protocol — SSH-протокол для передачи файлов. Он предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Как правило, в качестве базового протокола, обеспечивающего соединение, и используется протокол SSH2, но это не обязательно.
OpenSSH (открытый безопасный shell) — набор программ, предоставляющих шифрование сеансов связи по компьютерным сетям с использованием протокола SSH.
  Он был создан под руководством Teo de Raadt (Тэо де Раадт) как открытая альтернатива проприетарного ПО от SSH Communications Security. В набор программ OpenSSH входит и sftp-сервер. Также была добавлена возможность помещать отдельных пользователей в изолированное окружение(chroot).

среда, 27 июля 2011 г.

Бекап блога

   Периодически на своем блоге делаю различные изменения.
В очередной раз задумался о полном бекапе своего блога.
Google конечно мощная компания, но лишний бекап не помешает, т.к. это может спасти информацию, которой вы наполняли свой блог в течение многих часов.
    Есть разные методы сохранения блога (или Backup): например экспорт блога в настройках блоггера (нужно зайти в "Панель инструментов" далее Настройки/Основные сведения/Экспорт блога). Но при данном типе копирования не сохраняются фото и комментарии. Комментарии очень важны их нельзя лишаться ни в коем случае.
 Поэтому мне понадобился другой вариант.   В ходе непродолжительных поисков была найдена специальная утилита blogger backup.