*nix'ы

warning: Creating default object from empty value in /usr/local/www/drupal6/modules/taxonomy/taxonomy.pages.inc on line 33.

VPN через ssh на FreeBSD

Обычно объединял сети через тунели между FreeBSD шлюзы через gif-интерфейсы. Легко, просто, быстро, удобно.

Но захотелось прикрутить к этому шифрование. IPSEC не понравился, т.к. нужно много ставить и настраивать, а тут все компоненты есть в коробке.

Последовательность:

  1. Настраиваем sshd: разрешаем тунелирование и вход от root только по ключу.
  2. Создаем ключи и копируем на сервер.
  3. Настраиваем тунель и автоматизируем процес.

Настраиваем sshd: разрешаем тунелирование и вход от root только по ключу

в /etc/ssh/sshd_config добавляем

# For SSH tunel
PermitTunnel yes
PermitRootLogin without-password
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Создаем ключи и копируем на сервер

На клиенте создаем ключ и публичный ключ копируем на сервер.

На клиенте

ssh-keygen -t rsa -b 4096
# cat /root/.ssh/id_rsa.pub | ssh user@server "cat - >> ~/.ssh/authorized_keys"

На сервере помещаем ключ нужному пользователю:

cat authorized_keys >> /root/.ssh/authorized_keys

После этого на клиенте запускаем

ssh -w5:5 -f -CT -o ServerAliveInterval=10 root@server "ifconfig tun5 10.0.1.1 10.0.1.2" && ifconfig tun5 10.0.1.2 10.0.1.1

Прописываем роутинги и далее, все должно быть хорошо.

0
Your rating: Нет

Некоторые проблемы с ZFS

Пока учусь развлекаться с ZFS под FreeBSD 9 Release вылезло две проблемы. Не знаю, фичи это или баги, но мне не нравится.

1. Проблемы с загрузкой при нескольких пулах на одном диске.

Если на диске есть два раздела и они задействованы в двух разных пулах и система должна грузиться со второго по нумерации пула/раздела, то при загрузке лоадер пытается искать ядро на том пуле в котором задействован первый раздел. Он у меня оказался так же и ближайшим.

Т.е. я разбил диск по стандартной схеме с использованием GPT:

  1. FreeBSD-boot
  2. Swap
  3. FreeBSD-ZFS

Из третьего раздела сделал системный пул с которым система нормально работала и с которого грузилась, назовем его zpool.

А потом решил, что было бы неплохо из своп раздела сделать еще один пул ZFS, назовем его zpool2

После этого, при перезагрузке лоадер выдал, что не может найти едро на пуле zpool2. Т.к. я особо не знаю, как пользоваться лоадером,  я загрузил FreeBSD live и тупо грохнул zpool2, после чего перегрузился и система нормально загрузилась.

2. Зависание процессов, при некоторой работе с ZFS

Пока не повторял, т.к. небыло сил/времени. Ситуация:

Есть ZFS пул, примонтированный /test на который, через самбу пишутся данные. В этот момент решил пул удалить, т.е.

zpool destroy -f zpool_tmp

После чего получил:

0
Your rating: Нет

Раздача видео с видеокамеры

Бился, бился и добился решения, как раздавать видео с сетевой вебкамеры на сайт.

Что имеем

  • Сетевая камера которая отдает поток в rtsp
  • Мелкий канал до камеры
  • *nix сервер, в данном случае, FreeBSD 9.
  • Нормальный канал до сервера

Что хотим

  • Забирать видео с камеры по мелкому каналу на сервер
  • Выводить видео с сервера по широкому каналу.

Используем

Устанавливаем ffmpeg:

cd /usr/ports/multimedia/ffmpeg
make install clean

я выбрал для установки еще

 [*] X264              H.264 video codec support via x264
 [*] XVID              Xvid MPEG-4 video codec support   

Устанавливаем nginx c модулем rtmp

cd /usr/ports/www/nginx
make install
Не очищаем каталог порта, в папочке work/arut-nginx-rtmp-module-f7f24ba/ есть полезные примеры.

0
Your rating: Нет

Переезжаю с qemu на VirtualBox

Черновик статьи. Компиляция

Т.к. продолжаю развлекаться с ZFS под FreeBSD, а она, как выяснилось, лучше всего живет в 64 битной версии, попытался перелезть на amd64.

Все хорошо, за исключением того, что qemu собираться отказывается.

Пошукал в нете, чем можно виртаулизировать и выбор пал на VirtualBox.

По установке стырено тут - VirtualBox OSE (Open Source Edition) на FreeBSD

http://mediaunix.com/2010/11/22/virtualbox-virtualizaciya-vo-freebsd-bez...

# cd /usr/ports/net/libvncserver

Сначала модуль ядра
cd /usr/ports/emulators/virtualbox-ose-kmod && make install clean
Потом сам виртуалбокс
cd /usr/ports/emulators/virtualbox-ose && make install clean

Добавляем в автозагрузку:

echo 'vboxdrv_load="YES"' >> /boot/loader.conf
echo 'vboxnet_enable="YES"' >> /etc/rc.conf

Если не хотим перезагружаться, то можно руками загрузить модуль vboxdrv и скрипт vboxnet
kldload vboxdrv
/etc/rc.d/vboxnet start

Теперь, требуется создать виртуальную машину со всеми прибабахами:

Создание и настройка виртуальной машины - http://subnets.ru/blog/?p=1691

Создаем виртуальную машину (посмотреть все возможные ostype: VBoxManage list ostypes)

# VBoxManage createvm --name MicroXP --ostype WindowsXP --register --basefolder /usr/vbox

0
Your rating: Нет

Будим компьютер по сети имея несколько интерфейсов

Давным-давно было желание научиться будить компьютеры по сети с сервера под FreeBSD.

Когда-то находил програму WOL, но немного поковырявшись с первой попытки у меня не получилось сеё действо.

Сегодня данная мысля в очередной раз пришла в голову и таки осознал в чем беда, и почему не получалось: т.к. на сервер имеется несколько сетевух, то пакетики уходят, или по первому попавшемуся интерфейсу, или, что более логично, по интерфейсу на котором назначен шлюз по умолчанию. Соответственно, нужно направить пакеты в правильное русло, т.е. через правильную сетевуху.

В мане есть такой абзац:

-i HOST
--ipaddr=HOST
    Broadcast packet to this IP address or hostname. This is important
    if your wol client is a multihomed host and you want to send only
    to one subnet (default IP address is 255.255.255.255).

Т.е. если нужно отправить пакет в нужную сеть, то тут ее нужно указать.

Итого получаем:

/usr/local/bin/wol --verbose --ipaddr=10.20.10.255 -w 10 70:71:bc:50:a3:4e

И прекрасно проснувшийся компьютер.

При этом, желательно, не забыть в фаерволе проковырять дырочку на нужный порт, по умолчанию это 40000.

0
Your rating: Нет

Установка Freebsd исключительно на ZFS

Баловался-баловался с ZFS и дошел до того, что хочу чтобы система стояла чисто на ZFS без всяких freebsd-boot разделов.

Сразу оговорюсь, что я все делал с уже установленной 64 битной FreeBSD 9.0-RELEASE amd64, которую я просто переносил на новый zfs раздел. Поэтому местми шаги опущены, а местами чуть другие.

Для нормальной жизни в дальнейшем нужно выполнить следующие шаги:

  1. Сказать системе, что у нас устройство с 4kB блоками
  2. Создать на всем диске ZFS пул
  3. В него записать загрузчик
  4. Создать Swap раздел
  5. Установить систему

Собирал из разных статей, да простят меня авторы.

1. Эмулируем устройство с 4кБ блоками через gnop

# gnop create -S 4096 ada0

После этого мы получаем устройство /dev/ada0.nop

2. Создаем на диске ZFS пул

# zpool create -m /mnt zpool /dev/ada0.nop

После этого проверяем, что у нас пул получился действительно с 4кб блоками:

# zdb | grep ashift
ashift: 12

Если 12, значит все хорошо.

Экспортируем пул, убираем эмуляцию 4кб блоков и импортируем пул обратно. Настройки пула сохраняются.

# zpool export zpool
# gnop destroy /dev/ada0.nop
# zpool import zpool
# zdb | grep ashift
ashift: 12

3. Записываем загрузчик в пул.

Вроде здесь нашел, что в пуле есть место под загрузчик, только записывать его нужно не совсем стандартным путем.

0
Your rating: Нет

Пакетное конвертирование файлов в Linux

Потребовалось сконвертировать стопку файлов, т.к. правильные индейцы делают такие вещи правильно, то пришлось искать, как бы это сделать автоматически.

В итоге получился файл следующего содержания:

#!/bin/sh
for i in *.ogg
do
q1=`echo $i | sed 's/\ /\\ /g'`
q2=`echo $i | sed 's/\ /\\ /g'| sed 's/.ogg/.mp3/'`
ffmpeg -i "$q1"  "$q2"
done

Для пакетного переименования есть утилита rename, но ей пока не пользовался.

0
Your rating: Нет

Мониторинг температуры сервера под FreeBSD и оповещение при превышении

В связи с тем, что у меня помер кондиционер, задумался о том, чтобы сервера научились мониторить и сообщать когда у них повышается температура выше определенного предела.

В итоге нашел инструменты и наваял скриптики.

Для получения температуры, скорости вращения вентиляторов и напряжения под FreeBSD использовал mbmon, lmmon и sysctl, в зависимости от того, на каком сервере что заработало.

mbmon

Установка как обычно:

cd /usr/ports/sysutils/mbmon
make install clean

При запуске получаем температуру, скорость вращения куллеров и некоторые напряжения на плате:

# mbmon

Temp.= 19.0, 19.0,  0.0; Rot.= 1520, 2220,    0
Vcore = 2.27, 3.50; Volt. = 3.34, 5.62, 12.83,   2.20,  1.69

Из непонятного, если несколько раз подряд запросить данные, то температура будет прыгать на 2-3 градуса.

Для облегчения получения информации, снимаю только температуру с одного датчика и устанавливаю демоном, для этого в /etc/rc.conf добавляю:

mbmon_enable=YES
mbmon_flags=-T1

lmmon

Установка как обычно:

cd /usr/ports/sysutils/lmmon
make install clean

При запуске получил ошибку:

#lmmon
Failed to open device /dev/smb0.
If your system does not support intpm(4),
try to use /dev/io (-i flag) or check
the permissions of /dev/smb0.

0
Your rating: Нет

Резервыне копии данных в FreeBSD через snapshot

Черновик

Пока озаботился нормальным резервным копированием данных возник вопрос - как наиболее эфективно создать копию файлов на случай если не винт вышел из строя, а пользователь случайно снес файл или неправильно его поправил.

Фо FreeBSD, и наверное не только, есть такое понятие как моментальная копия файловой системы, или snapshot.

При этом, чисто теоретически, должно неплохо экономиться место.

Из первых неудобств - делается некоторое время (60 гб делалось около 20 минут) и снять процесс создания снепшота нельзя. Возникает ощущение, что процес завис и больше счастья не будет. Ощущение обманчивое.

То же самое возникло при попытке удалить снепшот - т.е. создание и удаление снепшотов больших разделов достаточно длительный процесс.

При использовании файловой системы ZFS снепшоты делаются значительно быстрее - секунды, даже при условии, что железо используется более слабое и диски подключены в зеркало.

Удобная утилита:

cd /usr/ports/sysutils/freebsd-snapshot
make install clean

По материаллам - snapshot UFS2 во FreeBSD.

При наличии ZFS снэпшоты можно делать так:

zfs snapshot -r system64@`date "+%Y-%m-%d-%H:%M"`

0
Your rating: Нет

Создание одноразового зашифрованного контейнера под FreeBSD

В продолжение темы возникла идея-мысль, по поводу того, что нужо сделать отдельное зашифрованное хранилище, информация на котором имеет ценность исключительно в момент работы с ней. Т.е. кинули туда информацию, обработали ее, перегрузились/переподключили диск и у нас уже все опять чистое и красивое, а то что было раньше уже найти или восстановить нельзя. Очень полезно было-бы для папочки del и ее производным, чтобы не разрасталась wink

В общем-то все тоже самое что и в предыдущей заметке, за исключением что монтируется устройство каждый раз с помощью ключа onetime, после чего создается новая файловая система и монтируется куда надо:

#Единожды, подготовка устройства/файла
dd if=/dev/zero of=test_img bs=1m count=100

#Каждый раз, при необходимости подключить шифрованное хранилище
mdconfig -a -t vnode -f test_img -S 4096 -u 5
geli onetime -l 256 -s 4096 /dev/md5
newfs /dev/md5.eli
mount /dev/md5.eli /mnt/

Ну и при необходимости размонтируем:

umount /dev/md5.eli
geli detach /dev/md5
mdconfig -d -u 5

После размонтрирования или перезагрузки системы данные востановить уже невозможно.

0
Your rating: Нет
Ленты новостей