суббота, 9 ноября 2013 г.

Непростое обновление roundcube

Возникла задача обновить roundcube с версии 0.7 до 0.9.5

Казалось бы, что всё очень просто, но на деле возникли затруднения.

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

суббота, 22 июня 2013 г.

FreeBSD исполнилось 20 лет

Проект FreeBSD празднует двадцатилетие.
Днём рождения проекта считается 19 июня 1993 года.
В этот день на базе неофициального набора патчей к 386BSD был создан форк 4.3BSD, в рамках которого планировалось развивать быструю, стабильную и надёжную ОС для систем i386.
В качестве вариантов имени рассматривались FreeBSD, BSDFree86 и Free86BSD.
В итоге предпочтение было отдано варианту FreeBSD, который предложил Дэвид Гринман (David Greenman).
В ноябре 1993 года на основе 4.3BSD-Lite 'Net/2' и 386BSD 0.1 был выпущен первый релиз FreeBSD 1.0.

Точнее чем Майкл Лукас никто бы не сказал - "Like smog, spiders, and corn syrup, FreeBSD is all around you; you simply don't see it because FreeBSD just works."

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


пятница, 31 мая 2013 г.

Восстановление файловой системы FreeBSD

Как поступать если FreeBSD после повреждения файловой системы загружается в single use mode.

Для начала запустить fsck_ufs для "грязных" слайсов

# fsck_ufs /dev/ad0s1d

Далее если ругнется на то что can't read disk label

и

# bsdlabel: /dev/ad0s1d: no valid label found

То

Сначала узнать адреса резервных копий суперблока.

# newfs -N <слайс>

Будет выведен список резервных копий суперблока.

И затем указать один из адресов копий суперблока программе восстановления

# fsck -o -b=<адрес одного из резервных суперблоков>  <слайс>

Осталось только оправить на перезагрузку

# init 6

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



суббота, 27 апреля 2013 г.

Cisco disaster recovery


Бывают ситуации когда загрузка маршрутизатора останавливается в ROMMON по той причине, что отсутствует прошивка.

воскресенье, 31 марта 2013 г.

Path MTU Discovery

Неочевидные нюансы Path MTU Discovery.

Суть технологии Path MTU discovery заключается в том, что при соединении двух хостов устанавливается параметр DF (don’t fragment), который запрещает фрагментацию пакетов.
Это приводит к тому, что узел, значение MTU которого меньше размера пакета, отклоняет передачу пакета и отправляет сообщение ICMP типа Destination is unreachable.
К сообщению об ошибке прилагается значение MTU узла.
Хост-отправитель уменьшает размер пакета и отсылает его заново.
Такая операция происходит до тех пор, пока пакет не будет достаточно мал, чтобы дойти до хоста-получателя без фрагментации.

Но, что произойдет если на маршрутизаторе, на интерфейсе отключена отправка таких ICMP сообщений (no ip unreachables)?
В таком случае хост-отправитель не будет знать, о том, что его пакет отброшен и не был доставлен до адресата.
И соединение просто не установится.

Отключение ICMP unreachables не усиливает безопасность, а просто ломает технологии вроде  Path MTU discovery и усложняет поиск проблем с маршрутизацией.

воскресенье, 17 февраля 2013 г.

Примеры использования tcptraceroute

Все так или иначе использовали утилиту traceroute.
Особенно она помогает при вводе в строй новых маршрутизаторов.
Но бывают случаи когда фаерволлы отбрасывают ICMP пакеты и узнать трассу не представляется возможным.
Тогда в бой идет tcptraceroute.

Возьмем для примера хост, который блокирует наши ICMP.

[sinister@tier ~]$ traceroute -w2 -q1 -f 4 www.microsoft.com
traceroute to lb1.www.ms.akadns.net (64.4.11.42), 64 hops max, 52 byte packets
 4  bettong.itsinternet.net (213.133.168.25)  35.527 ms  36.508 ms  35.709 ms
 5  * * *
 6  * * *
 7  ge-3-0-0-0.nyc-64cb-1a.ntwk.msn.net (207.46.43.44)  121.663 ms
    207.46.45.238 (207.46.45.238)  166.674 ms *
 8  ge-5-3-0-0.bl2-64c-1b.ntwk.msn.net (207.46.46.187)  125.920 ms
    xe-4-0-1-0.bay-16c-1a.ntwk.msn.net (207.46.40.10)  190.023 ms
    ge-5-3-0-0.bl2-64c-1b.ntwk.msn.net (207.46.46.187)  127.381 ms
 9  10.22.40.9 (10.22.40.9)  190.100 ms
    xe-0-0-2-0.bay-96c-1a.ntwk.msn.net (207.46.33.74)  188.697 ms
    10.22.40.5 (10.22.40.5)  189.967 ms
10  * * xe-0-1-0-0.bay-96c-1b.ntwk.msn.net (207.46.40.229)  188.357 ms
11  * * 10.22.40.1 (10.22.40.1)  188.305 ms
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *

Как видно результат не совсем тот, что ожидался.

А теперь что нам скажет tcptraceroute:
[sinister@tier ~]$ tcptraceroute -f 4 www.microsoft.com
Selected device fxp0, address 192.168.x.x, port 38510 for outgoing packets
Tracing the path to www.microsoft.com (64.4.11.42) on TCP port 80, 30 hops max
 4  bettong.itsinternet.net (213.133.168.25)  35.520 ms  35.316 ms  35.299 ms
 5  * * *
 6  ge-6-2-0-0.lts-64cb-1b.ntwk.msn.net (207.46.42.156)  52.480 ms  51.653 ms  52.011 ms
 7  207.46.45.238 (207.46.45.238)  126.775 ms  130.911 ms  127.942 ms
 8  ge-5-3-0-0.bl2-64c-1b.ntwk.msn.net (207.46.46.187)  124.992 ms  125.343 ms  129.014 ms
 9  xe-0-0-2-0.bay-96c-1a.ntwk.msn.net (207.46.33.74)  187.679 ms  188.217 ms  188.050 ms
10  xe-0-1-0-0.bay-96c-1b.ntwk.msn.net (207.46.40.229)  198.162 ms  188.878 ms  187.886 ms
11  10.22.40.1 (10.22.40.1)  187.464 ms  187.716 ms  188.000 ms
12  64.4.11.42 (64.4.11.42) [open]  187.054 ms  187.536 ms  187.790 ms

Цель была достигнута.


четверг, 14 февраля 2013 г.

Логи cisco пишем в syslog



Сначала подключаемся к маршрутизатору и:
#logging source-interface vlan1
#logging 192.168.1.1   куда пересылать логи
#logging facility local7  указываем метку логирования, что бы потом можно было отлавливать через syslog
#logging trap debugging   здесь можно после слова trap задать, что именно хотите логировать

Идем в /etc/syslog.conf и добавляем:
local7.*                                        /var/log/cisco.log

среда, 13 февраля 2013 г.

Управление конфигурацией CISCO


Управление конфигурацией маршрутизаторов CISCO

Достаточно большая тема, но крайне необходимая.

Чтобы посмотреть текущую конфигурацию:
R# show running-config
Чтобы посмотреть сохраненную конфигурацию:
R#show startup-config
Сохранение текущей конфигурации:
R# write memory
Но это уже устаревшая команда, хотя для совместимости пока еще работает.
Более актуальный вариант:
R# copy running-config startup-config
или даже:
R# copy run start

вторник, 12 февраля 2013 г.

Точное время на маршрутизаторах CISCO


Протокол NTP использует протокол UDP, 123 порт.
По NTP передается время только в формате UTC, а каждая зона настраивается уже на железке.

Заходим в режим глобальной конфигурации и:
ntp server 192.168.1.1
где 192.168.1.1 это наш сервер точного времени.

Проверяем:
show ntp associations
Звездочка напротив ip нашего ntp сервера говорит, что связь установлена.

Если все синхронизировалось, то это сразу можно увидеть набрав:
show ntp status

Осталось только прописать нужную часовую зону. Для этого заходим в режим глобальной конфигурации и:
clock timezone EET 2
В данном случае устанавливаем часовую зону для Киева.

Проверяем:
sh clock

Если все было сделано правильно, то результат будет достигнут.

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

postfix/postqueue fatal Cannot flush mail queue


Если когда то использовался postfix, а потом был отключен, то в логах каждый день можно увидеть:
Feb 6 02:02:00 BSD postfix/postqueue[11985]: fatal: Cannot flush mail queue - mail system is down

daily_queuerun_enable="NO" в /etc/periodic.conf устраняет эту проблему.
Если periodic.conf нет, можно спокойно его создать.

воскресенье, 10 февраля 2013 г.

DNS и Cisco


По умолчанию маршрутизаторы CISCO при вводе любого слова пытаются провести DNS разрешение.
R1#grad
Translating "grad"...domain server (255.255.255.255)

Translating "grad"...domain server (255.255.255.255)
 (255.255.255.255)
% Unknown command or computer name, or unable to find computer address

Существует несколько способов избавиться от такого поведения.

Способ 1 - Просто отключаем трансляцию имен
R1(config)#no ip domain lookup

Способ 2 - Включаем DNS форвардинг
Добавляем DNS серверы
#ip name-server 8.8.8.8
Включаем собственно форвард
#ip dns server

суббота, 9 февраля 2013 г.

Бесконечная смена MAC адреса в /var/log/messages


Как остановить бесконечные сообщения в
tail -f /var/log/messages
Apr  9 16:41:18 proxy kernel: arp: 192.168.1.7 moved from 00:06:5b:f7:67:1b to 00:06:5b:f7:65:1c on em0
Apr  9 16:41:18 proxy kernel: arp: 192.168.1.7 moved from 00:06:5b:f7:65:1c to 00:06:5b:f7:67:1b on em0
Apr  9 16:41:22 proxy kernel: arp: 192.168.1.7 moved from 00:06:5b:f7:67:1b to 00:06:5b:f7:65:1c on em0
Apr  9 16:41:22 proxy kernel: arp: 192.168.1.7 moved from 00:06:5b:f7:65:1c to 00:06:5b:f7:67:1b on em0
Apr  9 16:41:28 proxy kernel: arp: 192.168.1.7 moved from 00:06:5b:f7:67:1b to 00:06:5b:f7:65:1c on em0
Apr  9 16:41:28 proxy kernel: arp: 192.168.1.7 moved from 00:06:5b:f7:65:1c to 00:06:5b:f7:67:1b on em0

Если известна причина их появления (например транк на винде), то можно отключить их появление:
sysctl net.link.ether.inet.log_arp_movements=0

четверг, 7 февраля 2013 г.

Обновление Cisco IOS


Рано или поздно наступит тот момент, когда придется обновлять IOS на маршрутизаторе.
Или только что купленный модуль не будет определяться, или потребуются дополнительные фичи, которых просто нет в старой прошивке.

среда, 6 февраля 2013 г.

вторник, 5 февраля 2013 г.

Hacking Cisco router


Внезапно вы стали счастливым обладателем маршрутизатора CISCO.
Скорее всего устройство б.у. и его кто-то уже настраивал и использовал.
Для начала подключаемся к нему с помощью db9-rj45 кабеля.

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

Обновление прошивки HP ProCurve


Сначала нужно запустить TFTP сервер. Их множество, ничего сложного они не представляют.
Скачать с сайта HP прошивку для конкретной модели коммутатора.
Скопировать .swi файл прошивки в корень TFTP сервера.
Подключится к коммутатору.
Набрать show flash.
И посмотреть на все текущие прошивки.
Далее:
copy tftp flash <ip адрес TFTP сервера> <полное название прошивки вместе с расширением .swi> pri
Прошивка загрузится и установится как первичная.
Затем:
boot sys flash pri
Уходим на перезагрузку с использованием свежезагруженной прошивки.
После этого опять логинимся.
Набираем show flash, чтобы убедиться что все прошло успешно.
Дело сделано.

суббота, 2 февраля 2013 г.

Быстрая замена строк

Возникла необходимость заменить ip адрес в конфиге ipnat.
Всего примерно 200 строк.
Решение очень простое и эффективное - используем sed.
Текущий ip адрес 82.x.x.x, новый - 91.y.y.y
sed 's/82.x.x.x/91.y.y.y/g' ipnat.rules > ipnat.new
Затем просто mv ipnat.new ipnat.rules и задача решена.

Но как быть если нужно заменить ip адрес вместе с маской - 192.168.1.1/24 ?
В этом случае придется заменить слэши самого sed на знак % и все произойдет.
sed 's%192.168.1.1/24%192.168.2.2/32%g' ipnat.rules > ipnat.new

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

portsnap fetch failed

Внезапно перестал работать portsnap:

portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 6 mirrors found.
Fetching public key from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot tag from ec2-eu-west-1.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Sun Jan 13 02:05:27 EET 2013:
5de8937999abb5b7ff1696c145a4aa637bdc2bd8ac0cb7  0% of   67 MB    0  Bps
fetch: transfer timed out

Решил проверить все ли в порядке:

host -t srv _http._tcp.portsnap.freebsd.org
_http._tcp.portsnap.freebsd.org is an alias for eu-west._http._tcp.portsnap.freebsd.org.
eu-west._http._tcp.portsnap.freebsd.org has SRV record 93 10 80 isc.portsnap.freebsd.org.
eu-west._http._tcp.portsnap.freebsd.org has SRV record 1 10 80 ec2-eu-west-1.portsnap.freebsd.org.
eu-west._http._tcp.portsnap.freebsd.org has SRV record 2 10 80 your-org.portsnap.freebsd.org.
eu-west._http._tcp.portsnap.freebsd.org has SRV record 4 10 80 ec2-ap-northeast-1.portsnap.freebsd.org.
eu-west._http._tcp.portsnap.freebsd.org has SRV record 4 10 80 ec2-ap-southeast-1.portsnap.freebsd.org.
eu-west._http._tcp.portsnap.freebsd.org has SRV record 4 10 80 ec2-sa-east-1.portsnap.freebsd.org.

Все вроде правильно.
Работает ли вообще fetch:

fetch -vvv ftp://ftp.univ.kiev.ua/Doc/rfc/rfc/rfc2131.txt
scheme:   [ftp]
user:     []
password: []
host:     [ftp.univ.kiev.ua]
port:     [0]
document: [/Doc/rfc/rfc/rfc2131.txt]
---> ftp.univ.kiev.ua:21
looking up ftp.univ.kiev.ua
connecting to ftp.univ.kiev.ua:21
...
opening data connection
initiating transfer
>>> RETR rfc2131.txt
<<< 150 Opening BINARY mode data connection for rfc2131.txt (113738 bytes)
remote size / mtime: 113738 / 860014800
rfc2131.txt                                   100% of  111 kB  763 kBps
Waiting for final status
<<< 226 Transfer complete

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

В итоге удалось запустить только явно указав сервер:

portsnap -s isc.portsnap.freebsd.org fetch
Looking up isc.portsnap.freebsd.org mirrors... none found.
Fetching public key from isc.portsnap.freebsd.org... done.
Fetching snapshot tag from isc.portsnap.freebsd.org... done.
Fetching snapshot metadata... done.
Fetching snapshot generated at Sun Jan 13 02:05:27 EET 2013:
5de8937999abb5b7ff1696c145a4aa637bdc2bd8ac0cb7100% of   67 MB  138 kBps 00m00s
Extracting snapshot... done.

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


воскресенье, 13 января 2013 г.

Network Configuration Changes in FreeBSD 9.0

C выходом FreeBSD 9.0 (январь 2012 года) немного изменился формат записи сетевых настроек в rc.conf в связи с реорганизацией rc скриптов.

Если раньше было примерно так:

ifconfig_em0="192.168.0.1 netmask 255.255.255.0"

То сейчас уже нужно:

ifconfig_em0="inet 192.168.0.1 netmask 255.255.255.0"

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

ifconfig_em0_alias0="inet 192.168.0.10 netmask 255.255.255.255"


Все это скорее всего было сделано для более удобной конфигурации IPv6.

Старые формы записи все еще работают для обратной совместимости, но это не означает что так будет всегда.

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

High resolution console

В отличие от линукса, FreeBSD несколько по другому подходит к организации системной консоли (syscons).

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

До FreeBSD версии 9.0 для этого требовалось пересобирать ядро, предварительно добавив туда две опции:


options   VESA            # монолитно собрать с модулем VESA

options   SC_PIXEL_MODE   # syscons начнет взаимодействовать с
                          # пикселями а не с текстом

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

echo 'vesa_load="YES"' >> /boot/loader.conf

А теперь, начиная с версии 9.0, стандартное GENERIC ядро уже собрано с этими опциями.

Остается только запустить 

vidcontrol -i mode 
чтобы узнать какие разрешения поддерживаются, затем протестировать выбранный режим

vidcontrol MODE_280

и если все устраивает добавить его в /etc/rc/conf

echo 'allscreens_flags="MODE_280"' >> /etc/rc.conf

После этого системная консоль становится вполне удобной.

Кроме того есть возможность применить более высокое разрешение во время загрузки, получив вывод сообщений ядра в более компактном виде.
Для этого нужно в /boot/device.hints к стандартным флагам драйвера syscons добавить значение 0x80:

hint.sc.0.flags="0x180"

и дописать режим, без префикса "MODE"

hint.sc.0.vesa_mode="280"


Естественно не забыв при этом убрать allscreens_flags из /etc/rc.conf

вторник, 8 января 2013 г.

Must-Have Android Apps

По мере тестирования материал будет пополняться и обновляться.

Первым в списке идет Ghost Commander
Самый удобный файловый менеджер, создан под влиянием Midnight Commander'a
Умеет просматривать/редактировать файлы, распаковывать архивы, отправлять файлы по bluetooth, ходить по самбе и ftp.
Бесплатный и без рекламы.

Android придерживается "славной" традиции смартфонов и идет без какого-либо текстового редактора в комплекте.
В качестве быстрого и легковесного редактора можно поставить Notepad+
Поддерживает множество кодировок, бесплатен и без рекламы.
Для тех кто пишет код пригодится DroidEdit - подсвечивает синтаксис C, C + +, C #, Java, HTML, CSS, JavaScript, Python, Ruby, Lua, LaTeX, SQL, может сразу запускать скрипты и показывать результат html в браузере.
Платный, есть бесплатная версия с рекламой.

Чтение pdf файлов.
Самый популярный в этой области ezPDF Reader
Когда-то была неплохая программа судя по всему. Сейчас это комбайн размером 11 Мб, с функциями проигрывания мультимедиа в pdf. Платный, тяжелый, часто выходят обновления.
Поэтому я остановился на RepliGo PDF Reader
Легкий (1 Мб), быстрый, есть все необходимые функции (перелистывание как пальцем так и кнопками громкости, дневной/ночной режим, возможность оставлять заметки и т.д.).
Платный.

Аудио плеер.
Лучший однозначно Poweramp
Как по количеству настроек так и по качеству воспроизведения равных просто нет.
Минус у него один - платный.
В качестве бесплатной альтернативы можно посмотреть на TTpod
Неплохо зарекомендовал себя еще на symbian. Достаточно качественный звук, функциональный эквалайзер.
Но есть и минусы - периодически выползают иероглифы, да и интерфейс не совсем логичный.

Видео плеер.
Здесь тоже только один явный лидер - MX Player
Проигрывает форматы .3gp .avi .divx .f4v .flv .mkv .mp4 .mpeg .mov .vob .wmv .webm .xvid и другие.
Поддерживает субтитры, масштабирование, аппаратное декодирование и много других фич.
Платный, бесплатная версия с рекламой.

Шифрование.
На первый взгляд программ множество, но если немного разобраться то стоящих всего 3.
Из них только одна работает без рута, и работает отлично.
Это EDS (Encrypted Data Store)
Использует промышленный алгоритм AES-256 и что самое главное полностью совместимые TrueCrypt контейнеры.
Бесплатно, без рекламы и даже не требует права на выход в Интернет.
Есть платная версия с более широким функционалом (синхронизация с dropbox, монтирование контейнера и т.д.)

SSH клиент
Выбора особого нет - используем ConnectBot
Работает стабильно, кнопками громкости можно менять размер шрифта.
Бесплатный, без рекламы.

Продолжают тему администрирования утилиты Fing и Ping&DNS
Первая - это неплохой сканер сети, а вторая - следуя своему названию умеет слать разнообразные icmp и dns запросы.
Иногда очень неплохо иметь такой инструментарий под рукой.
Обе бесплатные и без навязчивой рекламы.

Для тех кто мониторит свою сетевую инфраструктуру используя Nagios весьма кстати придется aNag
Присутствует возможность уведомлять используя индикаторы, вибрацию, звуки.
Имеет достаточно гибкие настройки. Можно повесить как виджет.
Бесплатен и без какой-либо рекламы.

А для аудита 802.11 есть замечательная программа Wifi Analyzer
Покажет все ближайшие точки, рассортирует по каналам и уровню сигнала.
Особенно доставляет возможность поиска места, где самый лучший прием выбранной сети.
Бесплатная, рекламу можно отключить в настройках.