My blog

Category: Linux

  • Как я делал телевизор на кухне из Samsung’a ue40c6510uw, WD TV Live и 802.11n

    Проект

    Я планировал пойти по легкому и универсальному пути: панель + компьютер. Преимущества очевидны: гибкость и всеядность компьютера как плеера + возможность пользоваться им для других целей. Недостатки тоже есть: обилие не уместных проводов, наличие клавиатуры и мышки, нетривиальность подключения “телевизионного” пульта ДУ, невозможность совершенно бесшумного решения, цена. (more…)

  • Time Capsule своими руками за 2 часа и 5000р

    Задача

    У меня есть macbook, старенький по нынешним временам, но любимый. С ростом объемов баз Aperture и iTunes проблема резервного копирования встала довольно остро, для чего был в свое время приобретен WD mybook на 500 Гигабайт и Hitachi с USB-коробкой на 400. Хитачи использовался как диск с данными, а WD для резервного копирования Time Machine, подключалось же все по USB. Данная схема меня не устраивала обилием проводов и привязкой к столу: отключаясь от USB я терял связь с накопителями, пойти на кухню с ноутбуком и музыкой я не мог. Я решил сделать файловый сервер, который бы раздавал нужные мне файлы по сети, скажем через WiFi. Здесь обнаружились некоторые проблемы:

    • если я буду раздавать файлы по NFS или CIFS, то сами носители мне придется как-то конвертировать из HFS+ в ext3. На сколько мне известно, единственный способ, это стереть и разметить заново, что с 250Gb нужных данных как минимум муторно.
    • если я буду раздавать файлы по NFS или CIFS, то TimeMachine будет игнорировать эти диски и как объекты для резервного копирования, и как ресурсы для резервного копирования.
    • Spotlight не будет правильно работать с CIFS.

    Конечно, я могу реализовать Time Machine своими руками на bash’е, cron’e и rsync’е, но знание решения этой задачи делает ее неинтересной. Кроме того, Time Machine просто работает ™ и тесно интегрирована с различными программами Apple. Удобная она. Решение мне подсказали коллеги, надо использовать iSCSI, который работает на уровне устройства и отдает файл или дисковый массив с сервера (так назваемый target) на клиент (initiator) как блочное устройство. Для клиента такой диск ничем не отличается от локально подключенного SCSI-устройства, что решает мои проблемы.

    Специальные требования

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

    Аппаратная часть

    Я знал, что один мой коллега когда-то делал беспроводную точку доступа, совмещенную с файловым сервером своими руками, но что-то у него не заладилось и компьютер отправился на шкаф. В результате за символические деньги мне досталась старая безвентиляторная VIA Epia c процессором VIA Samuel-2 в хорошем корпусе и 128 мегабайт оперативной памяти к ней. Конечно, следовало бы купить Intel D301GLY, цена которой в Москве 1500р, Mini ITX корпус (еще 1500-2000р) и память DDR II (еще около 1000р). Оставшиеся деньги можно вложить в карточку WiFi и flash, с которой будет загружаться операционная система. Я просто взял флешку, которой не часто пользовался, а WiFi у меня раздает роутер Asus WL-500W. Если роутера нет, то можно использовать свободный PCI-слот для сетевой карты с несколькими портами, а WiFi повесить на USB или использовать Apple Airport Express, что вплотную приблизит нас к формфактору Time Capsule.

    Замечу, что даже с учетом роутера, даже более дорогого гигабитного LinkSys и жесткого диска, вся система получается дешевле оригинального Time Capsul и функциональнее ее, хотя и больше по размеру.

    Можно также в качестве платформы использовать Ausus EEEPC или просто старый ноутбук.

    Программная часть

    В качестве операционной системы был использован Debian Etch в минимальной конфигурации и build essential для сборки сервера. Для Linux есть реализация iSCSI-target, то есть сервера,http://iscsitarget.sourceforge.net/. С раздела downloads требуется скачать архив, так как готовой сборки нет, распаковать его, выполнить make && make install. Все проходит без ошибок, собственно, сервер вполне готов к работе.

    Конфигурационный файл iSCSI-target находится в /etc/ietd.conf. Единственные строчки, играющие принципиальное значение на этапе тестирования нашей системы, это имя ресурса, которое вообще говоря может быть любым, и запись вида Lun 0 Path=/dev/sda, где /dev/sda – устройство, которое мы собираемся отдавать. Клиентом на Macintosh будет globalSAN iSCSI initiator, который совершенно бесплатен. Для Windiws есть также бесплатный Microsoft iSCSI software initiator. Обе программы обладают очевидным интерфейсом: надо вписать IP сервера на 1й вкладке и выбрать Lun по имени на второй, после чего в системе появится еще 1 жесткий диск, который можно разбивать, форматировать или использовать уже существующие разделы.

    Так как все мои компьютеры находятся в 1й локальной сети без доступа извне, то шифрования канала и авторизации я не делал, хотя iSCSI поддерживает CHAP, а сам iSCSI можно инкапсулировать в IPSec, если вы хотите работать со своими дисками скажем издалека.

    Производительность и результат

    Что тут можно сказать? Даже моя откровенно слабая и старая VIA Epia огараничена сверху производительностью сети, скорость работы с диском чуть менее 100 мегабит в секунду. Кеширование диска происходит и на стороне клиента и на стороне сервера, так что больший объем оперативной памяти на сервере – лучше. Aperture стала заметно быстрее работать с коллекцией, точнее, ее работа перестала сказываться на отклике самого ноутбука. Time Machine сразуже опознала свой старый диск и синхронизировала резервную копию. Теперь я могу ходить с ноутбуком по всему дому не теряя связи со своими накопителями.

  • Как строить системы резервного копирования

    Как вы знаете, я упоролся по безопасности и надежности, по этому я пробовал несколько систем резервного копирования с заявленным бесконечным объемом сохранения. DISCLAMER: описанное ниже не относится к новому сервису Amazon, есть вероятность подозревать, что они не пидарасы в плохом смысле.

    Итак, простые рецепты как сделать для пользователей бесконечное пространство для хранения резервных копий по 5-10 баксов в месяц? Легко!

    Первое, что вам понадобится, это выбор правильного языка программирования. Например, Java подойдет, этим вы убьете сразу двух зайцев. Во-первых, будет “кросплатформенно”. Во-вторых, оно может быть сколь угодно тормозной, падающей на ровном месте программой: все равно энтерпрайзно.

    Но главный момент: как сделать “бесконечный ресурс” за недорого?! Ответ прост! Во-первых, rate limit рулит: на Crashplan или AltDrive вам больше 10 ТБ в год не вкачать никак. Во-вторых, если вы хотите быть быстрее Crashplan, просто сделайте интерфейс, которым нельзя пользоваться: AltDrive не дает восстановить ни один файл, пока не будет завершен полный бекап (в моем случае речь идет примерно о 6-8 месяцах работы).

    Горите в аду, я скорее куплю неновый mac mini, подключу к нему NAS как SAN по iSCSI или дождусь клиента Amazon под linux.

  • Домашний Роскомнадзор

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

    С технической стороны, сделал все при помощи Squid proxy и Diladele, который был выбрана за простоту работы/настройки, довольно качественный анализатор и низкую цену, 12 евро в год. Что он умеет полезного:

    • классифицировать URL как приналдежащий к какому-то классу;
    • разбивать пользователей по именам/IP/сеткам и засовывать их в политики;
    • включать политики по расписанию;
    • настройка адблока, фильтров трекеров и прочего ненужного – отдельно в каждой политике, удобно, что она не смешана с классификатором. Лист отдельно на Рунет – есть;
    • так как он глобальный, то не зависит от устройства, а трекеры и рекламу я хочу резать везде;
    • отчеты, но не очень информативные;
    • выключить сайт из ICAP’а можно через интерфейс, чтобы, например, банк-клиент вообще не попадал в проверки никогда.

    Что он умеет бесполезного:

    • MitM так как везде (кроме банк-клиента Ситибанка, лол) HSTS
    • классификацию по содержимому URL, по содержимому страницы, JS и картинок (определяет наличие текстуры кожи на картинке). По мне – это все источник ложных срабатываний.
  • Squid дома

    Поставил дома прокси, чтобы наводить политику на детский iPad: хочется иметь возможность блокирования конкретного доставшего видео в Youtube без блокировки всего Youtube и глобально навести баннерорезалку на все, даже туда, где она не предусмотрена производителем. Дело в том, что Youtube постоянно предлагает одни и те же песенки и одни и те же мультики, наизусть можно выучить. Попутно выяснилось (не то чтобы это все для меня было новостями), что:

    – есть открытые решения, но заброшенные: Rejik, SquidGuard и т.п.

    – бесплатный классификатор ровно один, называется Adblock+, все советуют импортирвать баннеры из него. Не удобно!

    – есть платные классификаторы, за вменяемые деньги, Diladele, например. 12 евро/год на 10 компов.

    – HSTS работает, блин, со своим MitM’ом на сквиде я обломался. Собственно, трекать собственный HTTPS мне ни за чем не надо, решил посмотреть работает ли оно.

  • Обновил домашние системы

    Дошли руки обновить сервер с CentOS 6.5 до 7. systemd, конечно, но с древнего SSD Intel 520 (SandForce) на 160GB (раньше он стоял в iMac’е) система грузится практически моментально. Самое длительное в процессе – загрузка bios’а RAID-контроллера. Выяснил, что теперь дистрибутив в виде образа ISO просто можно закатать на флешку через dd, а Unebootlil’ом наоборот, пользоваться нельзя. Узнал, что BSD’шный dd не умеет мегабайты в виде “M”, а букву “m” тихо игнорирует, странно. Зато новая samba без проблем съела конфиг старой и все сразу и без вопросов поднялось. К стыду, опять отключил SELinux.

    Обновил и XBMCBuntu до Kodibuntu. Резервную копию настроек от XBMC (Frodo) Kodi не сожрал, статистика просмотренных потерялась.

    В результате новая самба на сервере и новая самба на клиенте -> ушло раздражающее залипание при включении.

  • Обновился по хардкору

    Внезапно все снес к чертям нафиг без реальных возможностей плавной миграции. Заодно выяснил:

    – резервная копия была всего, кроме почты коллеги :-(. Стыдно!
    – устанавливать веб-приложения yum’ом из репозитория – простой способ невосполнимо утратить к черту всю кастомизацию что была. Не надо так!
    – переезд обратно на iCloud привел к тому, что я перестал пользоваться сервером и там все развалилось. Надо переезжать обратно, чтобы держать систему и себя в тонусе.

    Восстановил почти все.

  • Что может быть лучше

    Чем патч Бирмана утром? Начал день с rm -rf /

  • CVE-2014-0160

    CentOS обновился, Oracle нет, лол.

  • SSL-сертификат

    Прикрутил к луна-парку widlcard-сертификат, круто, теперь нет трудностей с поддоменами. Брал на GoGetSSL, сертификат – Comodo.