вторник, 27 ноября 2012 г.

Быстро проверить удалённый сертификат

echo | openssl s_client -connect hostname:465 2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | openssl x509 -noout -subject -dates

воскресенье, 25 ноября 2012 г.

Внимательнее с декларацией!

Поставил рекорд своих отправок через шипито - посылка шла месяц, вместо положенных 10-14 дней.
Есть ощущение, что это из-за того, что в декларации накосячил.
Вместо "1 штаны за 79$" забил "79 штанов по баксу" )

среда, 21 ноября 2012 г.

Надзоры и запреты

Пришла неделю назад абуза от росконадзора. Запретить забанить уничтожить растрелировать клиентский сайт. Сайт и правду нехороший, про какие-то курительные смеси. Ну, написали клиенту, на время реакции засуспендили.
Одно только но.. Абуза пришла на мыло человека, почти 2 года у нас не работающего. Просто по привычке форвард на меня стоит, вот и попала абуза ко мне.
Перерыл все ресурсы конторы - в райпе везде контактом указан я. Думаю, ну неужели у них своя база, с блекждеком и устаревшими данными? И тут коллега натыкается на просторах инета на какой-то хуиз сайт, который юзает свою копию, года видимо 2010.
Написал чиновникам, что клиента уведомили, сайт заблокировали, но шлёте абузы вы не туда и как бы в будущем избежать такого.
Ответа так и не получил. Попробовал звонить - трубку не берут.
Вот такой надзор.

среда, 14 ноября 2012 г.

tcptrack for centos 6

# wget http://pkgs.repoforge.org/tcptrack/tcptrack-1.4.0-1.el6.rf.x86_64.rpm
# yum localinstall tcptrack-1.4.0-1.el6.rf.x86_64.rpm -y

понедельник, 5 ноября 2012 г.

HD 6310: "AMD: unsupported hardware"

 Обновил тут свою Fedora 16 на ноуте, после апдейта получил в правом нижнем углу прозрачный логотип: "AMD: unsupported hardware".
Нашёл кучу обсуждений и решение проблемы - заменить в драйвере вызов функции с логотипом на нопы. В результате каша получилась. Да и неправильно это, в конце концов.

Нашёл второе решение, правильное: ссылка (первый пост).
Прикол связан с файликом /etc/ati/control, надо его наменить на пофиксенный - и лого пропал.

Пост с файликом: Ссылка

понедельник, 29 октября 2012 г.

Св.Селестина готова

Ну вот, выбрал время, закончил:



четверг, 25 октября 2012 г.

auditd: следим за файлами

Недавно потребовалось последить за судьбой одного файлика - кто и когда что с ним делает. С auditd раньше не работал, а тут подумал, что наверно он как раз такими вещами должен заниматься. Оказалось, что, при помощи него, отслеживание файлов - занятие лёгкое и приятное )

Значит, надо нам проследить за судьбой файлика /tmp/vipfile. Говорим:
# auditctl -w /tmp/vipfile
Ну а потом с ним кто-то что-то делает:

1. $ touch /tmp/vipfile
2. $ echo test > /tmp/vipfile
3. $ echo test2 >> /tmp/vipfile
4. $ cp /tmp/vipfile /tmp/vipfile_backup
5. $ rm /tmp/vipfile
6. $ cp /tmp/vipfile_backup /tmp/vipfile
7. $ cat /tmp/vipfile
8. $ /tmp/vipfile
9. $ rm /tmp/vipfile
В какой-то момент мы хотим посмотреть, было ли что-нибудь интересное с файликом:
# aureport -f

File Report
===============================================
# date time file syscall success exe auid event
===============================================
1. 10/25/2012 19:28:13 /tmp/ 2 yes /bin/touch 500 60063
2. 10/25/2012 19:28:17 /tmp/vipfile 2 yes /bin/bash 500 60064
3. 10/25/2012 19:28:21 /tmp/vipfile 2 yes /bin/bash 500 60065
4. 10/25/2012 19:28:29 /tmp/vipfile 2 yes /bin/cp 500 60066
5. 10/25/2012 19:28:35 /tmp/ 263 yes /bin/rm 500 60068
6. 10/25/2012 19:28:44 /tmp/ 2 yes /bin/cp 500 60070
7. 10/25/2012 19:28:56 /tmp/vipfile 2 yes /bin/cat 500 60071
8. 10/25/2012 19:29:01 /tmp/vipfile 59 no /bin/bash 500 60072
9. 10/25/2012 19:29:07 /tmp/ 263 yes /bin/rm 500 60074
Всё как на ладони.

вторник, 18 сентября 2012 г.

sshd не принимает ключ

Надо было нагиосу сделать вход по ключу на очередной ноде. Сделал - не пускает. Несколько раз сверил права на .ssh, на authorized_keys, на хомяки - всё правильно. Но не принимает ключ, давай пароль и всё тут. Самое забавное - таких серверов полно, все настроены одинакого - ходит нагиос по ключику. Попробовал себе ключ сделать - пускает.
-vvv ничего интересного кроме очевидного не показал:
 
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /var/spool/nagios/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

Врубил DEBUG3 в конфиге демона:

debug3: mm_answer_keyallowed entering
debug3: mm_answer_keyallowed: key_from_blob: 0xaaaabbbbcc60
debug1: temporarily_use_uid: 333/333 (e=0/0)
debug1: trying public key file /home/nagios/.ssh/authorized_keys
debug1: restore_uid: 0/0
debug1: temporarily_use_uid: 333/333 (e=0/0)
debug1: trying public key file /home/nagios/.ssh/authorized_keys2
debug1: restore_uid: 0/0
Failed publickey for nagios from 178.111.22.33 port 58970 ssh2
debug3: mm_answer_keyallowed: key 0xaaaabbbbcc60 is not allowed
И это через гугл навело на selinux )) Вот и все дела. Отключил и заработало.

пятница, 7 сентября 2012 г.

ssh: укорачиваем команду

Уже как-то писал про то, как удалось сократить длину некот. git команд за счёт настройки хостов в ssh_config. Решил на ноуте сделать так же для наших хостов, чтобы не набивать "$ ssh username@host.domain.org".
Так, как писать секции самому неохота, сделал скриптик sshgen.sh, вызываемый в цикле:

#!/bin/bash
if [ $# -eq 0 ]; then
        echo "Usage: sshgen.sh host domain user"
else
        echo "Host $1"
        echo "        User $3"
        echo "        HostName $1.$2"
fi
Работает так:
$ for a in {1..7};do for b in vps$a;do ./sshgen.sh $b domain.com username; done; done
Host vps1
        User username
        HostName vps1.domain.com
Host vps2
        User username
        HostName vps2.domain.com
Host vps3
        User username
        HostName vps3.domain.com
Host vps4
        User username
        HostName vps4.domain.com
Host vps5
        User username
        HostName vps5.domain.com
Host vps6
        User username
        HostName vps6.domain.com
Host vps7
        User username
        HostName vps7.domain.com
 Полученный вывод суём в ssh_config и вместо "$ ssh username@host.domain.org" пишем "$ ssh host"

среда, 5 сентября 2012 г.

ISP: account disabled by server administrator

Человек жалуется - просрочил оплату, был залочен. Оплатил, но "сайт досихпор неработает".

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

<Directory /var/www/username/data>
        AllowOverride none
        Deny from all
        ErrorDocument 403 /disabled/index.html
</Directory>

Дёрнул суспенд/унсуспенд - 0.
Руками потёр начинку секции. Вот теперь интересно - заменится ли ручная правка? )) Посмотрим..

Самый прикол, что лочился и разлочивался акк через испэшный http api. На их форуме нашёл пост про аналогичную ситуацию, но там акки оставались лоченными из-за порчи конфига апача лишними закрывающими тегами секций. Официальная позиция на этот счёт - да, баг имеет место и не только с конфигом апача. Но баг редкий и трудновоспроизводимый, поэтому пока не отловили.
Если тут есть связь - становится немножко грустно.

пятница, 31 августа 2012 г.

Селестина, день 4

Попробовал сделать молнии на клинке, прямо сходу не так пошло. Надо переделывать. И цветы с волосами как-то не так выглядят, надо придумать что-то.


четверг, 30 августа 2012 г.

Селестина, день 3

Ещё немного осталось:


среда, 29 августа 2012 г.

PHP и ./configure --prefix

Собираю сухосин. Не могу префикс задать, вместо моего /usr/local/php52 встаёт дефолтный.
Нашёл "фичу", епт: можно хоть обделаться, передавая конфигуратору опции, которые, между прочим, в хелпе конфигуратора перечислены, но он их затрёт данными, получаемыми от php-config. Странное поведение, по идее, должно быть наоборот. В общем, вместо префиксов просто задал
./configure --with-php-config=/usr/local/php52/bin/php-config

вторник, 28 августа 2012 г.

Святая Селестина

Попалась тут на ебее Святая Селестина из Адепта Сороритас, в субботу приехала. Бросил облитераторов, взялся за неё.
Вот результат на второй вечер:


Сегодня-завтра может доделаю.

Сборка php 5.4 для cpanel с php 5.3

Сказали, что надо для панелей запилить пых 5.4, сохранив основным 5.3.
Собрал c блекджеком, проститутками и параметрами:
./configure --prefix=/usr/local/php54 --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-gd-native-ttf --enable-mbstring --enable-pdo --enable-soap --enable-sockets --enable-wddx --enable-zip --with-bz2 --with-curl=/opt/curlssl/ --with-freetype-dir=/usr --with-gd --with-gettext --with-imap=/opt/php_with_imap_client/ --with-imap-ssl=/usr --with-jpeg-dir=/usr --with-kerberos --with-libdir=lib64 --with-libexpat-dir=/usr --with-libxml-dir=/opt/xml2 --with-libxml-dir=/opt/xml2/ --with-mcrypt=/opt/libmcrypt/ --with-mysql=/usr --with-mysql-sock=/var/lib/mysql/mysql.sock --with-mysqli=/usr/bin/mysql_config --with-pcre-regex=/opt/pcre --with-pdo-mysql=shared --with-pdo-sqlite=shared --with-pic --with-png-dir=/usr --with-tidy --with-xmlrpc --with-xpm-dir=/usr --with-xsl=/opt/xslt/ --with-zlib --with-zlib-dir=/usr --with-zend-vm --with-pgsql --with-pdo-mysql --with-pdo-pgsql
Пришлось по мелочи либ доставить, конфигурялка подсказала. Взял стоковый php.ini, поправил лимиты на память, аплоад, пост и еррор лог задал.
Дальше самое интересное: в suphp указываем путь до нового пыха и в конфе апача добавляем хандлер:

/opt/suphp/etc/suphp.conf:
application/x-httpd-php54="php:/usr/local/php54/bin/php-cgi"

/usr/local/apache/conf/includes/pre_virtualhost_2.conf:
suPHP_AddHandler application/x-httpd-php54

Теперь клиенту достаточно добавить в .htaccess:
AddType application/x-httpd-php54 .php5 .php4 .php .php3 .php2 .phtml
Самое главное - не забыть закомментить всё при запуске easyapache ))

среда, 22 августа 2012 г.

Книжка про перл

$ mkdir beginning_perl
$ cd  beginning_perl
$ lynx --source http://www.perl.org/books/beginning-perl/| grep pdf| awk -F"\"" '{print $4}' | xargs wget
$ gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=Beginning_Perl.pdf -dBATCH 3145_Intro.pdf 3145_Chap01.pdf 3145_Chap02.pdf 3145_Chap03.pdf 3145_Chap04.pdf 3145_Chap05.pdf 3145_Chap06.pdf 3145_Chap07.pdf 3145_Chap08.pdf 3145_Chap09.pdf 3145_Chap10.pdf 3145_Chap11.pdf 3145_Chap12.pdf 3145_Chap13.pdf 3145_Chap14.pdf 3145_AppA.pdf 3145_AppB.pdf 3145_AppC.pdf 3145_AppD.pdf 3145_AppE.pdf 3145_AppF.pdf 3145_AppG.pdf 3145_AppH.pdf 3145_AppJ.pdf 3145_Index.pdf

Cpanel wildcard domains and nginx

На днях появилась такая проблемка:
1. Клиент в сипанели цепляет вайдкардный домен вида *.domain.com.
2. Панель добавляет алиас www.*.domain.com.
3. При генерации конфига nginx в директиву server_name попадает значение  "*.domain.com www.*.domain.com"/
4. Nginx проверяет новый конфиг и говорит, что он invalid, т.к. "*" допускается только в начале или конце сервернейма.

Сипанель нельзя заставить генерить имена с "*" в середине, поэтому пришлось выгребать такие имена из нагенерённого конфига.

Сделал такую штуку:
#!/usr/bin/perl
my $filename=$ARGV[0];
open(IN, "<", $filename) or die "open error\n";

while (<IN>) {
        my($line) = $_;
        chomp($line);
        if (m/server_name/) {
                $line =~ s/\S+\*\S+//g;
        }
        print  "$line\n";
}
Дергаю её после генерации конфига, в патч для скрипта-генератора:
--- build-conf.sh       2010-03-04 14:26:39.000000000 +0300
+++ build-conf.sh_new   2012-08-22 11:58:27.000000000 +0400
@@ -16,13 +16,16 @@

 cd $ROOT

-if [ ! -f $NGINX/vhosts.conf.new ]; then
-       touch $NGINX/vhosts.conf.new
-       chmod 600 $NGINX/vhosts.conf.new
+if [ ! -f $NGINX/vhosts.conf.raw ]; then
+        touch $NGINX/vhosts.conf.raw
+        chmod 600 $NGINX/vhosts.conf.raw
 fi

 # build nginx conf using default template in $TMPL
-$ROOT/ngx_conf_gen.pl -c /usr/local/apache/conf/httpd.conf > $NGINX/vhosts.conf.new || exit 4
+$ROOT/ngx_conf_gen.pl -c /usr/local/apache/conf/httpd.conf > $NGINX/vhosts.conf.raw || exit 4
+
+# remove invalid wildcarded server_name (example: www.*.server.com)
+$ROOT/rm_badwildcard.pl $NGINX/vhosts.conf.raw > $NGINX/vhosts.conf.new

 new=`$MD5 $NGINX/vhosts.conf.new | cut -f1 -d' '`
 cur=`$MD5 $NGINX/vhosts.conf | cut -f1 -d' '`

понедельник, 13 августа 2012 г.

gem install pg fail

Поганый руби не собирает pg:
# gem install pg
Building native extensions.  This could take a while...
......
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

        /usr/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Офигенно, вроде бы попросту не находит libpq-fe.h. А он есть ))
Задавать пути бесполезно, всё равно не находит ))

А на самом деле нужно поставить девел набор - gcc, make и т.д. и тогда всё соберётся )) Ну кто бы мог подумать )) А в еррорах это написать не судьба

четверг, 26 июля 2012 г.

Ubuntu 12.04 suxx

Попросил клиент дедик с убунту 12. Разметку прислал без отдельного /tmp
Ставлю аптом пакеты, желаемые этим товарищем, а мне апт говорит:
E: Problem executing scripts DPkg::Pre-Invoke 'mount -o remount,exec /tmp'
Вот так вот. Даже мысли недопускается о том, что /tmp может не быть вынесен отдельно.
Воркараунд - рамдиск. В /etc/fstab добавил:
tmpfs /tmp tmpfs defaults 0 0
Замаунтил, поставил что надо, размаунтил, закомментил рамдиск.

пятница, 20 июля 2012 г.

Could not find a kernel path for virt type 'xen': Debian vs Ubuntu

Пытаюсь в ксене через virt-install сделать машинку с бубунтой.
Урлом указываю: http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/
После стягивания manifest имею:
Could not find a kernel path for virt type 'xen'

Оказалось, в манифесте пути не совпадают с фактическими. Поэтому либвирт не может скачать файлики ксеновые.
Из дебага:
 Fri, 20 Jul 2012 15:12:40 DEBUG    HTTP hasFile: didn't find http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/images/xen/vmlinuz
А всё потому, что на самом деле путь:
http://archive.ubuntu.com/ubuntu/dists/lucid/main/installer-amd64/current/images/xen/vmlinuz

Для сравнения взял дебиан, урл:
http://mirrors.cn99.com/debian/dists/Debian6.0.5/main/installer-amd64/
Всё шикарно поставилось )

ЗЫ
Только после сетапа надо в виртуалке ксен ядро поставить и конфиг машинки поправить (http://www.howtoforge.com/installing-debian-squeeze-6.0-domu-on-centos-5.5-x86_64-dom0)

среда, 18 июля 2012 г.

Диплом!

Вот они, шесть лет жизни:


Красненький, не зря ботал ))
Теперь надо про аспирантуру узнавать.

пятница, 13 июля 2012 г.

Self signed cert and existing key

Как сгенерить самоподписанный сертификат для существующего закрытого ключа:
$ openssl req -new -key mykey.key -out myreq.req -subj '/C=RU/ST=Moscow/L=Moscow/O=AccessD Lab/OU=SA Dept/CN=accessdlab.blogspot.com'
$ openssl req -x509 -key mykey.key -days 1825 -in myreq.req -out mycert.crt

вторник, 19 июня 2012 г.

Апотекарий Ксиан

Ну вот он и готов, имя на свитке написано )



 
Наверно, надо вокруг фонарика сделать отблеск, но пока не умею. Зато удалось сделать правильную линзу, с оранжевым отблеском и бликом, причём с первого захода )


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


среда, 13 июня 2012 г.

Защитился!

Ну вот я и защитился )
На отлично ) Теперь вопрос в цвете корки. У меня всего 7 четвёрок, но фишка в том, что при расчёте корки берут не все оценки, а входящие в диплом. В диплом попадают не все предметы, а часть пятёрок пропадает из-за объединения курсов - например 4 матана (или 5, не помню сколько их там было) дадут всего одну оценку. А вот четвёрки разбросало так, что они не объединятся и не пересчитаются (
Ещё сказали, что у меня рекомендация на аспирантуру.. Вот думаю - надо оно мне или нет...

А ещё, всё таки немножко грустно, что инст кончился. С одной стороны, привык уже к нему, не смотря на весь гемор, а с другой - как будто в жизни прошла какая-то черта на возрастной шкале..

среда, 6 июня 2012 г.

Рамдиск и свободная оператива

Как считается память, отведённая под рамдиск?
Оказалось, что свободное место на рамдиске подсчитывается, как свободная память, а занятое - и как used, и как cached


Зловещий нагиос ))


вторник, 5 июня 2012 г.

Ночь, диплом и мячик

Вот самое офигенное, это когда ты в полчетвёртого ночи отрываешься от диплома чтобы сделать себе кофе и тут краем глаза видишь движение на полу около ног. А это, оказывается, ни с того ни с сего на кухню вкатился мячик из коридора.. Привет, Эдгар! Так, млин, никаких нервов не хватит.

понедельник, 4 июня 2012 г.

Билайны продолжают жечь

Проблема - билайн у себя зачем-то зафильтровал FTP трафик своему клиенту до нас. То ли они опять с чем-то борются, то ли ещё просто нашествие мозговых слизней. Суть в том, что клиент поинтересовался у них насчёт фильтрации. Ответ билайна:

Отвечая на Ваш вопрос, хотим сообщить, что наши файрволлы снабжают сессии портами выше 1024, а указанный Вами хостинг не пускает на свой FTP сервис TCP сессии с source портом выше 1024.
Я вот даже не знаю, что и сказать. Видимо, то существо, что писало этот бред, хотело выразить что-то типа: "Мы д'артаньяны, ничего не фильтруем, а фильтуют нед'артаньяны хостеры, да ещё верхний диапазон исходящих портов".

Ппц, вот что там за люди работают?

суббота, 2 июня 2012 г.

Как сделать вкусную вещь

А именно феттучини с сёмгой и черри.

Нужны:

1. Пачка феттучини, хотя у меня вся пачка не влезает, беру примерно 450 г.
2. Кусок сёмги или форели граммов на 300.
3. Небольшая луковица.
4. Штучек 12-15 черри.
5. Треть стакана вермута.
6. Кусочек сливочного масла
7. Пакетик сливок 200 мл.
8. Сыр пармезал - 150-200 г.
9. Приправы - соль, орегано, чёрный перец. Я юзаю "4 перца"
10. Для сервировки нужно несколько черри и немного лососевой икры.

Есть 2 способа приготовления:
1. По порядку - сначала всё порезать и подготовить и потом только добавлять ингридиенты - занимает примерно час.
2. По-ковбойски - сначала ставить сковроду с кастрюлей и  резать всё походу - занимает около 45 минут.
 
Описываю первый, так как не приходится метаться как ошпаренному.

1. Мелко режем лук, рыбку тонкими полосками см 3-4 длиной, трём сыр, режем черри на 4 части.


2. Растапливаем на сковороде сливочное масло, высыпаем лук. Ставим кастрюлю с водой.




3.Когда лук обжарился - убираем его из сковороды, высыпаем на его место рыбу.

4. Когда рыбка чуток обжарится - выливаем вермут и немножко перчим.


5. Даём пару минут постоять, потом добавляем к рыбе предварительно обжаренный лук и черри, немножко солим помидорки. По идее, вода уже закипела, бросает туда феттучини.


6. Даём немножечко постоять помидоркам, минутки 2. Постоянно мешаем феттучини.


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


8. Сливки прогрелись, добавляем перец и орегано.



9. Ждём пару минут и высыпаем сыр.


10. Ждём, пока растопится сыр, пробуем на готовность феттучини.


11. Феттучини уже готовы или ну почти готовы. Как следует мешаем соус, сливаем воду и выкладываем феттучини в соус.


12. Тщательно перемешиваем и даём постоять подкрышкой минутку-две


13. Наша паста готова ) Подайм феттучини с разрезанным пополам черри и небольшой горкой икры.


четверг, 31 мая 2012 г.

Первый плаг

Плюнул на все дипломные дела, собрал своих интернациональных плагов (сами металлические плаги - тела и руки - из Англии, ранцы из Австралии, подставки отечественные )) ).
Решил сделать базовый покрас одного, с прицелом довести после защиты.
Получилось вот так:





Ура, БЖД подписан!!!!

Ппц, самым гемором в дипломе оказалось не решение проблемы синхронизации капчи пакетов и их забрасывания в мускуль, а проектирование защиты разработчика от поражения эл.током )))
Думал, никогда не сдам эту фигню, но сегодня, наконец, с 4 или 5 раза мне её подписали.
Вот так, диплом по программированию, а дерут больше всего по проектированю света, вентиляции и прочей лабуде, не имеющей отношения к делу.

воскресенье, 27 мая 2012 г.

Апотекарий

Апотекарий почти готов, осталось высветлить грани, написать имя и знак Ультрамаринов нарисовать. Ниже - как я его раскрашивал и он сам)










суббота, 5 мая 2012 г.

di.fm закрыли gabber

Ппц, захожу тут на di.fm послушать радио - не могу найти габберский канал. Нагуглил его - убрали с главной на /gabber.  Тыкаю на ссылочку - влц говорит: давай логипасс.
Полез форум читать, там натыкаюсь на:
 We've retired this channel, it was orphaned over 5 years ago and has had no new content since.
Спасибо, бл2346ть, тебе, di.fm! Нет обновлений пять лет - и хорошо, можно подумать, до 2007 года мало хардкора хорошего...
Хорошо премиум на год не купил.

суббота, 21 апреля 2012 г.

fork vs pthread

Попытка построить ядро моего диплома, включающего сбор ip, tcp и http заголовков с отправкой их в mysql для последующего анализа на базе одного процесса провалилась - инсерт сильно дольше приёма очередного пакета при большом трафике, в БД каша получается.
Попытался делать так - форкать отдельный процесс под отправку данных в БД и передавать ему обработанный пакет через пайп - тот же эффект.
Стал одним процессом собирать запросы в shared memory,  дочерним зеркалировать участок памяти и из зеркала слать. Синхронизацию делал через posix semaphores. Что получил - при большом трафике тот процесс, что загребает трафик, постоянно заходит в свою критическую зону, а отсылающий процесс просто висит в ожидании, отжирая целое ядро.

Уже было отчаился, но решил переписать с тредами - и, о диво! Оно заработало!!!
Механика такая: создаём 2 треда - для сбора трафика и для отправки.
Первый в pcap_loop callout раздирает пакет и формирует VALUE список, добавляя его в своей критической секции в шаренный через анонимный mmap участок.
Второй тред в своей критикал цепляет содержимое вышеуказанного участка в свой буфер и после выхода из критикала спокойно инсертит одним запросом. Сегодня вечером выкатил на продакшн, было около 3 тыс. инсертов в секунду.
Вот сам код, непричёсанный ещё, правда:
 https://github.com/speedcorezombie/pget/blob/master/pget.c

среда, 11 апреля 2012 г.

Настольный Horus Heresy

Не удержался и заказал себе на амазоне настольник Horus Heresy )
Уже приехал в шипито )
Собственно, сама игрулька:


Где-нибудь в начале мая отправлю )

Ещё прикол с аллиедом

Клиент жалуется - на двух железках входящая скорость нормальная, под 50 Мбит/сек, исходящая скорость низкая, около 3х Мбит/сек. На третьей всё ок. Все железки разные, оси - на 2х фряха, на одной винда. Проблемы у виндового и фряшного серваков. Свич - AT8000GS-48 с прошивкой 2.0.0.26.
Смотрю - либо на серверах косяк, либо свич неисправен, ибо шейперов нет.
В конце концов нашли засаду - выключенный negotiation на портах свича. Вырубал в своё время с целью переключения портов принудительно в режим 100f. Врубил негоциэйшн - и пошла скорость )
Скорость до сотни пришлось зарезать rate-limit.

Итого: по-дефолту лучше negotiation оставлять.
Хотя был случай, когда клиент наоборот просил вырубить его.

понедельник, 9 апреля 2012 г.

github

Для удобства синка сделал ключик и секцию в конфига ssh:

Host github.com
        User speedcorezombie
        HostName github.com
        IdentityFile /home/accessd/.ssh/id_rsa

Теперь процесс выглядит так:

git clone http://github.com/speedcorezombie/pget.git
поработали, git add file
git commit -m 'some fixes'
git remote add speed git@github.com:speedcorezombie/pget.git
git push -u speed master

пятница, 6 апреля 2012 г.

Международные посылки

Прикинул тут, у меня уже примерно 23-24 отправки. Из них 18 - шипито, US, 1 - хандтек, UK, остальное штейнар, DE. Ещё было несколько с тинидила - чайна, но там всякая мелочёвка, типа кабелей.

Проблем, по сути было 3:
2 с немецкими посылками, связаны с особенностями работы конкретного почтового отделения.
В первом случае посылка месяц висела в состоянии "Покинула место МО", на почте мне этот месяц говорили, что у них ничего нет, пока я не узнал в отделе претензий валовый номер мешка, ушедшего с сортировки. Когда они сверили с мешком, то заявили, что посылку отправили обратно.
Еле перехватил на Нагатинской.
Второй случай - 3 недели висит в том же "Покинула место МО". Сегодня пошёл на почту - они нашли мою коробку. Оказалось, что таможенники себе все документы оставили и типа как коробка таможню прошла, в отделение прибыла, но без бумажки с печатью. А тётушки не знали, что с ней делать и извещение посылать не стали. Но отдали в руки.
А вот третья проблема - подвисание на 2 недели в состоянии прибытия на сортировку в Лос Анжелес похоже была связана с тем, что в коробке были эпоксидные глины и всякие краски. Видимо, в связи с этим задержали.
После этого зависания посылка оказалась на просторах этой страны и через неск. дней её привезли.

Итого - в среднем, проблемы возникают с каждой 8 посылкой. Это если смотреть в отрыве от способа доставки.

четверг, 5 апреля 2012 г.

билайн и блокировка айпишников

эти болваны из билайна по писульке или звонку неизвестного представителя силовых структур заблокировали адрес сервака, на котором сидит около тысячи акков и 3 тысячи доменов.
При этом никаких абуз нам не писали, просто взяли и заблокировали.
Когда нам хлынул потом обращений от клиентов, стали разбираться - как так?
Что характерно, клиенты сначала звонили провайдеру с жалобой - через вас сайт не работает, через другого прова работает. А билайн им и говорит - "мы никогда не блокировали и не блокируем адреса, звоните хостеру". И это при том, что интернеты завалены постами "билайн блокирует ip адрес".
На второй день телефонных разговоров с этими недоумками выяснилось наконец, что проблема не в аварии, про которую они нам весь прошлый день твердили, а да, по предписанию от ментов заблокирован адрес, потому что на нем домен, который этому менту не понравился.
Убирать блокировку, равно как и сообщать домен, из-за которого адрес заблокирован, они не хотят. Что за предписание - тоже не говорят.
При этом клиентам они продолжают говорить, что проблема у хостера, т.к. билайн белый и пушистый никогда блять ничего не блокирует.
Придётся менять для всех клиентов айпишник и вдобавок каждому доказывать, что билайн им наврал.

Что характерно - это единственный такой больной на голову пров. Больше таких выкрутасов ну у кого не видел.

И да, кстати, в прошлом году они уже такое делали с другим сервером. Благо, на нём было несколько человек всего.

вот, кстати, пара статей на тему:
http://tsapel-man.livejournal.com/15146.html
http://vorugamnet.livejournal.com/635.html

среда, 28 марта 2012 г.

Allied telesis AT-8000GS/48 работает как хаб

Итак, есть свежекупленные AT-8000GS/48 с прошивкой 2.0.0.22.

С ними приколы:
1. Не лёрнятся маки. Вернее, некоторые лёрнятся, но единицы из сотен. Установить чёткую зависимость не удалось.
2. Перестают подниматься порты. Т.е. физически линк есть, ethtool показывает, что всё ок. Сам свич видит, что физический линк есть, но по статусу порт в дауне и не апается.
3. Были приколы с тем, что не форвардились кадры в пределах отдельно взятого влана, пока тэг не сменили.

Прошили на 2.0.0.26, любезно предоставленную коллегами из Allied Telesis (свободную скачку зареганным юзерам запретили), и как минимум первая проблема исчезла. 2 и 3 пока не проявились.

В общем, надо прошиваться на 2.0.0.26, если свич не лёрнит, как надо )

суббота, 24 марта 2012 г.

Новая площадка

Осваиваем новый ЦОД:











понедельник, 19 марта 2012 г.

libpcap, продолжение

Дополнил хэлло экстракцией http пакета, теперь вывод выглядит так:
Packet captured
IP header lengh:  20
Packet size:  60
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      52987
Destination port: 80
Flags:            SYN


Packet captured
IP header lengh:  20
Packet size:  60
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 52987
Flags:            SYN ACK


Packet captured
IP header lengh:  20
Packet size:  52
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      52987
Destination port: 80
Flags:            ACK


Packet captured
IP header lengh:  20
Packet size:  372
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      52987
Destination port: 80
Flags:            ACK
GET / HTTP/1.1
Host: speedcorezombie.net
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive



Packet captured
IP header lengh:  20
Packet size:  52
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 52987
Flags:            ACK


Packet captured
IP header lengh:  20
Packet size:  323
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 52987
Flags:            ACK
HTTP/1.1 200 OK
Date: Mon, 19 Mar 2012 19:26:14 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Sun, 18 Mar 2012 20:52:54 GMT
ETag: "6e653-6-4bb8aa02c9580"
Accept-Ranges: bytes
Content-Length: 6
Connection: close
Content-Type: text/html; charset=UTF-8

hello


Packet captured
IP header lengh:  20
Packet size:  52
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      52987
Destination port: 80
Flags:            ACK


Packet captured
IP header lengh:  20
Packet size:  52
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      52987
Destination port: 80
Flags:            ACK FYN


Packet captured
IP header lengh:  20
Packet size:  52
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 52987
Flags:            ACK FYN


Packet captured
IP header lengh:  20
Packet size:  52
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      52987
Destination port: 80
Flags:            ACK


Packet captured
IP header lengh:  20
Packet size:  52
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 52987
Flags:            ACK
Теперь осталось решить, какие поля http заголовка заграббить в базу )

libpcap hello

Надо граббить ip,tcp и http хэдеры для последующего анализа. Пока вот для теста наваял этакий хелловорлд:

#include <pcap/pcap.h>
#include <linux/ip.h>
#include <linux/tcp.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>

int main() {

        char* device;                    // Sniffing device
        char errbuf[PCAP_ERRBUF_SIZE];   // Error message buffer
        pcap_t* handle;                  // Session handle
        struct bpf_program fp;           // The compiled filter expression
        char filter_exp[] = "port 80";   // The filter expression
        bpf_u_int32 mask;                // The netmask of our sniffing device
        bpf_u_int32 net;                 // The IP of our sniffing device
        struct pcap_pkthdr header;       // The header that pcap gives us
        const u_char* packet;            // The actual packet
        struct iphdr* ipheader = NULL;   // Pointer to the IP header
        struct tcphdr* tcpheader = NULL; // Pointer to the TCP header
        device = NULL;
        memset(errbuf, 0, PCAP_ERRBUF_SIZE);
        int count;

        device = pcap_lookupdev(errbuf);
        printf("Device: %s\n", device);
        printf("filter: %s\n", filter_exp);
        if (pcap_lookupnet(device, &net, &mask, errbuf) == -1) {
                fprintf(stderr, "Can't get netmask for device %s\n", device);
                net = 0;
                mask = 0;
        }

        handle = pcap_open_live(device, 2048, 0, 512, errbuf);

        if (pcap_compile(handle, &fp, filter_exp, 0, net) == -1) {
                fprintf(stderr, "Couldn't parse filter %s: %s\n", filter_exp, pcap_geterr(handle));
                exit(1);
        }

        if (pcap_setfilter(handle, &fp) == -1) {
                fprintf(stderr, "Couldn't install filter %s: %s\n", filter_exp, pcap_geterr(handle));
                exit(1);
        }
        count = 100;
        while (count) {
                // Try to get packet. If capture fail - try next.
                if ( (packet = pcap_next(handle, &header)) == NULL) {
                        fprintf(stderr, "ERROR: Error getting the packet\n", errbuf);
                        continue;
                } else
                        fprintf(stderr, "Packet captured\n");

                // Extract IP header
                ipheader = (struct iphdr *)(packet + 14);
                printf("IP header lengh:  %d\n", ipheader->ihl);
                printf("Source IP:        %s\n", inet_ntoa( *(struct in_addr *) &ipheader->saddr));
                printf("Destination IP:   %s\n", inet_ntoa( *(struct in_addr *) &ipheader->daddr));
                // Extract TCP header
                tcpheader = (struct tcphdr *)(packet + 14 + ipheader->ihl * 4);
                printf("Source port:      %d\n", ntohs(tcpheader->source));
                printf("Destination port: %d\n", ntohs(tcpheader->dest));
                printf("Flags:            ");
                if (tcpheader->syn)
                        printf("SYN ");
                if (tcpheader->ack)
                        printf("ACK ");
                if (tcpheader->fin)
                        printf("FYN ");
                printf("\n");
                printf("\n");

        }
        pcap_close(handle);
        return 0;
}

Вывод такой (запрос простой html странички):
# ./pcap
Device: wlan0
filter: port 80
ERROR: Error getting the packet
ERROR: Error getting the packet
ERROR: Error getting the packet
ERROR: Error getting the packet
ERROR: Error getting the packet
Packet captured
IP header lengh:  5
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      53375
Destination port: 80
Flags:            SYN

Packet captured
IP header lengh:  5
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 53375
Flags:            SYN ACK

Packet captured
IP header lengh:  5
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      53375
Destination port: 80
Flags:            ACK

Packet captured
IP header lengh:  5
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      53375
Destination port: 80
Flags:            ACK

Packet captured
IP header lengh:  5
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 53375
Flags:            ACK

Packet captured
IP header lengh:  5
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 53375
Flags:            ACK

Packet captured
IP header lengh:  5
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      53375
Destination port: 80
Flags:            ACK

Packet captured
IP header lengh:  5
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 53375
Flags:            ACK FYN

Packet captured
IP header lengh:  5
Source IP:        192.168.10.108
Destination IP:   178.21.10.7
Source port:      53375
Destination port: 80
Flags:            ACK FYN

Packet captured
IP header lengh:  5
Source IP:        178.21.10.7
Destination IP:   192.168.10.108
Source port:      80
Destination port: 53375
Flags:            ACK

ERROR: Error getting the packet

понедельник, 12 марта 2012 г.

Госы сданы

Пришли в инст, у нас отобрали зачётки и отвели куда-то на нижние этажи, где усадили за работу. Через 2 часа стали сдавать. В итоге почти всем дали по пять, но зачётки не отдали )

суббота, 10 марта 2012 г.

Как заставить работать 6pm.com

1. Купить за 4.5$ в месяц впс в BurstNET. Я там на какую-то срочную акцию попал, поэтому мну скинули доллар. Взял в Лос Анжелесе.
2. Вкатить openvpn. Не забыть врубить tun. Настроить можно, например, как тут:
http://wolandblog.com/1103-ustanovka-i-nastrojka-openvpn-na-centos-5-3

Мой хистори:
   17  wget http://mirror.optus.net/epel/5Server/x86_64/epel-release-5-4.noarch.rpm
   18  yum localinstall epel-release-5-4.noarch.rpm --nogpgcheck
   19  yum install openvpn
   20  touch /etc/openvpn/openvpn.conf
   21  mkdir /etc/openvpn/ccd
   22  mkdir /etc/openvpn/keys
   26  mkdir /etc/openvpn/easy-rsa
   36  cp -r /usr/share/openvpn/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
   38  cd /etc/openvpn/easy-rsa/
   39  chmod +x clean-all
   40  chmod +x build*
   41  vi /etc/openvpn/easy-rsa/vars
   42  cd /etc/openvpn/easy-rsa
   48  source ./vars
   49  ./clean-all
   50  ./build-ca
   51  ./build-key-server vpnserver
   52  cp /etc/openvpn/easy-rsa/keys/ca.crt /etc/openvpn/keys/ca.crt
   53  cp /etc/openvpn/easy-rsa/keys/vpnserver.crt /etc/openvpn/keys/vpnserver.crt
   54  cp /etc/openvpn/easy-rsa/keys/vpnserver.key /etc/openvpn/keys/vpnserver.key
   56  ./build-dh
   57  cp /etc/openvpn/easy-rsa/keys/dh1024.pem /etc/openvpn/keys/dh1024.pem
   58  vi /etc/openvpn/openvpn.conf
   59  echo "ifconfig-push 172.16.0.101 172.16.0.102" > /etc/openvpn/ccd/accessd
   61  ./build-key accessd
   68  cd /etc/openvpn/easy-rsa/keys/
   69  tar czf accessd.tgz accessd.key accessd.crt ca.crt

3. Настроить NAT:
sysctl net.ipv4.ip_forward=1
/sbin/iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
/sbin/iptables -A FORWARD -i venet0 -o tun0 -m state/sbin/iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT
 4. Настроить клиента и можно пулять трафик в заппосовскую сеть через наш впс в ЛА.

Альтернатива - халявный инстанс в амазоне. Но на мои 2 акка халява не положена, а ещё один делать впадлу.

вторник, 21 февраля 2012 г.

IPMI на Etegro

IPMI, стоящий на этегровских железках, требует оракловую жаву!
Я вот, блин, год назад настул на эти грабли и благополучно забыл.
А вот записывать надо, чтобы не забывать!

MySQL, падающий каждые 10 сек

Сабж. Неск. битриксовых баз + плесковая. Более менее юзается одна.
Делаешь tail -f лога - там регулярно валится:

120221  9:54:20 - mysqld got signal 11 ;
This could be because you hit a bug. It is also possible that this binary
or one of the libraries it was linked against is corrupt, improperly built,
or misconfigured. This error can also be caused by malfunctioning hardware.
We will try our best to scrape up some info that will hopefully help diagnose
the problem, but since we have already crashed, something is definitely wrong
and this may fail.
......
......
It is possible that mysqld could use up to
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_connections = 81536 K
bytes of memory
Hope that's ok; if not, decrease some variables in the equation.

thd=0x5a0a570
Attempting backtrace. You can use the following information to find out
where mysqld died. If you see no messages after this, something went
terribly wrong...
Cannot determine thread, fp=0x40d53fb0, backtrace may not be correct.
Stack range sanity check OK, backtrace follows:
(nil)
New value of fp=0x5a0a570 failed sanity check, terminating stack trace!
Please read http://dev.mysql.com/doc/mysql/en/using-stack-trace.html and follow instructions on how to resolve the stack trace. Resolved
stack trace is much more helpful in diagnosing the problem, so please do
resolve it
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort...

thd->query at 0x5a48970 = INSERT INTO b_stat_searcher_hit(DATE_HIT, SEARCHER_ID, URL, URL_404, IP, USER_AGENT, HIT_KEEP_DAYS, SITE_ID) VALUES (now(), 2, 'http://www.xxx.ru:80/forum/index.php?print=Y&PAGE_NAME=profile_view&UID=1690', 'N', '66.249.66.68', 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)', null, 's1')
thd->thread_id=2
The manual page at http://dev.mysql.com/doc/mysql/en/crashing.html contains
information that should help you find out what is causing the crash.
Посмотрел - в базе половина таблиц в myisam, половина в innodb. По-дефолту почему-то стоит myisam. Поменял дефолный тип хранилища на иннодб, заальтерил в таблицах движок на иннодб.
Посмотрел по логу - везде фигурирует b_stat_searcher_hit.
Прогнал mysqlcheck - табла рефералов  битая.
В общем, дропнул обе и создал заново, запретив юзерам апдейты при помощи innodb_force_recovery=2.

База падать перестала.

ЗЫ
Собственно, к чему клоню - проблема вызывалась двумя закосяченными весьма второстепенными табличками, но мускуль своим варнингом:
"It is also possible that this binary or one of the libraries it was linked against is corrupt, improperly built, or misconfigured. This error can also be caused by malfunctioning hardware."
морально настраивал на проблемы иного характера. Вспомнилась расшифровка одного из блюскриновых варнингов лет 5 назад.
Общий смысл того кода был - проблема связана либо с операционной системой, либо памятью, либо с процом, либо с дисками, либо с чипсетом, либо ещё какие-то хардварные проблемы.

Почта США тоже косячит

Уехала 1 февраля моя посылка из шипито. 2 числа попала на сортировку usps в ЭлЭй сити, и ппц, как в воду канула.. Это при том, что обычто коробки проходили через Лос-Анжелес максимум 2 дня и улетали к нам. До России, к слову, все добирались от 4 до 9 дней.
К 18 февраля я потерял всякую надежду на то, что всё само собой разрулится, написал в шипито. Сергей С. (кто с шипито работает, знает, о ком я) по-русски ответил, что надо ждать 30 дня с отправки и писать на розыск.
Я подумал, что посылку просто завернули из-за того, что в декларации были слова "epoxy" и "paint". "Paint" много всяких, но не в баллонах.
Обидно, короче, стало - и коробка весьма недешёвая, и в России этого хозяйства, типа "magic sculpey", нет. А если кто и привозит - разлетается в момент.
И тут внезапно коробочка затрекалась у нас на импорте.
Т.е. посылка шла ~ 18 дней, а у USPS есть нормативы по доставке экспрессов. + факт эксорта не протрекался.
Так что, не только наши косячат )
У коллеги в декабре коробка перед отправкой изъездила всю Калифорнию аж 3 раза )

Ладно, главное, чтобы теперь наши не 18 дней везли, а побыстрее )

суббота, 11 февраля 2012 г.

Про блоги

Уже не раз ловлю себя на том, что мне сложно найти что-то из старых постов. Забыл где-то тэг поставить и всё..
В общем, идея в тематическом разделении блога на несколько частей. Линуксы, фряхи, жуниперы и прочее вынести в технический блог, а ваху с красками, терминаторами и Альфа легионами - в вхшный. Остальное тут оставить.
Тогда будет легче что-то найти. Но разгребать пока некогда.

А ещё шаблон пора сменить, этот поднадоел уже.

EXT3-fs error: unlinked inode

Стало время от времени появляться:
Feb  7 00:03:03 xxx kernel: EXT3-fs error (device sda8): ext3_lookup: unlinked inode 11848061 in dir #17097522
Feb  7 00:03:03 xxx kernel: Aborting journal on device sda8.
Feb  7 00:03:03 xxx kernel: EXT3-fs error (device sda8): ext3_lookup: unlinked inode 11848060 in dir #17097522
Feb  7 00:03:03 xxx last message repeated 3 times
Feb  7 00:03:03 xxx kernel: ext3_abort called.
Feb  7 00:03:03 xxx kernel: EXT3-fs error (device sda8): ext3_journal_start_sb: Detected aborted journal
Feb  7 00:03:03 xxx kernel: Remounting filesystem read-only
Спустя некот.время - от неск.мин до часа - сервак вис, выкидывая:

Feb  7 00:25:54 xxx kernel: Pid: 27096, comm: repquota Not tainted 2.6.18-194.17.4.el5 #1
Feb  7 00:25:54 xxx kernel: RIP: 0010:[<ffffffff88055c3d>]  [<ffffffff88055c3d>] :ext3:ext3_journal_start_
sb+0x0/0x46
Айноды всё время одни и те же.
Нашёл баг: https://bugzilla.redhat.com/show_bug.cgi?id=494927

Собственно, предложенное решение - пересборка журнала:
umount /dev/sda8
tune2fs -O ^has_journal /dev/sda8
e2fsck -fy -C 0 /dev/sda8
tune2fs -j /dev/sda8
mount /dev/sda8
помогло.

понедельник, 6 февраля 2012 г.

Харденинг

Надо пробовать чуток укрепить хостинги...

1. Сетевой стек. Посмотрим, что будет, если сделать:
net.ipv4.tcp_max_syn_backlog=2048
net.ipv4.tcp_synack_retries=3
net.ipv4.tcp_fin_timeout=20
По идее, сможем больше синов держать, быстрее закрывать те, что так и не открыты до конца и быстрее прибивать закрываемые.

2. limit_conn с $binary_remote_addr для всех виртуал хостов. Штучек 16 должно хватить.
Так же можно попробовать ставить rate с айпишника, но может вызвать эээ.. огорчение у некот. клиентов. Ещё наверно имеет смысл разграничить по числу коннектов на один виртуал хост вообще, но тоже может вызвать неадекватную реакцию.

Что бы ещё сделать?

chkconfig и systemctl

Заметил, что в новой Федоре стопать/стартовать, включать/выключать сервисы стало несколько иначе, чем раньше:

Вместо:
service sshd start
теперь принято:
systemctl start sshd.service

Вместо:
chkconfig sshd on
надо делать:
systemctl enable sshd.service

Хотя пока и то, и другое работает, хотя при команде chkconfig дергается соотв. systemctl

Собственно, тут небольшая памятка по systemd:
http://fedoraproject.org/wiki/SysVinit_to_Systemd_Cheatsheet

среда, 1 февраля 2012 г.

EX4200: JunOS upgrade

Надо обновить ось на juniper ex4200. Стоит совсем старая 10.0, надо вкатить свежую 11.4Предположим, что мы его сбросили to factory:
На панелке свича находим в меню раздел обслуживания, там нашли фактори и подтвердили сброс.
Потом выставили дату и рутовый пароль (в cli):

set date 201202011053
set system root-authentication plain-text-password

Зацепились миникомом, настройка:
Serial Device      : /dev/ttyS0
Lockfile Location     : /var/lock
Callin Program      :
Callout Program      :
Bps/Par/Bits       : 9600 8N1
Hardware Flow Control : No
Software Flow Control : No

Качаем инсталлер отсюда:
http://www.juniper.net/support/products/junos/dom/11.4/#sw
а именно вот это:
https://download.juniper.net/software/junos/11.4R1.6/jinstall-ex-4200-11.4R1.6-domestic-signed.tgz
и лодер:
https://download.juniper.net/software/junos/specials/jloader/jloader-ex-3242-11.3I20110326_0802_hmerge-signed.tgz

Сначала накатывается новый загрузчик, зачем это надо - описано тут:
http://www.juniper.net/alerts/viewalert.jsp?actionBtn=Search&txtAlertNumber=PSN-2011-03-201&viewMode=view
потом ребут и накатывается сам инсталлер.

зашли, настроили один порт - чтобы скачать всё.
я всё хозяйство к себе качал, по scp заливаю на свич. Заливать надо именно в /var/tmp, иначе при установке придётся соснуть хцов из-за нехватки места.

cd /var/tmp scp xxx@192.168.48.33:~/Downloads/jloader-ex-3242-11.3I20110326_0802_hmerge-signed.tgz .
scp xxx@192.168.48.33:~/Downloads/jinstall-ex-4200-11.4R1.6-domestic-signed.tgz .

ставим загрузчик:
cli
request system software add jloader-ex-3242-11.3I20110326_0802_hmerge-signed.tgz
request system reboot

Если установка зафейлилась - гуглим. Скорее всего либо дата кривая, либо джунос саааавсем старый.

Теперь инсталлер:
cd /var/tmp
cli
request system software add jinstall-ex-4200-11.4R1.6-domestic-signed.tgz
request system reboot

При загрузке видим:
Copyright (c) 1996-2011, Juniper Networks, Inc.
All rights reserved.
Copyright (c) 1992-2006 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
JUNOS 11.4R1.6 #0: 2011-11-15 10:57:04 UTC

вторник, 31 января 2012 г.

Последняя сессия сдана

Сабж, собственно )
Результат сессии - 1x 4 и 4x 5.
Всего, если не ошибаюсь, 7x 4 и всё остальное 5.

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

понедельник, 30 января 2012 г.

Каких админов ищут

Попались на глаза объявы забавные.
Одна контора ищет администратора "IT серверов", а другая (причём очень крупная и известная, газировку делает), ищет линуксового админа, который разбирается в "БД PROGRESSSQL" ))
Интересно посмотреть, как в этих конторах проходят собеседования ))

Аццкий БЖД

Рановато, наверно, делать выводы, т.к. ещё не все экзамены сданы, но на данный момент самым жёстким оказался БЖД, это за почти 5.5 лет.
Сдал только со второго раза - у препода интересная система оценки. Мне хотел поставить пару токо за то, что посчитал - раз я написал длинную формулу, то значит списал и можно не заморачиваться с оценкой )) Пришлось непосредственно на его глазах всё переписывать и отвечать ) В итоге поставил 4. Я ещё никогда так рад 4 не был )))

Вообще, это не первый раз, когда по непрофильному предмету спрос гораздо круче чем со "своих", но этот раз всех переплюнул. Теперь мне этим товарищам надо будет кусок диплома сдавать... Но его ещё написать надо )

А вот завтра предстоит, к слову, сдавать Человеко-машинное взаимодействие (не имеет отношения к sexmashines.com), на котором придётся рассказывать про разбившиеся самолёты, утонувшие титаники и коста-что-то-там, а так же про то, что программисты ничего не понимают в интерфейсах. Ибо "так записано" в книжке некоего Купера.
Но надо поднапрячься, прочитать за ночь томик этого товарища и завтра сдать.

И это записано.

воскресенье, 29 января 2012 г.

Fedora 16 & ATI driver: X crash

Конфиг:
Федора 16, x86_64, родные атишные дрова.

Проблема:
Про проигрывании видео в любом плеере (кроме флеша) иксы падают.

Решения:
1. Сунуть в xorg.conf:

Section "Extensions"
        Option "XVideo" "Disable"
EndSection
2. Сменить архитектуру на i686.

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

Второе решение оказалось эффективнее. Хотя не удалось на живую пакеты поменять. В итоге на запасной корень засетапил новую федору и хомяк отсинкал.

Обсуждения бага:

http://ati.cchtml.com/show_bug.cgi?id=337
https://bugs.gentoo.org/391193

среда, 25 января 2012 г.

arcconf CREATE

Создать на адаптеке рэйд 1 через arcconf, диски в 3 и 4 корзинах:
# ./arcconf CREATE 1 LOGICALDRIVE Name raid1_0 MAX 1 0 2 0 3