FastNetMon

Saturday 28 September 2013

Рамблер как всегда анекдотичен и идиотичен

 Браво, нету слов! И CTPP и сервер имени Садама - здесь не самое страшное....
curl -s https://mail.rambler.ru|tail -8
Engine: CTPP2 engine v2.7.6 (Dzoraget), copyright (c) 2004 - 2011 CTPP Dev. Team;
RuntimeLibrary: CTPP Standard Library v2.7.6 (Dzoraget), copyright (c) 2007 - 2011 CTPP Dev. Team;
License: BSD-like, see http://ctpp.havoc.ru/;
Hostname: saddam11
И да - возмущаюсь я, конечно же, этой одой самолюбования, не хватает биографии авторов прямо в тексте (не комментарии!) главной страницы сервиса :)

Friday 27 September 2013

Как VDSManager хэширует пароли?

Да довольно просто :)

В конфиге юзеры выглядят вот так:
User admin $1$aaaaaa$bbbbbbbb
Это очень похоже на обычный хэш созданный функцией crypt. В общем-то, это он и есть.

aaaaaa - это salt, а bbbbbb - хэшированный пароль.

Как же проверить такой пароль из своей программы?

Тоже очень легко:
perl -e 'print crypt(q/our_password/, q/$1$aaaaaaa$/), "\n"'
В результате мы получим исходную строку:
User admin $1$aaaaaa$bbbbbbbb


Как заменить отдельную ресурсную запись на рекурсивном DNS?

Часто возникает задача - а как, например, запросы на какой-либо сайт отправить на заглушку в стиле "сайт заблокирован" или же наоборот отправить на локальное зеркало этого сайта.

Суть задачи простая - рекурсивный DNS с возможность подменить одну отдельную ресурсную запись определенного домена, не определяя при этом домен полностью.

Я приведу пример решения данной задачи на IPv6 и Debian, но для IPv4 решение аналогично.

Итак, ставим Unbound:
apt-get install -y unbound

Открываем его конфиг:
vi /etc/unbound/unbound.conf 
Забиваем там следующее:
local-data: "test.fastvps.ru. IN AAAA xxx:xxx:151:8081::2"
forward-zone: name: "."
forward-addr: 2001:4860:4860::8888
Где 2001:4860:4860::8888 - адрес вышестоящего IPv6 DNS сервера (в моем случае - Google).



В итоге получим следующее:
host test.fastvps.ru ::1
Using domain server: Name: ::1
Address: ::1#53
Aliases: test.fastvps.ru has IPv6 address xxx:xxx:151:8081::2

Как вы видите,  не важно что творится во внешнем мире, для записи test.fastvps.ru наш рекурсор будет всегда выдавать забиты нами явно IP. При этом вся остальная зона будет работать корректно.



Saturday 21 September 2013

Альтернативная реализация бондинга для Linux - team driver

Какие преимущества она дает перед стандартным bond? Вот такие: https://github.com/jpirko/libteam/wiki/Bonding-vs.-Team-driver-features

Как очевидные преимущества интересные мне я бы привел:

  • Управляемость - интеграция с Dbus/ ZeroMQ и полный пакет утилит из юзер спейса
  • Легкое расширение возможность
  • Возможность вручную задать хэш функцию для выбора канала. Это будет очень полезно для всевозможного кастомного софта. А вот еще из документации: A userspace application can use these counters to distinguish the load of ports and possibly rebalance hashes to different ports.
Куда можно поставить без проблем? На Fedora 18: https://github.com/jpirko/libteam/wiki/Tutorial а вообще требуется просто новое ядро: "The driver is part of the Linux Kernel (since version 3.3).".

Уже интересно? Прошу на офсайт проекта: http://libteam.org/ а вот еще много интересного материала: https://github.com/jpirko/libteam/wiki/Infrastructure-Specification

Monday 16 September 2013

Сборка PowerDNS из репозитория для Debian 7 Wheezy

Устанавливаем все необходимое для сборки deb пакета:
apt-get install autoconf automake bison flex g++ git libboost-all-dev libtool make pkg-config ragel 
Устанавливаем все необходимое для сборки PowerDNS:
apt-get install -y libpq-dev libgdbm-dev libsqlite3-dev libbotan1.10-dev liblua5.1-dev dh-autoreconf libcrypto++-dev xmlto dblatex xmltex docbook-xml docbook-utils libmysqlclient-dev libcdb-dev libgmp3-dev asciidoc
Ставим либу Botan:
cd /usr/src
wget http://files.randombit.net/botan/Botan-1.10.5.tbz
tar -xf Botan-1.10.5.tbz
cd Botan-1.10.5
./configure.py --with-gnump --prefix=/opt/botan-1.10
make install


Клонируем репо:
cd /usr/src
git clone https://github.com/PowerDNS/pdns.git
cd /usr/src/pdns
autoreconf -fisv



vim debian-pdns/rules
И удаляем оттуда:
--with-pgsql-lib=/opt/postgresql/lib --with-pgsql-includes=/opt/postgresql/include \
--enable-cryptopp
gpgsql/opendbx



Собираем бинарный пакет:
fakeroot debian-pdns/rules binary-static 

Но вот дальше что-то идет не так :/

Источник: https://github.com/PowerDNS/pdns и https://github.com/PowerDNS/pdns/pull/777

Sunday 1 September 2013

Поддержка lxc для Vagrant

Вот нашел чудесный проект для реализации сабжа: https://github.com/fgrehm/vagrant-lxc

Создание образов виртуальных машин под разные платформы

Установка vagrant на CentOS 6

После установки vagrant_1.2.7 на CentOS 6 получаем следующее:
vagrant init
ls/opt/vagrant/embedded/gems/gems/vagrant-1.2.7/plugins/hosts/fedora/host.rb:39:in `block in initialize': undefined method `[]' for nil:NilClass (NoMethodError)
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/plugins/hosts/fedora/host.rb:38:in `open'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/plugins/hosts/fedora/host.rb:38:in `open'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/plugins/hosts/fedora/host.rb:38:in `initialize'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/lib/vagrant/environment.rb:502:in `new'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/lib/vagrant/environment.rb:502:in `host'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/lib/vagrant/environment.rb:514:in `block in action_runner'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/lib/vagrant/action/runner.rb:28:in `call'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/lib/vagrant/action/runner.rb:28:in `run'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/lib/vagrant/environment.rb:275:in `hook'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/lib/vagrant/environment.rb:136:in `initialize'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/bin/vagrant:62:in `new'
from /opt/vagrant/embedded/gems/gems/vagrant-1.2.7/bin/vagrant:62:in `'
from /opt/vagrant/bin/../embedded/gems/bin/vagrant:23:in `load'
from /opt/vagrant/bin/../embedded/gems/bin/vagrant:23:in `
'\

Как бороться? Берем патч: https://github.com/mitchellh//issues/2019