Блог butch

Регистрация

Календарь

<< Сентябрь 2010  

Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Теги

1c 7.7  acl  adprep  ads  alt linux  apt  audio  bash  bash.org.ru  blog.ru  bsod  calc  canon  cdr  clamav  clone  cmd  cod4  compiz  conky  cuflow  curl  cygwin  dansguardian  dante  debian  desktop  dkim  dnswl  dogs  downadup  dp-301u  epiphany  etcnet  exilog  exim  expect  fax  fds  fetchmail  firefox  flash  flow-tools  foo2zjs  freeswitch  fuse  futurama  g711  g729  games  gentoo  gnome  google  havp  iceweasel  intro  ipcad  iptables  it quiz  ivr  jetdirect  kbfx  kde  kerberos  kido  kkbswitch  kompose  kprop  krb5  kvm  l4d  ldap  ldapadmin  linux  lpr  lua  mdadm  mono  mppe  ms sql 2005  mta  multiwan  mysql  netflow  network  nfdump  nfsen  nix  notebook  nvidia  open source  openbox  openfiler  openvpn  pcma  pcmu  performance  pgina  pmacct  podcasting  porn  postcards  pptp  printing  python  qemu  raid  reset 5  rip  ross  samba  sams  script  show  siggen.2002  simhost.org  sip  skype  sleep  smstools  soft phone  spam  squid  squid_ldap_auth  squidguard  sshfs  support  suzuki alto  tabr  test  thinstation  tint2  traffic  trayer  ubuntu  udev  umask  usbd  vad  virus  vkontakte.ru  vsftpd  wbar  weather  web  winbind  windows  wine  winxp  x  xfce4  xneur  xxkb  аватар  авто  бельгийская овчарка  блогун  виндузятнеги  восточный экспресс  грюнендаль  дибилизм  жизненное  игры  кино  комикс  мелочи  ниочем  обои  открытки  пингвины  погода  подарки  позитив  политика  праздники  работа  собаки  сообщество  флэш  фото  халява  щенки  юмор 

На странице

RSS - подписка

нубский админинг линухов на коленке =) туплю над ALT Linux & Gentoo & Debian

Free Visitor Maps at VisitorMap.org
CoD4 игровой сервер
L4D versus игровой сервер

1|2|3

vad in freeswitch

обнаружил, что VAD — Voice Activity Detection как то кривовато у меня работал на freeswitch =) по идее с VAD должно отделять голос от фонового шума. однако вместо этого фрисвич глотал слова =( вероятно это относится только к связке freeswitch + panasonic. выключил VAD — и все стало найс.

Теги: freeswitch|vad|sip

kvm в alt linux

долго думая и решая, что же всетаки использовать для виртуалиазации, остановился всетаки на kvm+qemu, как наиболее перспективное и свободное решение. xen, говорят, потихоньку сдает свои позиции. да и есть некоторые плюсы у kvm. обратившись к списку рассылки sysadmins я попросил совета, что ж мне использовать, на что получил ответ: Лучше из Сизифа, либо ядро std-def или un-def и обычный qemu-kvm к нему, либо ядро el-smp и qemu-kvm-el (и то, и другое из RHEL6Beta2) спасибо Vitaly Kuznetsov. в общем как мне стало ясно, в rhel активно развивают kvm, а в альты потихоньку портируют их патчи (в сизиф). итак, я поставил x86_64 систему, поставил из сизифа kernel-image-el-smp kernel-modules-kvm-el-smp qemu-kvm-el virt-manager позже еще пришлось доставить пакеты dbus для virt-manager (при старте искал dbus-launch) и загрузить tun модуль ядра для поднятия сети. для управления виртуалками я использовал virt-manager, написанный на питоне. замечательная штука, нада сказать. gui приложения я прокидываю на свой комп, используя ключи —XY для ssh. на сервере естественно нет никакой графики =) кстати, с kvm+qemu можно использовать образы дисков той же vmware server, например. нагугливается по migrate vmware kvm =)

Теги: kvm|qemu|alt linux

kerberos. Ticket expired while renewing credentials

в общем столкнулся с проблемой. после получения тикета не могу обновить его:
$ kinit —R 
kinit(v5): Ticket expired while renewing credentials
связано это было с тем что период обновления = 0
$ klist 
Valid starting Expires Service principal 
08/19/10 17:09:27 08/20/10 17:09:27 krbtgt 
renew until 08/19/10 17:09:27

долго я мучался, добавил default политику:
kadmin.local:  getpol default 
Policy: default 
Maximum password life: 157766400 
Minimum password life: 86400 
Minimum password length: 6 
Minimum number of password character classes: 2 
Number of old keys kept: 3 
Reference count: 1
В конфиги добавил:
в kdc.conf в секцию realms:
  max_renewable_life = 7d 0h 0m 0s 
  max_life = 2d 0h 0m 0s 
  default_principal_flags = +renewable 
  krbMaxTicketLife = 172800 
  krbMaxRenewableAge = 604800

в krb5.conf в  libdefaults:
 
  ticket_lifetime = 2d 
   renew_lifetime = 7d
и в realms:
    krbMaxTicketLife = 172800 
    krbMaxRenewableAge = 604800


после чего по getprinc в kadmin.local отображалось для принципалов:
Maximum ticket life: 1 day 00:00:00 
Maximum renewable life: 1 day 00:00:00

но klist после получения ключа все так же меня не радовал.

 я полез в лдап (он выступает бэкэндом для кербероса) и начал изучать имеющиеся записи. 
как выяснилось у части записей присутвуют поля (это K/M — default master-key-name и krbtgt/DOMAIN.MY — Kerberos Ticket Granting Ticket)


krbMaxRenewableAge = 0


в общем сделал бэкапы и изменил у этих двух самых важных принципалов krbMaxRenewableAge
kadmin.local: modprinc —maxrenewlife «1 week» K/M
kadmin.local: modprinc —maxrenewlife «1 week» krbtgt@DOMAIN.MY

после чего все на радость стало хорошо: ренью период получил в 7 дней.
осталось только понять как им воспользоваться  прозрано =)))

Теги: krb5|kerberos

exim4 и dkim

DKIM

Многие уже знакомы с dkim, но как показывает статистика, пока что мало кто использует этот механизм.
Кратко: Вместо традиционного IP-адреса, для определения отправителя сообщения DKIM добавляет в него цифровую подпись, связанную с именем домена организации. Подпись автоматически проверяется на стороне получателя, после чего, для определения репутации отправителя.
На данный момент DKIM уже используют большинство крупных mail-сервисов, такие как Gmail, Яндекс, Yahoo и не только. В данном топике я хотел бы поделится собственным опытом внедрения DKIM.

Подготовка

Нам понадобится TXT запись вида default._domainkey.domain в которой будет содержатся public key, который будет использоваться для проверки подписи в письме. Сгенерировать ключи довольно просто. Для этого можно установить dkim-milter и выполнить:

$ dkim-genkey -d domain —t —r

который сгенерирует два файла (ключ —t для тествого режима):
  • default.txt — public key для TXT записи
  • default.private — private key, которым будет пользоваться mta для подписывания сообщений.
Если хочется самому управлять процессом генерации, можно сделать это вручную c помощью openssl
$ openssl genrsa —out domain-dkim.pem 768
$ openssl rsa —in domain-dkim.pem —out domain-public.pem —pubout —outform PEM
После создания TXT записи можно приступать к настройке MTA.

EXIM

DKIM поддерживается exim4 начиная с версии 4,70, которую в Debian например можно установить из backports. В конфигурации должны отразится два аспекта:
  • проверка DKIM подписей входящих писем
  • подписывание исходящих писем
Для первого понадобится включить соответствующий acl
acl_smtp_dkim = acl_smtp_dkim
Этот acl будет вызываться для каждой DKIM подписи в письме после приема тела письма (ведь DKIM хранится в headers).
Пример acl_smtp_dkim (поскольку я сам пока что только обкатываю DKIM применяю warn вместо deny):
acl_smtp_dkim:

        warn    dkim_status     = fail
                logwrite        = DKIM test failed: $dkim_verify_reason
                add_header      = X-DKIM-FAIL: DKIM test failed: (address=$sender_address domain=$dkim_cur_signer), signature is bad.

        warn    dkim_status     = invalid
                add_header      = :at_start:Authentication-Results: $dkim_cur_signer ($dkim_verify_status); $dkim_verify_reason
                logwrite        = DKIM test passed (address=$sender_address domain=$dkim_cur_signer), but signature is invalid.

        accept  dkim_status     = pass
                add_header      = :at_start:Authentication-Results: dkim=$dkim_verify_status, header.i=@$dkim_cur_signer
                logwrite        = DKIM test passed (address=$sender_address domain=$dkim_cur_signer), good signature.

  accept


Так же зарянее зная что письма от PayPal или GMail обязательно будут иметь DKIM подпись можно сделать deny правило для списка доменов с условием dkim_status = !pass. Либо можно метить тэгом SPAM.

Для подписывания сообщений достаточно следующего:
добавить переменные:
DKIM_DOMAIN = ${lc:${domain:$h_from:}}
DKIM_FILE = /etc/exim4/${lc:${domain:$h_from:}}-dkim.pem
DKIM_PRIVATE_KEY = ${if exists{DKIM_FILE}{DKIM_FILE}{0}}

в Ваш smtp транспорт:
dkim_domain = DKIM_DOMAIN
dkim_selector = default
dkim_private_key = DKIM_PRIVATE_KEY


таким образом при отправке сообщения, из headers будет выниматься домен отправителя, и, в случае если по пути /etc/exim4/domain-dkim.pem будет находится private key (не забудьте про доступ на чтение пользователя exim), письмо будет подписано. Такая конфигурация замечательно работает и на MTA, обслуживающих множество доменов.

Тестирование

Протестировать довольно просто — есть несколько тестовых адресов, на которые можно выслать письмо для проверки. Самое элементарное — отправить письмо на Gmail — в подробных сведениях о письме будет информация о подписи, так же можно заглянуть в тело письма и увидеть DKIM подпись и ее статуст проверки.

Инфо

DKIM in wikipedia
DKIM docs
Exim4: Support for DKIM

я постил это на хабре, но однако так и не получил инвайт =)

Теги: dkim|exim

переключалка каналов (python curl)

обычно переключалка канала  это:
ping -c 1 gateway  >/dev/null || do_some_stuf


не нравится мне такая схема. ибо часто бывает что гейтвей доступен, а тырнета на канале нет. если пинговать днсы - велика вероятность что на них в конце концов порежут эхо реквесты.

так что я подумал, и решил что идеально подходит на эту роль curl, у которого есть опция --interface позволяющая производить запрос с определенного интерфейса.
Читать дальше...

Теги: multiwan|curl|python

sip invite auth и фрагментированный udp

столкнулся с такой проблемой. не мог исходящий звонок произвести — сип оператор не получал пакеты с аутентификацией, которые, как выяснилось, не влезали в один пакет. решить такой косяк можно либо использовав register-transport = tcp для гейтвея либо выкинуть лишние кодэки из конфигурации и включить compact headers, чтобы усушить пакеты с sip сигнализацией. первое у меня не вышло, хз почему. всеравно продолжал трафик по удп идти. а второе решило проблему.

Теги: freeswitch|sip

kerberos slave — kprop vs kldap with ldap repl

устал я возится со слэйвом кербероса. механизм поднятия вроде как простой : * (необязательно) добавляем необходимые днс записи * добавляем новый принципал для слэйва host/kdc2.domain.my и отправляем его на слэйв в /etc/krb5.keytab * копируем конфиги и stash на слэйв: krb5.conf (/etc/krb5.conf) kdc.conf (/etc/krb5kdc/kdc.conf, or found in krb5kdc local directory) kadm5.acl (/etc/krb5kdc/kadm5.acl, or found in krb5kdc local director stash file (/etc/krb5kdc/stash, or found in krb5kdc local directory) * на слэйве kdb5_utill create * на слэйве добавляем kpropd.acl и указываем наш мастер хост в нем * запускаем kpropd на слэйве. * на мастере дампим бд кербероса # kdb5_util dump /root/slave-trans We should now use kprop to propagate this dump to the slave. # kprop —f /root/slave-trans kdc-slave1.foobar.com Database propagation to kdc-slave1.foobar.com: SUCCEEDED ну дык вот. как раз саксиид я и не получаю =) а получаю оч много разного гемора. # kprop —r DOMAIN.MY —f /root/slave-krb-trans krb2.domain.my kprop: Message size is incompatible with encryption type while encoding database block starting at 0 а на стороне слэйва: May 26 08:59:22 server7 rpc.svcgssd[12560]: ERROR: GSS-API: error in handle_nullreq: gss_accept_sec_context(): Unspecified GSS failure. Minor code may provide more information — Key version number for principal in key table is incorrect тоесть вроде как версии принципалов не совпадают. я уже раза 3 выгружал заново все нужные ключи, но все время получаю все то же самое =( версии ключей совпадают по klist —kte /etc/krb5.keytab и в kadmin через getprinc на слэйве nfs шары, которые цепляются с опцией sec=krb5p. если в китабе действительно неправильная версия принципалов — шара недоступна =) установлены на обоих системах alt linux 5,1 krb5-kinit-1.6.3-alt6.M50,1 krb5-server-1.6.3-alt6.M50,1 pam_krb5—3,13-alt1 libkrb5-devel-1.6.3-alt6.M50,1 krb5-kdc-1.6.3-alt6.M50,1 alterator-kdc-0,2-alt3 libkrb5—1.6.3-alt6.M50,1 libkrb5-ldap-1.6.3-alt6.M50,1 krb5-services-1.6.3-alt6.M50,1 krb5-kadmin-1.6.3-alt6.M50,1 керберос на мастере в качестве бд использует ldap. на слэйве правлю конфиг так чтобы бд был db2 и указыаю stash файл через key_stash_file = /var/lib/kerberos/krb5kdc/.k5.DOMAIN.MY если стартовать на слэйве kpropd в консоли и выполнить kprop на мастере (server6 — мастер. server7 — слэйв) # kpropd —dS Connection from server6.domain.my krb5_recvauth(4, kprop5_01, host/server7.domain.my@, …) authenticated client: host/server6.domain.my@DOMAIN.MY (etype == ArcFour with HMAC/md5) Generic remote error: while encoding database block starting at 0 меня просто пичаль обуяла потом надоело возится. скоперил все конфиги и файло с мастера на слэйв. указал в /etc/krb5.conf ldap_servers = ldap://localhost/ на котором у меня крутиться реплика лдапа, в которой соответвенно содержится база кереброса. завелось и листит принципалы. все вроде ок.  вообще механизм kprop что то туповат. на мастере нужно дампануть бд кербероса с помощью kdb5_util dump. и передать на ту сторону демону kpropd. который по сути нужен только для того чтобы запустить kdb5_util load. и выполнять все это барахло нужно по крону. пиздец какой то.  уж лучше пускай так будет. через лдап реплицироваться.

Теги: kprop|kerberos

skype for sip и существующие skype аккаунты

выяснил неприятный косяк =( низя перенаправить имеющиеся skype аккаунты через sip =(через sip можно получать звонки (skype — skype) только с заново созданных бизнесс аккаунтов. Создавать такие аккаунты нужно в бизнесс панели скайпа

Теги: sip|skype

openoffice.org calc — hyperlink — could not find a web browser

Иногда бывает очень удобно превратить какую то колонку в урлы с помощью hyperlink(«url»,«text»)
но когда в урл попадает просто имя домена, calc начинает тупить, выдавая сообщение:
«openoffice.org не смог обнаружить веб браузер» или что то в этом духе.
немного потупив, стартанул calc из консоли. где при щелчке на ссылку выпало:
sh: domain.name bla bla
ну собсна, решение вопроса:
=HYPERLINK(CONCATENATE(«http://»;,A1))
где А1 — ячека с именем домена.

Теги: calc

freeswitch — паузы при донаборе (pause dial)

иногда бывает нужно набрать какой то номер, а потом еще что то донабрать (внутренний, или пин код. что угодно).

для решения подобной проблемы отлично подходит связка execute_on_answer и send_dtmf

например вот так (набираем резервный ip шлюз через местную проводную телефонию. набор производится в стиле 07 + номер телефона без 8ки. 5578730 — номер телефона ip шлюза):
< extension name="ipgate" >
  < condition field="${destination_number}" expression="^07(\d*)$" break="on-true" >
          < action application="set" data="auto_hunt=true"/ >
          < action application="set" data="real_dialed_number=5578730"/ >
          < action application="set" data="dtfm_on_answer=WW8w$1w#@100"/ >
          < action application="transfer" data="limit_dial_idea" / >
   < /condition >
< /extension >

экстеншон limit_dial_idea используется для связи через медные линии.
в котором испольняется
< action application="bridge" data="{execute_on_answer=send_dtmf\s${dtfm_on_answer}}sofia/gateway/panas111/${prefix}${real_dialed_number}"/ >

где W — 1сек. пауза в наборе, а w — 0,5сек

по мотивам:
http://freeswitch.ru/wiki/fs-pause-dial
http://wiki.freeswitch.org/wiki/Variable_execute_on_answer
http://wiki.freeswitch.org/wiki/Misc._Dialplan_Tools_send_dtmf

Теги: freeswitch

1|2|3