Skip to content

By Тодор in Uncategorized

Това, че Гугъл вече поддържат синхронизация, подобно на Exchange е наистина страхотно и полезно. Ползвам Mail for Exchange от доста време и се радвам, че вече може да се ползва и с пощата на Гугъл.
Проблем обаче се оказа ъпгрейдването до версия 3.00.хх на Mail for Exchange – поради някаква причина, за която Гугъл мълчат, а Нокиа не ги е грижа (понеже те официално не поддържат ГМаил синхронизация), се появява съобщение за грешка веднага след синхронизация на e-mail съобщенията, гласящо „sync failed. contact your administrator if the problem persists“. Да се свържите с администратора, ще ви е толкова полезно, колкото и това подробно и изпълнено с дебъг информация съобщение на него.

Проблемът се решава с инсталирането на по-стара версия на Mail for Exchange…

Прикачвам няколко работещи версии тук:
MailForExchange(2.9.158)_S60_3_0
MailForExchange(2.9.158)_S60_3_1
MailForExchange(2.9.158)_S60_3_2

Tags: , , , , , ,

By Тодор in FreeBSD, Linux, Solaris

Преди да получим SSL сертификат за даден адрес първо трябва да се изгенерира файл който съдържа информация за собствника и адреса на сайта – Certificte Signing Request (CSR). Информацията от CSR-a бива подписана от избран от нас CA (Certificate Authority) – Thawte, VeriSign, GoDaddy и др, след което вече имаме готов сертификат.

Пъро се генерира личният ключ:
# openssl genrsa -out private.key 2048

С този личен ключ се генерира CSR:
# openssl req -new -key private.key -out certreq.csr

Попълват се данните за сертификата, като от най-голямо значение е Common Name, което трябва да съвпада с пълният адрес на сайта (mail.server.com).
Файлът certreq.csr съдържа „искането“ за сертификат. След генерирането на подписаният сертификат, той вече не е нужен.

Tags: , , , , , ,

By Тодор in Linux

Това е нещо, което би помогнало на машина с бавни дискове или просто на някой, който желае да корегира скоростите по подразбиране на синхронизиране на масива при евентуално разпадане или друг повод.
До тук знаем, че статус на масивите можем да видим с:

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdc1[1] hda1[0]
      200704 blocks [2/2] [UU]
md1 : active raid1 hdc2[1] hda2[0]
      312367744 blocks [2/2] [UU]
      [>....................]  resync =  1.5% (4937472/312367744) finish=10184.0min speed=500K/sec

Текущата скорост на синхронизиране можете да видите и така:

# cat /sys/block/md1/md/sync_speed
549

Максималната и минимална разрешени скорости са тук:

# cat /sys/block/md1/md/sync_speed_max
500 (local)

# cat /sys/block/md1/md/sync_speed_min
500 (local)

В този пример ръчно съм настроил максималната и минимална скорост на 500KB/s.
По подразбиране минималната е 1000 а максималната 200000.
За да ги корегираме правим така:

# echo 500 > /sys/block/md1/md/sync_speed_min
# echo 500 > /sys/block/md1/md/sync_speed_max

Промените влизат в сила веднага, но не се запазват след рестарт. Ако желаете те да са валидни и след рестартиране на машината, добавете тези редове в rc.local.

Tags: , , , , , , ,

By Тодор in Linux

На всеки рутер обслужващ повечко IP адреси се налага ръчно увеличаване на максималния размер на conntrack таблицата.
В Ubuntu Server 8.04 става така:

В /etc/modules се добавя следният ред:
nf_conntrack

Това зарежда модула при стартиране на машината.
След това в /etc/sysctl.conf се добавя този ред:
net/nf_conntrack_max=100000

Един рестарт и резултата може да се види в:
sysctl -a

Tags: , , , ,

By Тодор in Linux

Сигурно сте видели много статии насам-натам за това, че производителите на хард дискове вече напират с новите серии от производството си да наложат ползването на сектори от по 4kb. Така де, сегашното 512b не е мръднало от както 20MB диск е бил с размера на акумулираща печка.
Всичко хубаво, обаче въпреки твърденията на Western Digital, че само WindowsXP и по-стари уиндоуси не са подготвени за това не е особено вярно. Същото се отнася и за кой да е линукс (до момента).
Ефекта е, че скоростта на работа на диска и особено при записване е многократно по-ниска. Така е, понеже операционната система си работи със сектори от по 512b, които се „преподреждат“ от контролера на самия хард диск.
Май първи WD направиха диск с 4k сектори – Caviar Green 1TB 64MB cache. На самия етикет на диска си пише, че WinXP и по-стари трябва да закопчаят джъмпер 7-8 или да ползват Western Digital Alignment Tool, което може да се свали от сайта им.
Проблемът е, че всички операционни системи по подразбиране правят първият партишън на 63-тият сектор на диска, което никак не е кратно на 4. Alignment Tool-а намества дяловете както трябва.
Но той е само за Windows 🙂
Ами линукс?
Там гимнастиката е следната:
След като диска се раздели на дялове според инсталацията, трябва да се корегира началото на първият дял с fdisk.
# fdisk /dev/sda
Отиваме в разширените му възможности с x
С p може да се изведат на екран наличните дялове на диска.
Това, което трябва да се направи е с опция b да се корегира началото на дяла от 63 на 64, след което записвате промените с w и след форматиране дяла е готов за ползване.

Това не е научен труд или писано някъде в дебелите книги, не твърдя и че е най-правилният начин. При мен резултатът беше нормализиране на скоростта на работа с диска (около 4-5 пъти по-бърза работа).

Tags: , , , , , , , ,

By Тодор in FreeBSD, Linux, Solaris

Понякога се налага да разполагаме с някакъв голям или малък файл за някаква проба или тест или каквото и да е. В случая ни трябва файл с размер 1GB, не ни интересува какво има в него и какъв е този файл, единствено размера има значение!

dd if=/dev/zero of=testfile bs=1MB count=1024

Това ще снесе файл с име testfile в текущата директория, ще бъде с размер точно 1GB.

Tags: , ,

By Тодор in FreeBSD, Linux, Solaris

Целта на упражнението е да се закачим с putty към *nix машина и да стартираме графична програма, която да ползваме локално.
Задачата е доста проста и няма нищо сложно в изпълнението.
Нужни са ни Xming и PuTTY. Ще ги атачна, за да не ги търсите.
Инсталират се Xming и Xming-fonts. Стартира се. Долу в дясно (където е часовника) трябва да се появи един X.
Следващата настройка е в putty – Connection>SSH>X11 – слага се отметка на „Enable X11 forwarding“ и в полето „X display location“ се попълва „localhost:0:0“. Показал съм снимка на това.
След като сте въвели всичко се закачате към желаната машина и всяко графично приложение, което изпълните ще се появи на вашия десктоп.
#firefox &
Това ще зареди браузъра Firefox изпълнен на отдалечената машина, но с прозорче на вашия екран. Символа & се слага на края за да го изпълни във фонов режим и да освободи конзолата на putty за по-нататъшно използване.
Затворите ли сесията на putty – всички стартирани приложения ще умрат.

Успех 🙂

Tags: , , , ,

By Тодор in Linux

Конфигурирането на RAID1 по време на инсталацията е лесно и бързо, но има нещо важно, което лесно може да се пропусне – конфигурирането на Grub да зарежда от двата диска в масива:

Спира се Grub менюто с c и пишем горе долу това:

grub> root (hd1,0)
grub> setup (hd1)
grub> root (hd0,0)
grub> setup (hd0)

След това ESC и зареждането продължава нормално.

Другият вариант на същото е за случаите, в които нямаме достъп „на живо“ до компютъра:

# grub
grub> device (hd0) /dev/sda
grub> device (hd1) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)
grub> root (hd1,0)
grub> setup (hd1)
grub> quit

Палите свещичка и рестартирате.

Tags:

By Тодор in FreeBSD, Linux, Solaris

Ето и най-бързия начин да погубите информацията на диска си:
dd if=/dev/zero of=/dev/sda bs=1M
Ще покрие целия диск с нули, включително boot-сектор, всички налични тялове и т.н.
Като вариант може вместо /dev/zero да се ползва /dev/random, което ще напълни диска с произволно генерирана информация вместо „нули“.

Tags: , , , , ,

By Тодор in Uncategorized

Ако някой има нужда да забрани Google Talk покаквато и да е причина, ето как става:
Прави се DNS запис за chatenabled.mail.google.com, който сочи примерно към 127.0.0.1.
Сега когато си отворите пощата, Gtalk аплетчето няма да се свързва.

Tags: , , , , , ,

By Тодор in DOCSIS

Arris Cornerstone 1000/1100/1500 са бриджове и могат да работят само като такива.
Пускам конфигурацията на една такава машинка заедно с решението на проблем, който срещнах по време на експлоатация:

[Cornerstone] remote1> putmng display
$ box
      name                           "Cornerstone"
      high-temp-threshold            55
$ admin
      sw-server-ip-addr              172.16.1.2
      provisioning-control           use-nvram
$ ip-level
      config-ip-address              10.10.255.254
      config-ip-subnet               255.255.0.0
      config-ip-gateway              10.10.0.1
$ admin
      config-tftp-ip-addr            172.16.1.2
      time-rfc868-addr               172.16.1.2
      time-offset                    7200
      time-sntp-addr                 172.16.1.2
$ downstream
      frequency                      400000000
      modulation                     qam256
      power                          530
$ upstream-specific/4
      frequency                      32000000
      power                          0
$ upstream-specific/5
      frequency                      27000000
      power                          20
$ upstream-specific/6
      frequency                      27000000
      power                          0
$ upstream-specific/7
      frequency                      27000000
      power                          0
$ cable-level
      admin-status                   up
$ forwarder
      proxy-arp                      enable
$ admin
      bootp-relay-control            relay-tagging-enabled
$ bootp-modify/1
      server-ip-addr                 172.16.1.2
      status                         active
$ ip-level
      dns-control                    enabled
$ dns-modify/1
      server-ip-addr                 172.16.1.10
      status                         active
$ dns-modify/2
      server-ip-addr                 172.16.1.20
      status                         active
$ ip-level
      dns-domain-name                "cornerstone.kamenitza.org"
$ accounts
      inactivity-timer               60
$ cable-level
      concatenation-control          disabled
$ admin
      ssh-control                    enabled
      ssh-host-key-bits              1024
      ssh-server-key-bits            2048
$ cable-level
      cpe-active-default             enabled

172.16.1.2 – DHCP, TFTP, NTP, DAYTIME сървър
10.10.255.254 – IP адреса на CMTS-а
10.10.1.1 – IP адреса на аксес рутера, към който е закачен CMTS-a

Топологията е горе долу такава:
DHCP--->ROUTER--->CMTS--->Cable Modems

Доста странен проблем се получи в тази ситуация – клиентите (CPE-тата) получаваха коректни настройки от DHCP сървъра, но нямаха мрежова свързаност?!
WTF!? ще си кажете…
Щом получават настройките – те ги получават по мрежата, значи няма как да не работи!

При всеки мрежовата свързаност се възстановяваше веднага след като напиша:
# arping 1.2.3.4
на рутера към който е закачен CMTS-a. Това е ИП адреса на мрежовата карта на клиента, не на кабелния модем.
Значи нещо се дъни най-вероятно на второ ниво!?
Какво ли не правих – пускане и спиране на proxyarp на CMTS-a, пускане и спиране на dhcprelay на рутера – никаква промяна.

Реших проблема по възможно най-простия и дървен начин:

#!/bin/bash
i=2
while [ $i -lt 255 ]
do
    /sbin/arping -q -c 1 10.20.30.$i &
    let i=$i+1
done

Това скриптче се изпълнява през 2 минути от cron.
Ако някой с подобна топология няма такива проблеми – ще се радвам да сподели по-елегантно решение 🙂

Tags: , , , , , ,

By Тодор in Linux

Ще дам пример със статистика на мрежов интерфейс на линукс компютър.
Какво е необходимо:
1. Инсталиран и конфигуриран SNMP демон – пример.
2. Инсталиран и работещ RRDTool.
3. Добре охладена халба бира и кофа с чипс.

SNMP ще ни предостави достъп до всички системни „броячи“, ако мога така да ги нареча:
# snmpwalk -v2c -c public localhost
Ще видите доста дълъг списък.
Като начало ни трябват само мрежовите интерфейси, с които разполага машината:

# snmpwalk -v2c -c public localhost IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: lo
IF-MIB::ifDescr.2 = STRING: eth0
IF-MIB::ifDescr.3 = STRING: eth1
IF-MIB::ifDescr.4 = STRING: eth2
IF-MIB::ifDescr.5 = STRING: eth3

От тук ни трябва само индекса на мрежовата карта, която ще следим – да кажем eth0, която е с индекс 2.

За да получим изпратените от интерфейса байтове:

# snmpwalk -v2c -c public localhost IF-MIB::ifHCOutOctets.2
IF-MIB::ifHCOutOctets.2 = Counter64: 6377552360

За да получим приетите от интерфейса байтове:

# snmpwalk -v2c -c public localhost IF-MIB::ifHCInOctets.2
IF-MIB::ifHCInOctets.2 = Counter64: 135903877111

Да, но на нас ни трябват само цифрите от брояча, и вместо да парсваме целия този стринг, който получаваме от snmpwalk, добавяме параметрите -Oqv:

# snmpwalk -v2c -c public -Oqv localhost IF-MIB::ifHCOutOctets.2
6377552360

и
# snmpwalk -v2c -c public -Oqv localhost IF-MIB::ifHCInOctets.2
135903877111

Малко по-добре нали 🙂

Така, вече имаме данните от броячите. Сега трябва да подготвим RRD базата данни за съхранението им:

/opt/rrdtool/bin/rrdtool create eth0.rrd --step 300 --start N \
            DS:in:DERIVE:600:0:U   \
            DS:out:DERIVE:600:0:U   \
            RRA:AVERAGE:0.5:1:288      \
            RRA:AVERAGE:0.5:6:2016      \
            RRA:AVERAGE:0.5:24:8640

Като съответно корегирате пътя до rrdtool с този на вашата инсталация. Не би трябвало да се налага корекция на която и да е от цифрите, които виждате тук. Изпълнението на тази команда ще създаде файл eth0.rrd, в който ще съхраняваме отчитанията на броячите на мрежовия интерфейс.

Примерен скрипт, който проверява броячите и ги съхранява в базата данни:

#!/bin/bash
out=`snmpwalk -v2c -Oqv -c public localhost IF-MIB::ifHCOutOctets.2`
in=`snmpwalk -v2c -Oqv -c public localhost IF-MIB::ifHCInOctets.2`
/opt/rrdtool/bin/rrdtool update eth0.rrd -t in:out N:$in:$out

Това кодче трявба да се изпълнява на всеки 5 минути.
Добавяме го в cron:
# crontab -e
И добавяме следния ред:
*/5 * * * * /rrd/updaterrd >> /rrd/rrd.log
Изхода от всяко изпълнение ще се записва във файла /rrd/rrd.log – помага при търсене на грешки.

Настроихме компютъра да отчита и събира статистиките за интерфейса, остана да ги изрисуваме:

/opt/rrdtool/bin/rrdtool graph -a PNG eth0.png \
        --title "Daily stats" --start -1day \
        DEF:i=eth0.rrd:in:AVERAGE DEF:o=eth0.rrd:out:AVERAGE \
  -h 80 -w 250 \
  AREA:o#0903FF:"Out" LINE1:i#00ff00:"In\n" 

Това ще изрисува статистиката за последният ден. Можете да я генерирате директно в директория достъпна от уеб сървъра, за да може да бъде поставена по-късно в уеб сайт.

Графиката показва скоростта на натоварване в MB/s мегабайти в секунда (не мегабити).

RRDTool е много мощен инструмент, и ако се зачетете в документацията му ще откриете куп параметри, с които да направите вашите графики максимално удобни за четене и с външен вид, който ви допада.

Сега докато си изпиете бирата и си изхрупате чипса ще са се събрали достатъчно данни, за да проверите какво сте направили.

Очаквайте продължение…

Tags: , , , , ,

By Тодор in Linux, Solaris

На този линк е много добро описание с примерчета как се работи с awk. Ако намеря време ще го преведа.

Tags: , , , ,

By Тодор in Linux

Най-прост пример ще дам.
Създайте /etc/rsyncd.conf със следното съдържание:

max connections = 10
log file = /var/log/rsync.log
timeout = 300
[share]
 comment = Shared folder
 path = /share
 read only = yes
 list = yes 
 uid = nobody
 gid = nobody
 auth users = gosho
 secrets file = /etc/rsyncd.secrets

Тазки конфигурация ще направи „споделен обект“ с име share, който ще е самата директория /share (не е нужно двете да са с еднакви имена). Достъпът до тази директория ще бъде само за четене и ще се осъществява от името на потребител nobody, така че той трябва да има поне права за четене. Права за достъп през rsync ще има gosho, като паролата му ще бъде в /etc/rsyncd.secrets.

Съдържанието на /etc/rsyncd.secrets:

gosho:goshoto

Т.е. паролата на gosho е goshoto.
Следва бърза предпазна мярка:

# chmod 600 /etc/rsyncd.secrets

Така никой друг няма да може да чете файла с паролите.
За дистрибуциите, които ползват xinetd редактирате /etc/xinetd.d/rsync, така че:
disable = yes
да стане:
disable = no
xinetd трябва да бъде рестартиран след това:
# /etc/init.d/xinetd restart

Остана само да се разреши порт TCP/873 през firewall-a и всичко е готово.

Ето няколко примера за употребата:

# rsync rsync://gosho@server.address/
Ще покаже списъка със споделените директории.

# rsync -aPv rsync://gosho@server.address/share .
Ще изкопира всичко от посоченият път рекурсивно в текущата директория.

За да се избегне ръчното писане на паролата и ползването на rsync в скрипт може да се сетне променливата:
# export RSYNC_PASSWORD=goshoto

Приятно синхронизиране, бекъпване, копиране и т.н!

Tags: , , , ,

By Тодор in Linux

По начало CentOS 5.4 идва с Postgresql версия 8.1.
За да инсталирате по-нова е необходимо това:

# rpm -Uvh http://yum.pgsqlrpms.org/reporpms/8.4/pgdg-centos-8.4-1.noarch.rpm

Следва стандартното:
# yum install postgresql-server

Tags: , , , ,