среда, 30 ноября 2011 г.

LDAP, настройка репликация Delta-syncrepl

Репликация Delta-syncrepl

Для понимания вопроса читаем здесь
http://www.openldap.org/doc/admin24/replication.html#Delta-syncrepl

Везде приведен домен для примера dc=example,dc=com - необходимо подставить свои значения

На мастере

** проверяем файла /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif
на наличие следующих строк
olcDbIndex: entryCSN eq
olcDbIndex: entryUUID eq

если их нет, то создадим

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq


** создаем нужные подкаталоги

sudo -u openldap mkdir /var/lib/ldap/accesslog
sudo -u openldap cp /var/lib/ldap/DB_CONFIG /var/lib/ldap/accesslog/


** добавим загрузку необходимых модулей syncprov и accesslog

ldapmodify -Y EXTERNAL -H ldapi:///

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: syncprov
-
add: olcModuleLoad
olcModuleLoad: accesslog


** создадим дополнительную базу для accesslog

ldapadd -Y EXTERNAL -H ldapi:///

dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap/accesslog
olcSuffix: cn=accesslog
olcRootDN: cn=admin,dc=example,dc=com
olcDbIndex: default eq
olcDbIndex: entryCSN,objectClass,reqEnd,reqResult,reqStart


** добавим syncprov в БД Accesslog.

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpReloadHint: TRUE


** добавим syncprov в основную БД

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE


** добавим определения accesslog для основной БД

ldapadd -Y EXTERNAL -H ldapi:///

dn: olcOverlay=accesslog,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcAccessLogConfig
olcOverlay: accesslog
olcAccessLogDB: cn=accesslog
olcAccessLogOps: writes
olcAccessLogSuccess: TRUE
# Сканировать БД accesslog каждый день, и удалять записи старше 7 дней
olcAccessLogPurge: 07+00:00 01+00:00


** создаем нового юзера "replicator" для репликации

ldapadd -W -x -D 'cn=admin,dc=example,dc=com' -H ldap://127.0.0.1

dn: cn=replicator, dc=example, dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: replicator
description: sync replication user
userPassword: SECRET

где значение userPassword можно получить с помощью команды slappasswd -h {MD5}

** задаем права на чтение replicator

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to * by dn="cn=replicator,dc=example,dc=com" read


ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to * by dn="cn=replicator,dc=example,dc=com" read



На слэйве

** добавим нужный индекс

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryUUID eq


** настроим репликацию
_master_server_ = url или ip мастер-сервера LDAP

ldapmodify -Y EXTERNAL -H ldapi:///

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=0 provider=ldaps://_master_server_:636 bindmethod=simple binddn="cn=replicator,dc=example,dc=com" credentials=SECRET searchbase="dc=example,dc=com" logbase="cn=accesslog" logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" schemachecking=on type=refreshAndPersist retry="60 +" syncdata=accesslog tls_reqcert=never
-
add: olcUpdateRef
olcUpdateRef: ldap://_master_server_


Проверка
В простейшем случае делаем изменение на мастере и следом просматриваем на слэйве
ldapsearch -Y EXTERNAL -H ldapi:///
и сравниваем результат измнененного поля.

вторник, 29 ноября 2011 г.

Debian, LDAP перенос на другой сервер

На новом (целевом) серевере установим:

aptitude install slapd ldap-utils

ну и если надо, можно поставить так же migrationtools
запросит ввести пароль для админа - в дальнейшем все равно поменяем, можно не запоминать особо

На исходном сервере стопим ldap и снимаем бэкап.

/etc/init.d/slapd stop
slapcat -v -l backup.ldif
/etc/init.d/slapd start

А так же tar все настройки /etc/ldap и /etc/default/slapd

tar -cvjf ldap.tar.bz2 /etc/ldap/ /etc/default/slapd

Все это перетаскиваем на новый (целевой) сервер и идем в обратном порядке

/etc/init.d/slapd stop - стопим сервер

распаковываем и заменяем оригинальный /etc/ldap (проверить права и т.п.)
на /etc/ldap/slapd.d должны быть права у openldap



rm -f /var/lib/ldap/* -- чистим базу
sudo -u openldap slapadd -v -c -l backup.ldif
sudo -u openldap slapindex -v
/etc/init.d/slapd start

понедельник, 28 ноября 2011 г.

Ldap - бэкап и восстановление

Бэкап примерно так:

/etc/init.d/slapd stop
slapcat -v -l backup.ldif
/etc/init.d/slapd start


Восстановление:
/etc/init.d/slapd stop
rm -f /var/lib/ldap/* -- чистим базу
sudo -u openldap slapadd -v -c -l backup.ldif
sudo -u openldap slapindex -v
/etc/init.d/slapd start

понедельник, 21 ноября 2011 г.

mysqldump и ошибка 1016

Если при выполнении дампа базы с помощью mysqldump получили ошибку вида:

mysqldump: Got error: 1016: Can’t open file: ‘.....’ (errno: 24) when using LOCK TABLES

можно попробовать добавить (увеличить) в /etc/my.cnf

open-files-limit=32000

суббота, 19 ноября 2011 г.

Mysql и несколько экземпляров на одном сервере.

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

Будем использовать mysqld_multi - программа для управления множеством серверов MySQL.

Для понимания процесса читаем доки.
http://dev.mysql.com/doc/refman/5.0/en/mysqld-multi.html
http://mysql.ru/docs/man/mysqld_multi.html

Создаем каталог для multi mysql, к примеру /var/lib/mysql_multi/
и в нем подкаталоги 01,02...nn
Выставим нужные права на них и собственника.
chmod 755 /var/lib/mysql_multi -R
chown mysql:mysql /var/lib/mysql_multi -R

Создадим в my.cnf нужные разделы (см. ссылки выше) со своими путями к файлам
[mysqld_multi]
mysqld = /usr/local/bin/mysqld_safe
mysqladmin = /usr/local/bin/mysqladmin
user = multi_admin
password = multipass

к примеру для экземпляра #2

[mysqld2]
socket = /var/run/mysqld/mysqld2.sock
port = 3312
pid-file = /var/run/mysqld/mysqld2.pid
datadir = /var/lib/mysql_multi/02
language = /usr/share/mysql/english
user = mysql

** Перед запуском сервера mysql необходимо создать структуру в целевом каталоге:

mysql_install_db --user=mysql --datadir=/var/lib/mysql_multi/02

** Запуск нужного экземпляра сервера:

mysqld_multi start 2

** проверитм подключение:

mysql --socket=/var/run/mysqld/mysqld2.sock
или
mysql --host=127.0.0.1 --port=3312

НЕ ИСПОЛЬЗУЙТЕ "localhost" вместо "127.0.0.1"! Иначе вместо подключения к нужному порту будет задействован сокет по умолчанию. А это будет совсем не тот экземпляр сервера, который вы хотели.

** установим пароль рута:

mysqladmin --socket=/var/run/mysqld/mysqld2.sock -u root password 'new-password'
или
mysqladmin --host=127.0.0.1 --port=3312 -u root password 'new-password'

Так же создадим пользователя mulit_admin и права для выключения сервера mysql для всех экземпляров сервера:

GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';

к примеру так:

echo "GRANT SHUTDOWN ON *.* TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';" | mysql --host=127.0.0.1 --port=3312 -u root -p'password'

ну и соответственно в разделе my.cnf [mysqld_multi] надо внести те же значения
user = multi_admin
password = multipass

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

mysqld_multi start 2,4,5
остановить аналогично
mysqld_multi stop 2,4,5

среда, 16 ноября 2011 г.

Bacula и резервное копирование

Это пока эскиз статьи.

Нужны как минимум три компонента на бэкап-сервере director, sd, fd.

aptitude install bacula-common
aptitude install bacula-director-common
aptitude install bacula-director-mysql
на этом этапе будет создана настройка mysql базы для bacula

aptitude install bacula-client
aptitude install bacula-server


aptitude install bacula-sd - storage-демн
aptitude install bacula-sd-mysql

На backup сервере в /usr/share/bacula-director лежат скрипты для задания привилегий, создания базы и создания таблиц в ней (если автоматом при установке пакета bacula-director-common не создалось все, что нужно)
grant_mysql_privileges
create_mysql_database
make_mysql_tables

=============================================================
На клиенте достаточно установить bacula-fd
и довести конфиг /etc/bacula/bacula-fd.conf до вида:

Director {
  Name = backup-dir
  Password = "..."
}

Director {
  Name = backup-mon
  Password = "..."
  Monitor = yes
}

FileDaemon {
  Name = _domain_-fd
  FDport = 9102
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run/bacula
  Maximum Concurrent Jobs = 20
}

Messages {
  Name = Standard
  director = backup-dir = all, !skipped, !restored
}


Затем /etc/init.d/bacula-fd restart

суббота, 12 ноября 2011 г.

Debian и кодеки

Не хватает в системе кодеков divx и т.п.

Для начала добавим строки в /etc/apt/sources.list

deb http://www.debian-multimedia.org/ stable main non-free
deb-src http://www.debian-multimedia.org/ stable main non-free

затем

aptitude update
aptitude install w32codecs

Debian, pcmanfm и отстутсвие иконок

Хороший файл-менеджер, но иконки нужно отдельно устанавливать и немного настраивать.

aptitude install tango-icon-theme

затем редактируем файл ~/.gtkrc-2.0 или /etc/gtk-2.0/gtkrc и добавляем в него строку:

gtk-icon-theme-name = "Tango"

на этом все.

пятница, 11 ноября 2011 г.

Доступ к интернету через VPN тунель

Докатились таки власти до попытки контроля трафика и контента.

Поднять туннель не слишком сложно. Нужен сервер за границей, пойдет и полудохлый VPS - желательно с неограниченным трафиком (ну либо достаточно большим).
Прочитать можно тут настройка OpenVPN

Итак подняли - в результате на сервере где-то в иностранном интернете появится дополнительный сетевой интерфейс tun0 с ip 10.8.0.1.
У Вас на компьютере будет что-то вроде tun0 с ip 10.8.0.5

На сервере

по минимуму (лучше конечно нормально настроить файрвол):

* включаем форвардинг
echo "1" > /proc/sys/net/ipv4/ip_forward

* настраиваем SNAT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 0/0 -j SNAT --to-source _ip_сервера_

Теперь сервер будет перенаправлять запросы из подсети 10.8.0.0 на внешние сети и при получении ответа заворачивать обратно в туннель.

На клиенте

* маршрут на ваш сервер через шлюз провайдера

route add -host _ip_сервера_ gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)

* маршрут на подсеть туннеля

route add -net 10.8.0.0 netmask 255.255.255.0 dev tun0

* убиваем маршрут по умолчанию от провайдера

route del default gw _ip_шлюза_провайдера_ eth0
(вместо eth0 может быть ppp0 и т.п.)

* устанавливаем шлюз по умолчанию на наш туннель

route add default gw 10.8.0.1 tun0

Естественно, все это лучше завернуть в скрипты. Да и сами конфиги туннеля настроить так, что бы они выдавали часть настроек сами.

Exim4 и ошибка при установке - Не удалось выполнить оперативную настройку 'exim4-daemon-light'

Дебиан не перестает удивлять. При попытке установить exim4 вывалиось что-то вроде

Не удалось выполнить оперативную настройку 'exim4-daemon-light'
(could not perform immediate configuration on 'exim4-daemon-light')

Все решение заключается в порядке установки

вначале ставим

apt-get install exim4-base exim4-config

затем

apt-get install exim4-daemon-light

Оригинально, однако работает контроль пакетов. Куда уж старой доброй Slackware до таких высот.

четверг, 10 ноября 2011 г.

Настройка OpenVPN

Настройка сервера.

Установим
aptitude install openvpn

Копируем файлики для генерации ключей и немного поднастроим:

cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn/easy-rsa

если нужно, то редактируем строки в конце файла /etc/openvpn/easy-rsa/vars (страна, город и т.д.)

mkdir /etc/openvpn/easy-rsa/keys
touch /etc/openvpn/easy-rsa/keys/index.txt
echo "00">/etc/openvpn/easy-rsa/keys/serial

cd /etc/openvpn/easy-rsa
source ./vars
chmod 700 ./vars

Создаём личный ключ и сертификат центра сертификации, на основе которых будут сертифицироваться прочие выдаваемые ключи:

./build-ca


Генерация ключей происходит в папке /etc/openvpn/easy-rsa. Перед каждым сеансом генерации ключей не забываем загружать переменные:

source ./vars

Генерируем ключ сервера:

./build-key-server server


Генерация сертификата и личного ключа клиента

source ./vars
./build-key computer2

Создаём параметр DH (Алгоритм Диффи — Хеллмана):

./build-dh

Генерируем TLS ключ:

openvpn --genkey --secret /etc/openvpn/easy-rsa/keys/ta.key

Настройка openvpn сервера
делаем отдельную папку keys в папке openvpn и копируем туда необходимые для работы сервера файлы:

mkdir /etc/openvpn/keys
cd /etc/openvpn/easy-rsa/keys/
cp ca.crt ca.key /etc/openvpn/keys/
mv server.crt server.key dh1024.pem ta.key /etc/openvpn/keys/

Запросы на генерацию сертификата можно удалить:

rm server.csr

Копируем примерный файл настройки сервера openvpn (а можно просто создать):

gzip -cd /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz >> /etc/openvpn/server.conf

Примерное содержание server.cong

# адрес на котором слушать входящие запросы.
# закоментированно, значит на всех
;local a.b.c.d
port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
tls-auth keys/ta.key 0
cipher BF-CBC
comp-lzo
max-clients 30
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3

Собственно говоря, на этом и все. Можно настроить выдачу шлюза по умолчанию и пр. редактируя server.conf

Есть вероятность, что tun на сервере не запущен
modprobe tun

Запускаем /etc/init.d/openvpn start и смотрим в лог /var/log/openvpn-status.log все ли нормально.
Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip
================================

Настройка клиента

Установим
aptitude install openvpn
Скопируем в папку с секьюрными правами файлы ca.crt computer2.key computer2.crt
к примеру в /etc/openvpn/keys/

затем в /etc/openvpn создадим конфиг _domain_.conf (удобно хранить названия домена, конфигов может быть несколько на разные сервера)
За основу можно взять /usr/share/doc/openvpn/examples/sample-config-files/client.conf

client
remote _domain_ 1194
proto udp
ca /etc/openvpn/keys/ca.crt
key /etc/openvpn/keys/computer2.key
cert /etc/openvpn/keys/computer2.crt
daemon
dev tun

Есть вероятность, что tun на клиенте не запущен
modprobe tun

Запуск клиента производится командой вида
openvpn --config /etc/openvpn/_domain_.conf

Проверяем вывод ifconfig. Должен появиться дополнительный интерфейс tun0 со своим ip

среда, 2 ноября 2011 г.

Тест "скорости" канала интернета.

Если надо потестить скорость инета можно воспользоваться http://www.thinkbroadband.com/download.html
Доступны к скачке файлы от 5M до 1G и канал у них довольно широкий


http://download.thinkbroadband.com/1GB.zip
http://download.thinkbroadband.com/512MB.zip
http://download.thinkbroadband.com/200MB.zip
http://download.thinkbroadband.com/100MB.zip
http://download.thinkbroadband.com/50MB.zip
http://download.thinkbroadband.com/20MB.zip
http://download.thinkbroadband.com/10MB.zip
http://download.thinkbroadband.com/5MB.zip