FastNetMon

Thursday 25 October 2012

Проброс порта из приватной сети посредством ssh туннулинге

Делается вот так:
sudo ssh -fNL 80:10.0.99.134:80 root@intermediate-machine.ru
В итоге при соединение к локалхосту на 80й порт, реальное соединение будет идти на 80й порт к хосту 10.0.99.134, находящемуся в приватной сети и доступному лишь через промежуточную машину.

OpenVZ и CentOS 6 - установка debug ядра

Открываем конфиг репо:
vi /etc/yum.repos.d/openvz.repo

Там ищем блок: openvz-kernel-rhel6-debuginfo и меняем на enabled=1.

Ставим debug ядро:
yum install -y vzkernel-debug

Активация kdump на CentOS 6 и OpenVZ


Ставим юзерспейс софт:
yum install -y kexec-tools

Проверим, чтобы юзерспейс демон грузился при запуске:
chkconfig --list|grep kdump
kdump           0:выкл 1:выкл 2:выкл 3:вкл 4:вкл 5:вкл 6:выкл


После этого, убеждаемся, что опция "crashkernel=auto" присутствует среди опций используемого ядра.

Перезагружаемся для применения изменений:
shutdown -r now
Теперь если машина упадет по кернел панику, в папке /var/crash/ мы обнаружим лог того, что творилось с ядром.

В случае отладки проблем OpenVZ ядер рекомендуется использовать дебаг версию ядра.

Источник: http://bugreev.ru/blog:2011:11:21-_kernel_panic_-_%D0%B4%D0%B5%D0%B1%D0%B0%D0%B3_%D1%8F%D0%B4%D1%80%D0%B0 

Wednesday 24 October 2012

Конвертер bind конфига в mysql на perl



Скрипт в репозитории zone2sql_perl_convert_bare_to_mysql.pl.

Прямая ссылка: http://fastvps.googlecode.com/svn/trunk/powerdns_zone_converter/zone2sql_perl_convert_bare_to_mysql.pl

Среда разработки и тестирования: Debian 6, в папке /etc/bind/ имеется named.conf и куча зон.

dpkg -l |grep pdns
ii  pdns-backend-mysql               2.9.22-8+squeeze1            generic MySQL backend for PowerDNS
ii  pdns-doc                         2.9.22-8+squeeze1            PowerDNS manual
ii  pdns-server                      2.9.22-8+squeeze1            extremely powerful and versatile nameserver

Суть скрипта, берем команду:
zone2sql --on-error-resume-next=yes --named-conf=/etc/bind/named.conf --bare

Она парсит конфиг Bind и представялет его в виде удонбом для парсинга (парсить конфиг Bind самому - очень сложно, нужно учесть огромное множество моментов).

После этого, обрабатываем этот файл и делаем из него удобный для импорта sql файл, который генерируется идентично тому, что создает команда:
zone2sql --on-error-resume-next=yes --named-conf=/etc/bind/named.conf --gmysql

Зачем же, спросите Вы, плодить сущности? Это нужно потому что исправить генератор zone2sql (изменить способ создания зон, внести коррективы) почти нереалньо - он написан на сложном C++ c STL, владение которым обычно не значистя в списке умений системного администратора. А мой скрипт испарвить крайне легко! Так как это перл.

Тестирование работы скрипта и идентичности его результата работы тому, что генерирует gmysql.

Создаем папку:
mkdir var

Стягиваем скрипт по ссылке выше и даем ему право исполнения:
chmod +x zone2sql_perl_convert_bare_to_mysql.pl

Запускаем:
./zone2sql_perl_convert_bare_to_mysql.pl 


Он выдаст примерно следующее:
Convert zones to raw file
Process raw data file to sql

Работает он весьма быстро, на 150 тысячах зон всего:
real 0m16.537s
user 0m14.945s
sys 0m1.515s

В итоге в папке var появятся три файла:
error.log - это лог команды zone2sql --bare, некритичные ошибки из него игнорируются автоматически
result_fastvps.sql - результирующий sql файл
zone2sql_raw.dat - bare файл, сгенерированный командой zone2sql.

Итак, сравним результат с тем, что делает zone2sql, для этого вызовем zone2sql:
zone2sql --on-error-resume-next=yes --named-conf=/etc/bind/named.conf --gmysql | sort > var/result_zone2sql.sql
cat var/result_fastvps.sql | sort > var/result_fastvps_sorted.sql 

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

Сравним по md5:
md5sum var/result_zone2sql.sql
md5sum var/result_fastvps_sorted.sql 


Будьте внимательны при тесте, чтобы содержимое зон не менялось.




Актуальная версия всегда в репозитории: http://code.google.com/p/fastvps/wiki/zone2sql_Perl?ts=1351069503&updated=zone2sql_Perl

Tuesday 23 October 2012

Настройка cgroup на CentOS 6

Запускаем демон конфигурации сгрупп:
/etc/init.d/cgconfig start
chkconfig cgconfig on

После этого будут созданы группы:

cat /proc/mounts
rootfs / rootfs rw 0 0
/proc /proc proc rw,relatime 0 0
/sys /sys sysfs rw,relatime 0 0
udev /dev devtmpfs rw,relatime,size=8125048k,nr_inodes=2031262,mode=755 0 0
devpts /dev/pts devpts rw,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /dev/shm tmpfs rw,relatime 0 0
/dev/mapper/vg_msk3-lv_root / ext4 rw,relatime,barrier=1,data=ordered 0 0
/proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0
/dev/sdb1 /boot ext4 rw,relatime,barrier=1,data=ordered 0 0
/dev/mapper/vg_msk3-lv_home /home ext4 rw,relatime,barrier=1,data=ordered 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0
/dev/sdc /ssd ext3 rw,relatime,errors=continue,barrier=1,data=ordered 0 0
cgroup /cgroup/cpuset cgroup rw,relatime,cpuset 0 0
cgroup /cgroup/cpu cgroup rw,relatime,cpu 0 0
cgroup /cgroup/cpuacct cgroup rw,relatime,cpuacct 0 0
cgroup /cgroup/memory cgroup rw,relatime,memory 0 0
cgroup /cgroup/devices cgroup rw,relatime,devices 0 0
cgroup /cgroup/freezer cgroup rw,relatime,freezer 0 0
cgroup /cgroup/net_cls cgroup rw,relatime,net_cls 0 0
cgroup /cgroup/blkio cgroup rw,relatime,blkio 0 0


Настравиаем его:
vi /etc/cgrules.conf 
Вписываем в начало5
server-689-5106-ssh cpu client1
Включаем демон автораспихивания процессов по сгруппам на основании имени юзера:
chkconfig cgred on
/etc/init.d/cgred start

Создаем сгруппу, куда будут помещены процессы:
mkdir /cgroup/cpu/client1/
Настроим параметр приоритета процессора:
 echo 512 > /cgroup/cpu/client1/cpu.shares 
После этого, пробуем войти данным пользователем и все его процессы автоматически влетят в группу client1.

Смотрим, чтобы процессы попали в группу:

cat /cgroup/cpu/client1/tasks
18642
18643
18660
18671
18672
18674
18677



Все!

Saturday 20 October 2012

Отладка mod_rewrite

Дадада! Это возможно!

В случае Debian:

vim /etc/apache2/mods-enabled/rewrite.load 
Там вносим:

RewriteLog "/var/log/apache2/rewrite.log"
RewriteLogLevel 3
И перезапускаем апача:
/etc/init.d/apache2 relaod 
В итоге в указанном логе появится море полезной информации, способной помочь отладке!  

Tuesday 16 October 2012

Конфликт зависимостей при установке vzctl на CentOS 5

Текст ошибки:

yum upgrade vzctl
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.plusline.de
 * epel: mirror.kiewel-online.ch
 * openvz-kernel-rhel5: mirror.softaculous.com
 * openvz-utils: mirror.softaculous.com
 * updates: ftp.plusline.de
Setting up Upgrade Process
Resolving Dependencies
--> Running transaction check
---> Package vzctl.x86_64 0:4.0-1 set to be updated
--> Processing Dependency: vzctl-core = 4.0-1 for package: vzctl
--> Processing Dependency: vzquota >= 3.1 for package: vzctl
--> Processing Dependency: libcgroup.so.1()(64bit) for package: vzctl
--> Processing Dependency: libvzctl-4.0.so()(64bit) for package: vzctl
--> Running transaction check
---> Package libcgroup.x86_64 0:0.38-1 set to be updated
---> Package vzctl-core.x86_64 0:4.0-1 set to be updated
---> Package vzquota.x86_64 0:3.1-1 set to be updated
--> Processing Conflict: vzctl conflicts ploop-lib < 1.5-1
--> Restarting Dependency Resolution with new changes.
--> Running transaction check
--> Processing Dependency: ploop-lib = 1.4 for package: ploop
---> Package ploop-lib.x86_64 0:1.5-1 set to be updated
--> Running transaction check
---> Package ploop.x86_64 0:1.5-1 set to be updated
--> Processing Conflict: ploop-lib conflicts vzkernel < 2.6.32-042stab061.1
--> Finished Dependency Resolution
ploop-lib-1.5-1.x86_64 from openvz-utils has depsolving problems
  --> ploop-lib conflicts with ovzkernel
Error: ploop-lib conflicts with ovzkernel
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest
Суть такова, что vzctl-4 не имеет зависимостей к ploop, но обновить его не так тривиально.

По информации от сотрудников Parallels (Кирилл Колышкин), нужно сделать следующее:
rpm -e --nodeps ploop ploop-lib
yum upgrade vzctl -y
Либо в случае возникновления проблемы , описанной: http://phpsuxx.blogspot.ru/2012/11/ploop-lib-14-1.html (error: "ploop-lib" specifies multiple packages, ошибка: "ploop-lib-1.4-1" задает несколько пакетов)
rpm -e --nodeps ploop-lib.x86_64
rpm -e --nodeps ploop-lib.i386  
rpm -e --nodeps ploop 
yum upgrade vzctl -y

Первоисточник: http://bugzilla.openvz.org/show_bug.cgi?id=2387 

Monday 15 October 2012

Друзья! Не будем безразличны к будущему! Поддержим обращение к министру по поводу IPv6!


Прошу сделать один простейший ретвит: https://twitter.com/odintsov_pavel/status/257828851827228672 чтобы привлечь внимание к вопросу! 

Удобный способ пинговать IPv6 link local адреса

Вместо:
ping6 -I bond0 fe80::1
PING fe80::1(fe80::1) from fe80::6a05:caff:fe02:c5e1 bond0: 56 data bytes
64 bytes from fe80::1: icmp_seq=1 ttl=64 time=1.54 ms
64 bytes from fe80::1: icmp_seq=2 ttl=64 time=0.414 ms
64 bytes from fe80::1: icmp_seq=3 ttl=64 time=0.394 ms
Можно вот так:
ping6 fe80::1%bond0
PING fe80::1%bond0(fe80::1) 56 data bytes
64 bytes from fe80::1: icmp_seq=1 ttl=64 time=3.02 ms
64 bytes from fe80::1: icmp_seq=2 ttl=64 time=0.747 ms
64 bytes from fe80::1: icmp_seq=3 ttl=64 time=0.730 ms
64 bytes from fe80::1: icmp_seq=4 ttl=64 time=0.703 ms
64 bytes from fe80::1: icmp_seq=5 ttl=64 time=0.686 ms
 

Ростелеком - тормоз прогресса! Бойкот Ростелекому!

Место действия  - Ростелеком, Санкт-Петербург, Приморский район, интернет для юридического лица за 35 тысяч рублей.

Жалоба в Ростелеком из-за отказа выделения IP:
Добрый день Суть претензции следующая - отсутствие технической возможности выделения нам соединения по IPv6 в дополнение к IPv4. Для нас наличие данной услуги крайне критично, так как мы работаем с ресурами доступными по протоколу IPv6 и нам необходма высокая скорость работы по данному протоколу. Считаю непреимлемым, что данная услуга не оказывается (по словам нашего менеджера) для корпоративных клиентов. Пожалуйста, разъясните, в чем заключается фундаментальная невозможность предоставления нам доступа к наиболее современной части сети Инетрнет
И феерический ответ:
Уважаемый Павел Одинцов,

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

К сожалению, в настоящее время ОАО «Ростелеком» не предоставляет доступ к сетевым ресурсам Интернет с использованием поротокола IPv6.

Предоставление параллельного доступа по протоколам IPv4 и IPv6 будет производиться после исчерпания IP адресов протокола IPv4. Ориентировочно об использовании протокола IPv6 можно говорить не ранее конца 2013 года.

Сожалеем о доставленных неудобствах, надеемся на понимание и долгосрочное сотрудничество.

И.о. начальника отдела по работе с претензиями

И.В. Свидер

Wednesday 10 October 2012

OpenVZ, CentOS IPv6: Destination unreachable: Administratively prohibited

Фиксится легко:
/etc/init.d/ip6tables stop
И надо подчистить конфиг ip6tables в /etc/sysconfig, чтобы не дропал forward пакеты. 

Monday 8 October 2012

Русификация Wordpress

Как оказалось, нетривиальнйы процесс весьма. Например, перевод от ru.wordpress.org крайне неплолный, от mywordpress.ru на порядок полнее.
mkdir russian
cd russian
wget -Orussian.tar.gz 'http://mywordpress.ru/wp-content/plugins/download-monitor/download.php?id=31'
unzip russian.tar.gz
mkdir /var/www/admin/data/www/blog.ru/wp-content/languages

И переносим файл языка
mv ./wordpress/wp-content/languages/ru_RU.* /var/www/admin/data/www/blog.ru/wp-content/languages
 Устанавливаем русский стандартным:
vim wp-config.php
define('WPLANG', 'RU_ru');