Активация сервера терминалов в Windows Server 2003

December 26th, 2009

Если вдруг возникнет необходимость активировать сервер терминалов в Windows Server 2003 то вот здесь отличная статья на эту тему

Ставим простой и легкий прокси – privoxy

December 25th, 2009

Иногда бывает нужно посмотреть выдачу для другой страны или еще что-нибудь для чего удобно было бы использовать прокси на своем сервере/впс. Сквид – большой и тяжелый, поэтому разумно будет поставить privoxy. Он есть и в репозиториях для RHEL/CentOS и в портах FreeBSD. Бонусом privoxy является то, что он фильтрует всякую рекламу и подозрительные скрипты. Ставим:

yum install privoxy

В конфиге /etc/privoxy/config пишем строчку

permit-access [свой внешний ип]
listen-address  [внешний ип сервера]:8118

И далее:

chkconfig privoxy on
/etc/init.d/privoxy start

Все, можно подключаться.

Настройка штатного PPTP VPN на Windows Server 2003

December 15th, 2009

Иногда приходится заниматься и таким =)
1. Останавливаем и дизаблим службу Windows Firewall/Internet Connection Sharing (ICS)
2. Включаем Routing and Remote Access в режиме Custom -> VPN.
3. В свойствах “Routing and Remote Access” на вкладке IP добавляем диапазон адресов, которые будут выдаваться клиентам. Надо чтобы они не пересекались ни с какими другими диапазонами в клиентской сети.
4. Создаем специального пользователя и ставим ему в “Dial-in” -> “Allow access”.
5. Все.

Нюансы по Wordpress

December 14th, 2009

Проблемы с кодировками может помочь решить в wp-config.php

define('DB_CHARSET', 'utf8');

Часто автоматическое обновление плагинов глючит и тогда имеет смысл переключить его с обновления через фтп на локальное. После этого надо проверить права для веб-сервера на папки plugins, wp-content

define('FS_METHOD', 'direct');

Так же будет иметь смысл поставить такие права.

define('FS_CHMOD_FILE',0777);
define('FS_CHMOD_DIR',0777);

Иногда бывает, что Wordpress не подхватывает прописанные ему временные директории через конфиг апача

php_admin_value open_basedir /home/domain.com
php_admin_value upload_tmp_dir /home/domain.com/wp-tmp
php_admin_value session.save_path /home/domain.com/wp-tmp

И временные файлы все равно пытается закачать в /var/tmp
тогда надо:

define('WP_TEMP_DIR', ini_get('upload_tmp_dir'));

Для увеличения лимита используемой памяти:

define('WP_MEMORY_LIMIT', '96M');

Всякие другие полезные переменные для wordpress

Настройка SSL в nginx

December 9th, 2009

В nginx настроить SSL для домена еще проще чем в Апаче. Для начала генерим закрытый ключ, запрос на сертификат и подписываем его как указано в статье настройка SSL на Apache

Теперь конфиг:

server {
        listen 1.2.3.1:443;
        keepalive_timeout    70;

        server_name .domain.com;

        ssl                  on;
        ssl_protocols        SSLv3 TLSv1;
        ssl_ciphers          AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
        ssl_certificate      /etc/nginx/vhosts/www.domain.crt;
        ssl_certificate_key  /etc/nginx/vhosts/www.domain.key;
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  20m;

        location ~* \.(JPG|jpg|jpeg|gif|png|ico|zip|doc|gz|rar|bz2|swf|avi|mpg|vmw|wmv|mpeg|mkv|js)$ {
            root /usr/local/www/domain.com;
            expires max;
        }

        location / {
            proxy_pass         http://127.0.0.1:80/;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For $remote_addr;
        }
    }

Нюансы такие:
Файл с закрытым ключем придется делать без пароля. Если он у вас с паролем, то снять пароль можно так:

openssl rsa -in key.pem -out keyout.pem

Ну и если вы делаете нормальные подписанные авторитетными CA сертификаты уникальные для каждого домена, то не забыть вешать каждый домен на отдельный ип.
На апаче в такой конфигурации вообще ничего изменять не нужно и до апача доходит уже расшифрованный трафик.

Добавить non-free репозиторий в Debian

December 7th, 2009

в /etc/apt/sources.list должно быть:

deb ftp://ftp.debian.org/debian/ stable main contrib non-free

потом:

apt-get update

Бэкап, восстановление, клонирование OpenVZ контейнеров

December 3rd, 2009

Ставим тулзы:

yum install cstream perl-LockFile-Simple
rpm -Uvh http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump-1.2-4.noarch.rpm

Собственно дампим существующий контейнер в архив (по дефолту в /vz/dump/), восстанавливаем в новый ID (120), меняем у него хостнейм и IP и запускаем:

vzdump --compress --suspend 110
vzdump --restore /vz/dump/vzdump-110.tgz 120
vzctl set 120 --hostname newhostname.com --save
vzctl set 120 --ipdel 1.2.3.1 --save
vzctl set 120 --ipadd 1.2.3.2--save
vzctl start 120

У новых версий vzdump уже может не быть параметра restore – он заменен на утилиту

vzrestore /vz/dump/vzdump-110.tgz 120

Этот же механизм удобно использовать и для резервного копирования контейнеров OpenVZ.

Хороший репозиторий для CentOS

November 20th, 2009

Нашел хороший дополнительный репозиторий серверного софта для CentOS.
Ставить так:
Для i386:
1. Устанавливаем epel репозиторий.

rpm -ihv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

2. Устанавливаем CentALT репозиторий.

rpm -ihv http://centos.alt.ru/repository/centos/5/i386/centalt-release-5-3.noarch.rpm

Для x86_64:
1. Устанавливаем epel репозиторий.

rpm -ihv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm

2. Устанавливаем CentALT репозиторий.

rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

Полный список пакетов

Установка mod_geoip на Linux/FreeBSD сервер с DirectAdmin

October 17th, 2009

В случае c Linux:

yum install GeoIP GeoIP-devel
cd /root
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
tar zxvf mod_geoip2_1.2.5.tar.gz
cd mod_geoip2_1.2.5
apxs -i -a -L/usr/lib -I/usr/include -lGeoIP -c mod_geoip.c

В /etc/httpd/conf/httpd.conf добавляем:

LoadModule geoip_module /usr/lib/apache/mod_geoip.so
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
/etc/init.d/httpd restart

В случае с FreeBSD:

cd /usr/ports/net/GeoIP && make install
cd /root
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz
tar zxvf mod_geoip2_1.2.5.tar.gz
cd mod_geoip2_1.2.5
apxs -i -a -L/usr/local/lib -I/usr/local/include -lGeoIP -c mod_geoip.c

Добавление в конфиг апача аналогично.

Увеличение conntrack таблицы в Linux

October 16th, 2009

Иногда, при повышенной сетевой нагрузке из-за большого количества соединений происходит превышение лимита на conntrack соединения. При этом в системном логе появляются сообщения:

Oct 16 21:40:24 my-host kernel: ip_conntrack: table full, dropping packet.
Oct 16 21:40:29 my-host kernel: printk: 817 messages suppressed.

Посмотрим какое ограничение у нас прописано сейчас:

sysctl -a|grep net.ipv4.netfilter.ip_conntrack_max

И сколько физически используется сейчас:

sysctl -a|grep net.ipv4.netfilter.ip_conntrack_count

Решением этой проблемы является увеличение данного лимита:

sysctl net.ipv4.netfilter.ip_conntrack_max=631072

Не лишне данный параметр записать в sysctl.conf

Наблюдение за действиями на другом терминале

October 16th, 2009

Иногда бывает необходимо посмотреть что делает в терминале другой пользователь системы. Во FreeBSD для этого есть встроенные средства:

# w
9:16PM up 55 days, 5 mins, 2 users, load averages: 0.07, 0.06, 0.00
USER TTY FROM LOGIN@ IDLE WHAT
user1 p0 test1.ru 9:06PM - w
user2 p1 test2.ru 9:16PM - -bash (bash)

Теперь подключаемся к сеансу:

watch p1

Добавление IP-алиасов в Debian

October 12th, 2009

/etc/network/interafces:

auto lo
iface lo inet loopback

allow-hotplug eth0
auto eth0
iface eth0 inet static
        address 1.2.3.2
        netmask 255.255.255.0
        network 1.2.3.0
        broadcast 1.2.3.255
        gateway 1.2.3.1
        dns-nameservers 208.67.222.222

auto eth0:0
iface eth0:0 inet static
        address 1.2.3.3
        netmask 255.255.255.0
        broadcast 1.2.3.255

auto eth0:1
iface eth0:1 inet static
        address 1.2.3.4
        netmask 255.255.255.0
        broadcast 1.2.3.255

Рестартим сеть:

/etc/init.d/networking restart

Даунгрейд порта во FreeBSD

October 12th, 2009

Иногда возникает необходимость откатить приложение установленное через порты на более раннюю версию. Сначала откатим данные в нашей базе портов на нужную версию. К примеру будем откатывать php:

cd /usr/ports/ports-mgmt/portdowngrade && make install clean
/usr/local/sbin/portdowngrade -s "anoncvs@anoncvs.tw.FreeBSD.org:/home/ncvs" lang/php5
Выбираем 1, выбираем номер версии на которую нужно откатиться, пишем yes

Теперь мы получили нужную версию в дереве портов. Теперь, чтобы переустановить приложение в систему:

portupgrade -f php5

Если надо даунгрейдить другие приложения, то шаги нужно повторить.

Установка memcached на CentOS 5

September 25th, 2009
yum --enablerepo=remi install memcached

Конфиг (/etc/sysconfig/memcached):

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1"

Запуск:

chkconfig memcached on
/etc/init.d/memcached start

Если надо еще PHP расширение к нему:

yum --enablerepo=remi install php-pecl-memcache
или для PHP 5.2.10
rpm -ihv http://rpms.famillecollet.com/enterprise/5/olds/x86_64/php-pecl-memcache-3.0.4-1.el5.remi.x86_64.rpm
/etc/init.d/httpd reload

Кратко о использовании iperf для тестирования скорости соединения

September 23rd, 2009

Ставим iperf из портов или из yum-a.
Запускаем сервер:

iperf -s -i2 # tcp-сервер с выводом стастистики каждые 2 сек.
iperf -s -u -w1400 #udp-сервер, с размером окна 1400 байт

Запускаем клиента:

iperf -c server_host -u -t 60 # подключение по udp к server_host и тестирование в течение 60сек
iperf -n 10m -p 65005 -c server_host # Послать 10 мегабайт, на порт 65005

Пересылка всей исходящей почты через smarthost в Linux (CentOS)

September 17th, 2009

В /etc/mail/sendmail.mc добавляем:

define(`SMART_HOST', `mail.domain.com')

Ставим пакет для sendmail и апдейтим конфигурацию:

yum install sendmail-cf
make -C /etc/mail
/etc/init.d/sendmail restart

Установка Bind (named) на CentOS

September 14th, 2009

В этой заметке рассмотрим установку bind на CentOS в chroot и синхронизацию (в том числе создание/удаление зон на первом и втором ДНС-сервере).
Ставим

yum install bind-chroot

Создаем файл /var/named/chroot/etc/named.conf

options {
        listen-on port 53 { 1.2.3.1; };
        directory       "/var/named";
        allow-query     { any; };
        recursion no;
        allow-transfer { none; };
        version "no version info";
};

include "/var/named/zone.conf";

Создаем файл /var/named/chroot/var/named/zone.conf

zone "domain1.com" IN {
        type master;
        file "domain1.com.conf";
        allow-update { none; };
};

zone "domain2.com" IN {
        type master;
        file "domain2.com.conf";
        allow-update { none; };
};

Ну и файлы зон, например, /var/named/chroot/var/named/domain.com.conf

$TTL 3600
domain.com.    IN    SOA    ns1.dnsdomain.com.    root.domain.com.    (
20010610    ; Serial
10800        ; Refresh
3600        ; Retry
604800        ; Expire
86400    )    ; Minimum TTL

@        IN    NS    ns1.dnsdomain.com.
@        IN    NS    ns2.dnsdomain.com.
@        IN    A  1.2.3.1
www      IN    CNAME  @
@        IN    MX 10  mail.domain.com.
mail     IN    A   1.2.3.1

На втором сервере делаем все точно так же.
Теперь про синхронизацию зон.

На первом сервере:

cd /root/.ssh
ssh-keygen -b 1024 -t dsa

На втором сервере:

/usr/sbin/useradd -s /bin/bash srv-dns-acct
cd /home/srv-dns-acct/
mkdir .ssh
В файл .ssh/authorized_keys копируем id_dsa.pub с первого сервера
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
chown -R srv-dns-acct /var/named/chroot/var/named
chmod +x /var/named/
chmod +x/var/named/chroot/
chmod +x /var/named/chroot/var/

На первом сервере создаем файл /var/named/dnssync.sh:

#!/bin/sh
cd /var/named/chroot/var/named/
tar czvf - *.conf | ssh srv-dns-acct@ns2.domain.com tar xzf - -C /var/named/chroot/var/named/

Установка nginx с PHP как FastCGI на Debian Linux

September 9th, 2009

Отличная статья по этой теме здесь

Справка по aptitude в Linux Debian

September 9th, 2009

Преимущество aptitude над apt состоит в том, что она лучше справляется с обработкой зависимостей и рекомендуется разработчиками Debian в качестве основного средства для управления пакетами.
Если вы раньше пользовались утилитами apt, то можете просто начать пользоваться aptitude, в большинстве случаев это не вызовет никаких проблем.
Справка по ключам:
install – Установить/обновить пакеты
remove – Удалить пакеты
purge – Удалить пакеты и их файлы конфигурации
hold – Зафиксировать пакеты
unhold – Отменить команду hold для пакета
markauto – Пометить пакет, что он был установлен автоматически
unmarkauto – Пометить пакет, что он был установлен вручную
forbid-version – Запретить aptitude обновлять определённую версию пакета.
update – Загрузить список новых/обновлённых пакетов
safe-upgrade – Perform a safe upgrade
full-upgrade – Perform an upgrade, possibly installing and removing packages
forget-new – Забыть, какие пакеты “новые”
search – Поиск пакета по имени и/или выражению
show – Показать подробную информацию о пакете
clean – Удалить загруженные файлы пакетов
autoclean – Удалить старые загруженные файлы пакетов
changelog – Посмотреть changelog пакета
download – Загрузить файл .deb для пакета
reinstall – Загрузить и (возможно) переустановить уже установленный пакет

Параметры:
-h Этот текст помощи
-s Имитировать действия, но не выполнять их на самом деле.
-d Только загрузить пакеты, ничего не устанавливать и не удалять.
-P Всегда спрашивать подтверждение или действия
-y Предполагать ответ ‘yes’ на простой вопрос yes/no
-F format Задать формат отображения результатов поиска; смотрите руководство
-O order Задать формат сортировки результатов поиска; смотрите руководство
-w width Задать ширину вывода результатов поиска
-f Принудительно исправлять неработоспособные пакеты.
-V Показывать версию устанавливаемых пакетов.
-D Показывать зависимости автоматически изменяемых пакетов.
-Z Показывать изменение размера установки каждого пакета.
-v Отображать дополнительную информацию. (может быть введено несколько раз)
-t [release] Задать выпуск, из которого должны быть установлены пакеты
-q Не выводить индикатор прогресса в режиме командной строки.
-o key=val Вручную установить значение параметра настройки с именем ‘key’
–with(out)-recommends Указать, будут ли рекомендуемые пакеты
трактоваться как строгие зависимости
-S fname Читать aptitude информацию о расширенном статусе из fname.
-u Загрузить список новых пакетов при запуске.
-i Запустить установку при запуске.

После выполнения, например, aptitude search package_name в левой колонке можно увидеть два ряда статусов:
Значения основного статуса следующие:
i (от installed) – пакет установлен в системе:
p (от purge) – пакет не был установлен или был удален “вчистую”
c (от clean) – пакет, удаленный с сохранением конфигурационных файлов;
v (от virtual) – т.н. виртуальные пакеты, то есть просто списки реальных пакетов, один из которых будет использоваться в той или иной ситуации.

Дополнительный статус пакета может принимать такие значения:
A (от Auto) – пакет был установлен не самостоятельно, а автоматически, как зависимость другого пакета;
h (от hold) – для пакета зафиксирована его текущая версия, то есть он не будет обновляться при выполнении операторов upgrade и dist-upgrade (см. ниже);
u (от unpacked) – пакет был получен, распакован, но не инкорпорирован в файловую систему и не сконфигурирован;
C (от half-Configured) – пакет, установка которого оборвалась на стадии конфигурирования;
H (от Half-installed) – пакет, установка которого оборвалась на стадии инсталляции;
B (от Broken) – т.н. “сломанные” пакеты – то есть содержащие ошибки внутри себя или утратившие свои зависимости.

Установка Tinydns (djbdns) на linux

September 7th, 2009

Так как нормальных rpm нет придется ставить из исходников.
Сначала ставим daemontools, который будет запускать сервис tinydns, следить за его состоянием и тд.

cd /root
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar zxvf ./daemontools-0.76.tar.gz
В src/conf-cc в строку с gcc добавляем -include /usr/include/errno.h
cd ./admin/daemontools-0.76/
./package/install

cd /root
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar zxvf ./ucspi-tcp-0.88.tar.gz
cd ./ucspi-tcp-0.88
В conf-cc в строку с gcc добавляем -include /usr/include/errno.h
make
make setup check

cd /root
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
tar zxvf ./djbdns-1.05.tar.gz
cd djbdns-1.05
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup check

groupadd dnsuser
/usr/sbin/useradd -g dnsuser -s /sbin/nologin -d /dev/null tinydns
/usr/sbin/useradd -g dnsuser -s /sbin/nologin -d /dev/null dnslog
/usr/local/bin/tinydns-conf tinydns dnslog /etc/tinydns [ip-сервера]
ln -s /etc/tinydns /service/tinydns #говорим daemontools-у о новом сервисе, он сам его запустит через 5 сек

Заполняем файл зон (/etc/tinydns/root/data) по образцу:

.domain.com::ns1.domain.com.:2500
&domain.com::ns2.domain.com.:2500
@domain.com::mail.domain.com.:10:2500
+domain.com:serverip:2500
+*.domain.com:serverip:2500

Делаем в /etc/tinydns/root чтобы перекинуть данные в бинарную версию data.cdb:

make

Проверить что data.cdb содержит требуемые данные:

cd /etc/tinydns/root
tinydns-get a www.domain.com

Управление сервисами:

svc -d /service/tinydns #остановить сервис
svc -u /service/tinydns #запустить сервис
svc -t /service/tinydns #рестартануть сервис
svstat /service/tinydns #проверяем статус

Синхронизация зон со вторым ДНС-сервером.

Для синхронизации бинарного файла с данными по зонам (с другим сервером) воспользуемся scp.
На втором днс-сервере необходимо установить аналогичный комплект. Затем на первом сервере:

cd /root/.ssh
ssh-keygen -b 1024 -t dsa

На втором сервере:

/usr/sbin/useradd -s /bin/bash srv-dns-acct
cd /home/srv-dns-acct/
mkdir .ssh
В файл .ssh/authorized_keys копируем id_dsa.pub с первого сервера
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

На первом сервере в файл /etc/tinydns/root/Makefile добавляем:

scp data.cdb srv-dns-acct@ns2.domain.com:/etc/tinydns/root/data.cdb

Теперь для синхронизации первого сервера со втором надо на первом сервере:

cd /etc/tinydns/root
make

Смотрите так же Скрипт добавления зон
Для добавления разных экзотических записей есть tinydns Record Builder

Примечание:
Если вдруг была удалена директория /etc/tinydns/supervise то надо сделать ps auxww |grep sup и грохнуть два процесса supervise. Затем сделать ps auxww |grep sv и грохнуть два процесса svscan. Инит перезапустит svscan, а тот перезапустит supervise и он пересоздаст каталоги.

Каталоги и справочники марок СССР и России. .