Архив рубрики «OpenBSD»

gcc4

04.05.2010

Дерево активно пилят для сборки новым gcc4. Забавно, что некоторые патчи я предлагал больше года назад, когда развлекался с запуском OpenBSD на avr32, поддержка этой архитектуры есть только в четвертой версии компилятора. Но особого энтузиазма они тогда не встретили.

OpenSSH 5.5

16.04.2010

Несколько часов назад Damien Miller сообщил о выходе OpenSSH 5.5 – свободной реализации протокола SSH от разработчиков OpenBSD. В новой версии ничего нового не добавили, просто поправили некоторые ошибки.

RFC4941

07.04.2010

В OpenBSD появилась поддержка RFC4941 – «Privacy Extensions for Stateless Address Autoconfiguration in IPv6». Как известно, при stateless автоконфигурации сетевого интерфейса его IPv6 адрес формируется из MAC адреса, при этом в разных сетях эта часть адреса всегда будет одинаковой. Таким образом можно отследить перемещение мобильных устройств, и, как следствие, их владельцев. Данное расширение устраняет эту проблему, используя случайный идентификатор для формирования IPv6 адреса. Пользоваться так:


# ifconfig ral0 autoconfprivacy

Или так:


# cat /etc/hostname.ral0
dhcp
inet6 autoconfprivacy
rtsol

Случайный MAC

05.04.2010

Тео добавил забавную штуку в ifconfig – установку случайного MAC адреса. Полезно, например, если нужно поковырять чужую сетку (скажем, в аэропорте), но не хочется светиться; или уже засветился, и твой MAC заблокировали. Пользоваться так:


# ifconfig ral0 lladdr random

Gmail, mutt и smtpd(8)

04.04.2010

Письма, отправленные через веб-интерфейс Gmail, вызывают у суровых разработчиков OpenBSD недоумение. Во-первых, из-за форматирования (особенно это касается патчей в теле письма), а во-вторых, из-за неожиданных MIME-вложений. Поэтому, дабы не порочить свое доброе имя, решил настроить на OpenBSD’шном лаптопе mutt, а заодно попробовать smtpd(8) – написанный с нуля почтовый демон.

Собственно с настройкой никаких проблем нет. Процедура совмещения mutt с Gmail IMAP широко описана, а пример smtpd.conf для отправки почты через Gmail есть даже в соответствующем мануале. Поэтому не буду утомлять перепечаткой конфигов. Стоит только отметить, что прежде чем строить базу данных для SMTP авторизации (/etc/mail/secrets.db), необходимо в /etc/mailer.conf заменить sendmail на smtpd, т.е.


sendmail		/usr/sbin/smtpctl
send-mail	/usr/sbin/smtpctl
mailq		/usr/sbin/smtpctl
makemap	/usr/libexec/smtpd/makemap
newaliases	/usr/libexec/smtpd/makemap

так как makemap у smtpd свой. И в файле smtpd.conf в строке relay via smtp.gmail.com нужно дополнительно указать port 587. Ну и понятное дело в /etc/rc.conf.local добавить


sendmail_flags=NO
smtpd_flags=

Кстати, оказалось, что при просмотре почты в mutt ярлыки вида


openbsd/misc
openbsd/tech
openbsd/source-changes

отображаются в виде вложенных директорий, что приятно. Веб-интерфейс Gmail, как известно, иерархические ярлыки не поддерживает.

Нашего полку прибыло

01.04.2010

В OpenBSD появился новый разработчик из России – Игорь Зиновик (zinovik@), и по-моему он читает этот блог. Так что – добро пожаловать на борт!

vether(4)

30.03.2010

Не так давно в OpenBSD появился новый драйвер – vether(4). Написал его лично Theo de Raadt. Зачем он это сделал, а так же почему в Канаде плохой Интернет, и каким образом обеспечивается связь всего проекта OpenBSD с  миром – читайте в его новой презентации с AsiaBSDCon.

Изменения в softraid(4)

29.03.2010

Заскучали? Тогда обновитесь до -current. В softraid(4) изменился формат метаданных, старые разделы не будут читаться новыми ядрами. Но есть и позитивная сторона: скоро (скоро?) можно будет загружаться с softraid.

cd(4) hotplug

19.03.2010

Недавно возникла задача научить любимую жену пользоваться моим лаптопом с OpenBSD. OpenBSD – система аскетичная и весьма недоверчиво относится к женщинам. Для снижения недоверчивасти был настроен графический вход через xdm(1), сделаны красивые ярлыки на браузер и прочие полезные программы, настроен hotplugd(8) для автомонтирования USB-флешек. Осталась только одна проблема – компакт-диски, в OpenBSD до сих пор нету их автоматического монтирования и размонтирования.

Нету, значит нужно сделать. Первоначальная идея была очень простой: пусть драйвер cd(4) каждые несколько секунд посылает в привод SCSI команду Test Unit Ready. Если диск есть, команда отработает нормально, если диска нет – вернется с ошибкой. Идея оказалась вполне рабочей. Но коллеги по цеху сказали, что метод так себе. Более того, они высказали опасения, что на некоторых старых машинах это может привести к неожиданным результатам. Например Miod вспомнил, что у него есть дисковод, который открывает лоток при получении команды TUR.

Тогда я еще почитал описание SCSI команд и нашел то, что мне нужно. Команда Get Event/Status Notification позволяет узнать, какие события происходили с дисководом, в частности был ли вставлен новый диск или нажата кнопка выемки диска. Новая версия патча заработала отлично и в целом возражений не встретила. Но и явного одобрения тоже, поэтому в OpenBSD 4.7 этой возможности не будет. Думаю, к 4.8 я ее протолкну, если не лень будет. А пока любители пересобрать ядро могут поиграться с патчем.

Понятно, что к патчу должно прилагаться правильное содержимое /etc/hotplug. Например такое.

attach:


#!/bin/sh

DEVCLASS=$1
DEVNAME=$2

case $DEVCLASS in
2)
	# disk
	case $DEVNAME in
	cd*)
		mount -o nodev,nosuid /dev/${DEVNAME}a /mnt/cdrom
		test -d /mnt/cdrom/VIDEO_TS && umount /mnt/cdrom
		;;
	sd*)
		mount -o nodev,nosuid /dev/${DEVNAME}i /mnt/flash
		;;
	esac
esac

detach:


#!/bin/sh

DEVCLASS=$1
DEVNAME=$2

case $DEVCLASS in
2)
	# disk
	case $DEVNAME in
	cd*)
		umount -f /mnt/cdrom
		eject /dev/${DEVNAME}c
		;;
	esac
esac

relayd

15.03.2010

В минувшие выходные  познакомился с relayd(8). Это Layer 7 балансировщик и прокси, этакий F5 для бедных. Запустил я его на своем домашнем маршрутизаторе под управлением OpenBSD. Балансировать мне дома конечно нечего, а вот спроксировать есть чего.

У меня есть IP-телефон. Конфигурируется он, как и положено современному домашнему устройству, с помощью браузера. По умолчанию, из соображений безопасности, он дает себя конфигурировать только из той сети, в которой он сам находится. Проблема в том, что у моего маршрутизатора три внутренних интерфейса, в один из которых кросс-кабелем воткнут IP-телефон, в другой – десктоп, а третий интерфейс – PCI WiFi карта – раздает Интернет в эфир. Столь странная конфигурация связана с тем, что у меня на полочке, где стоит маршрутизатор, абсолютно нет места еще и для коммутатора. Но даже с коммутатором остается отдельная беспроводная сеть, в которой, в частности, находится мой лаптоп.

Раньше я все три интерфейса помещал в бридж, но потом решил, что это нехорошо, и сделал отдельные сети с маршрутизацией. Таким образом IP-телефон можно конфигурировать только lynx’ом с маршрутизатора, все остальные машины в квартире к нему доступа не имеют.

Вообще, описанное поведение телефона легко изменить, убрав соответствующую галочку в настройках, но я решил не ковырять дополнительную дырку в его безопасности. Кроме того мне не хотелось менять заводской пароль, который так легко запоминается: 0000. И я решил проксировать на маршрутизаторе запросы на 80 порт телефона из других сетей.

Первая мысль была вставить в inetd.conf что-то вроде


*:8080 stream tcp nowait nobody /usr/bin/nc nc -w 30 192.168.201.32 80

Это сработало, но было ужасно некрасиво, кроме того вынуждало добавлять в URL в браузере номер порта. И тут я вспомнил, что в OpenBSD был какой-то демон relayd, название которого указывало на то, что он может мне помочь. Чтение документации подтвердило мои ожидания. В результате была сделана следующая конфигурация.

В relayd.conf:


relay "phone" {
        listen on 127.0.0.1 port 8080
        forward to 192.168.201.32 port http
}

В pf.conf:


pass in quick on !$ext_if proto tcp to 192.168.201.32 port http \
        rdr-to 127.0.0.1 port 8080

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