Создание RSS-канала


RSS-канал — это простой текстовый файл. Общая структура такая:

<?xml version="1.0" ?>
<rss version="2.0">
<channel>

</channel>
</rss>

1. Определите содержимое тега channel.

Содержимое сhannel может быть одинаковым для всех RSS-каналов Вашего сайта.

Эти теги должны быть обязательно:

title: название канала, может быть таким же, как название главной страницы сайта.
link: URL сайта, например: www.891rpm.arthead.ru/.
description: описание Вашего канала, примерно 200 символов.

<channel>
 <title>One title</title>
 <link>http://www.891rpm.arthead.ru/</link>
 <description>описание Вашего канала</description>
</channel>

2. Добавьте изображение.

Это необязательно, но желательно.

Сделайте небольшое изображение (например, 88×31) в формате gif или jpg или png и сохраните в том же каталоге, что RSS файл.

url — это адрес самого изображения.
link — адрес страницы которая откроется, если кликнуть по изображению.

<image>
 <url>http://www.891rpm.arthead.ru/i/a.png</url>
 <title>Fisrt title</title>
 <link>http://www.891rpm.arthead.ru/</link>
</image>

3. Добавьте новый элемент.

Теперь мы добавим информацию о веб-странице.

Это тег item, подэлемент тега channel. В RSS-канале должен быть как минимум один такой элемент:

title: название статьи.
link: URL веб-страницы.
description: описание этой веб-страницы, около 200 символов.

<item>
<title>Master title</title>
<link>http://www.891rpm.arthead.ru/master/</link>
<description>Master test ))</description>
<guid>http://www.891rpm.arthead.ru/master/</guid>
</item>

4. Добавьте ещё несколько подобных элементов.

Можно добавить ещё несколько подобных элементов, обычно, не более 10.

5. Загрузите файл на сервер

Поместите сделанный файл rss.xml на сайт.

6. Проверка файла

Вы можете использовать интерактивный валидатор RSS-канала. Для этого существует неплохой сервис.

Вводите адрес Вашего RSS-канала и нажимаете на кнопку. Через минуту Вам выдается вся информация о проверке, все возникшие ошибки, если они есть и замечания.

7. Сделайте его доступным

Для этого надо добавить текстовую или графическую ссылку на главную сраницу Вашего веб-сайта. При клике по ссылке должен открываться Ваш файл RSS-канала.

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

<a type="application/rss+xml" href="http://www.891rpm.arthead.ru/rss.xml">
 RSS-канал этого сайта
 </a>

8. Обновление канала

При публикации новых веб-страниц на сайте, просто добавляйте в RSS-канал новые элементы и удаляйте старые, оставляя их количество неизменным (например, 10 или 15).

Пример полного файла RSS-канала.

<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
<channel>
 <title>Development on 891rpm.arthead.ru</title>
 <link>http://www.891rpm.arthead.ru/</link>
 <description>Сайт разработчика и администратора.</description>
 <language>en-ru</language>
 <copyright>2011. Copyright by 891rpm.arthead.ru</copyright>
 <image>
  <url>http://www.891rpm.arthead.ru/i/a.png</url>
  <title>First title</title>
  <link>http://www.891rpm.arthead.ru/</link>
 </image>
 <item>
  <title>Second title</title>
  <link>http://www.891rpm.arthead.ru/feed/</link>
  <description>Many, many any text's ))</description>
  <guid>http://www.891rpm.arthead.ru/feed/</guid>
 </item>
</channel>
</rss>

Как браузеры узнают, что на сайте есть RSS-канал?

Вы создали RSS-канал и сохранили его в каком-нибудь каталоге вашего сайта.
Вы должны сообщить браузеру, когда он откроет страницу вашего сайта, о наличии этого файла и его местоположении. Тогда Firefox будет показывать значок RSS-канала в адресной строке, Internet Explorer на панели команд.

Чтобы активировать их, надо добавить следующую строку в исходный код страницы, в любом месте внутри секции <head> </head>:

 <link
 rel="alternate"
 type="application/rss+xml"
 href="http://www.891rpm.arthead.ru/rss.xml"
 title="Название канала"
 />

Не забудьте заменить в URL www.891rpm.arthead.ru на имя Вашего домена и путь к Вашему файлу и его имя.

Настройка RSS-ленты в WordPress

Сегодня мы с Вами ознакомимся с настройками RSS-ленты в WordPress, а также с процессом настройки трансляции RSS-ленты на сервис FeedBurner.Com. Сервис Feedburner, позволяет собирать статистику подписчиков на  RSS-ленту блога, транслировать ее в различных форматах, организовать подписку на  обновления блога через E-Mail и многое другое.

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

Сначала необходимо зарегистрироваться на сервисе, для этого заходим на сайт FeedBurner.com, в разделе “Языки” сразу установим “Русский”, чтобы процесс настройки был понятнее и проще.

После этого мы попадаем на главную страницу сервиса с формой для прожигания RSS. В форму вводим адрес нашей RSS-ленты. Если Вы настраивали, “Постоянные ссылки” в Вашем блоге, значит адрес RSS-ленты будет выглядеть примерно так: http://test.blogmir.ru/feed/ именно этот адрес и нужно вводить в форму.

Если Вы планируете публиковать подкасты на Вашем блоге, можете установить галочку “Я подкастер!”, нажимаем кнопку “Далее”, попадаем на форму регистрации на сервисе:

После нажатия на кнопку “Activate Feed” попадаем на страницу с сообщением о том, что RSS-лента активирована, также на нам сообщают адрес нашей RSS-ленты на сервисе FeedBurner.

Адрес этот необходимо запомнить, чтобы в дальнейшем настроить переадресацию всех наших подписчиков, на  FeedBurner.

Нажимаем кнопку “Next”, страница предварительной настройки RSS-ленты, в зависимости от Ваших предпочтений, можете включать или не включать дополнительные сервисы статистики.

Нажимаем кнопку “Next”, нам сообщают что наш фид готов и уже работает, но на этом мы не остановимся, сервис FeedBurner позволяет добавить к Вашей RSS-ленте очень много различных полезных функций.

Открываем закладку “Оптимизируй”, пункт “Browser Friendly”, изменяем язык интерфейса на ClearFeed (Russian)

Не забываем сохранять настройки.

Пункт “SmartFeed” — нажимаем кнопку “Активировать”:

Переходим на закладку “Публикуй”, пункт “FeedCount”, нажимаем кнопку “Активировать”. Вы можете выбрать тип счетчика и его цвет, в поле будет сгенерирован код, который можно вставить в шаблон блога.

После того как Вы выбрали цвет и тип счетчика, нажимаем на кнопку “Сохранить”.

Открываем пункт “Подписки по электронной почте”, в списке провайдеров выбираем FeedBurner

Нажимаем кнопку “Активировать”, после этого появится окошко с кодом формы для подписки на  RSS-ленту по E-Mail, в списке необходимо выбрать русский язык и в самом низу нажать кнопку “Сохранить”

Полученный код можно вставить в шаблон блога для отображения формы подписки на  RSS через E-Mail.

На этом настройку RSS-ленты можно считать законченной.

Теперь для настройки автоматической переадресации Ваших подписчиков на RSS-ленту, настроенную на FeedBurner, необходимо установить и настроить плагин WordPress, который будет этим заниматься.

Скачиваем плагин, загружаем его на сервер в папку /wp-content/plugins/ и активируем в панели администрирование блога, раздел “Плагины.

Переходим в раздел “Параметры” — “FeedBurner”, в поле вводим адрес, который нам выдал FeedBurner, должно получится вот так:

Нажимаем кнопку “Save”, теперь все, кто будут обращаться к Вашему стандартному адресу RSS-ленты, вида http://myblog.com/feed/ будут автоматически переадресовываться на сервис FeedBurner для подписки.

Если у Вас что-то не получилось, не стесняйтесь задавать вопросы в комментариях к этому посту.

Работа с tcpdump

Tcpdump чрезвычайно удобный сетевой анализатор, очень помогающий в работе как сетевым администраторам, так и безопасникам. Естественно что для получения максимальной информации при работе с tcpdump, просто необходимо иметь представления о стеке протоколов TCP/IP. Для удобства можно использовать более удобные и интеллектуальные программы, например Wareshark, но часто возникают ситуации когда на тестируемую машину не представляется возможным установить дополнительные сервисы, и тогда tcpdump просто незаменим, не будит же админ, ради анализа пакетов, ставить на unix’овый сервак X-Windows тем более что в большинстве unix’овых систем, утилита tcpdump идет по умолчанию.
Понимание протокола TCP/IP дает широкое пространство для использование анализатора и устранения неисправностей и неполадок в работе сети, за счет разбора пакетов. Поскольку оптимальное использование данной утилиты требует хорошего понимания сетевых протоколов и их работы, то получается забавная ситуация, в которой инженеру в любом случае необходимо знать и понимать механизмы передачи данных в сети. т.ч. tcpdump полезна во все отношениях: как устранения неисправностей, так и самообразования.

Ниже приводятся несколько опций, которые помогут наиболее полно и подробно использовать эту утилиту, тем более что все эти опочки и ключики довольно легко забываются, и данные примеры весьма полезны, для освежевания памяти.
Первый используемый ключик -n который запрещает попытки преобразования адресов в доменные имена, тем самым выдавая нам чистые IP адреса с портами.
Второй это -X который задает для каждого пакета вывод как hex (шестнадцатеричная система) так и ASCII содержимого пакета.

И последняя опция это -S которая заменяет вывод относительной TCP нумерации, на абсолютную. Смысл в том, что при относительной нумерации некоторые проблемы могут скрыться от вашего внимания.

Нужно понимать, что основное преимущество tcpdump перед другими утилитами заключается в том, что в ней возможен подробный и ручной разбор пакетов. Также нужно помнить что по умолчанию tcpdump использует только первые 68 байт пакета, т.ч. если необходимо видеть больше, то следует использовать ключ -s number , где number количество байт которые следует захватить. В случае задания number 0 , произойдет полный захват пакета, поэтому лучше использовать значение 1514, что даст полный захват стандартного, для сетей Ethernet, пакета.

Список наиболее часто используемых ключей:

  • -c : задается проверка размера файла захвата перед каждой очередной записью захваченного пакета, если размер больше, то файл сохраняется и запись идет в новый файл
  • -e : выводится ethernet заголовок (канальный уровень) в каждой строке дампа
  • -i any : прослушивание всех интерфейсов, на случай если вам необходим весь трафик.
  • -n : запрещает преобразование адресов в доменные или символьные имена
  • -nn : запрещает преобразование адресов и портов в доменные или символьные имена
  • -q : Красткий вывод информации, за счет уменьшения вывода информации о протоколе.
  • -X : выводит как hex так и ASCII содержимое пакета
  • -v, -vv, -vvv : задает вывод дополнительной информации о захваченных пакетах, что дает возможность более широкого анализа.

Несколько примеров для использования:

# Стандартный вывод пакетов
 tcpdump -nS
 # Расширенный стандартный вывод
 tcpdump -nnvvS
 # Глубокий разбор пакета
 tcpdump -nnvvXS
 # Наиболее подробная информация о трафике
 tcpdump -nnvvXSs 1514

Выражения позволяют производить более целевое сканирование и задавать типы трафика. Умение использовать выражения делает tcpdump весьма продуктивным инструментом, в рукам сисадмина. Существует три основных типа выражений: type, dir, and proto.

Опции выражения type бывают host, net и port.

Для выражения направления задаваемого dir существующие опции src, dst, src or dst, и src and dst.

Несколько стандартных выражений:

host // анализ трафика на основе IP адреса ( также работает с символьными именами, если не задано -n)

 tcpdump host 1.2.3.4

src, dst // анализ трафика только для определенного назначения или передатчика

 tcpdump src 2.3.4.5
 tcpdump dst 3.4.5.6

net // захват трафика принадлежащего определенной сети

 tcpdump net 1.2.3.0/24

proto // работает с tcp, udp, и icmp. Нужно помнить что proto не упоминается

 tcpdump icmp

port // анализ трафика с определенного порта (входящего или исходящего)

 tcpdump port 3389

src, dst port // фильтр базируется на входящем или исходящем порту

 tcpdump src port 1025
 tcpdump dst port 3389

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

AND
and or &&
OR
or or ||
EXCEPT
not or !

TCP трафик с ресурса 10.15.123.33 с портом назвачения 3379:

# tcpdump -nnvvS tcp and src 10.15.123.33 and dst port 3379

Трафик переходящий из сети 192.168 с назначением на сети 10 или 172.16:

# tcpdump -nvX src net 192.168.0.0/16 and dst net 10.0.0.0/8 or 172.16.0.0/16

Non-ICMP трафик с точкой назначения 192.168.0.2 и из сети 172.16:

# tcpdump -nvvXSs 1514 dst 192.168.0.2 and src net 172.16.0.0/16 and not icmp

Трафик с хостов Eros or Ares , но не идущий на стандартный SSH порт (для данного выражения требуется разрешение имен):

# tcpdump -vv src eros or ares and not dst port 22

Как видно из приведенных примеров, мы можем строить любые выражения, для любых целей. Также, используя сложный синтаксис, из анализа мы можем исключать любой тип трафика.

Также следует помнить о том, что мы можем строить запросы, включающие группы и пулы опций, заданных в одном запросе. Но для того чтобы утилита tcpdump обращала на них внимание их нужно помещать в скобки, беря выражение в одиночные кавычки:
Трафик идущий с хоста 10.0.2.4 на порты назначения 3379 или 22:

 # tcpdump ’src 10.0.2.4 and (dst port 3379 or 22)’

Также возможно производить фильтрацию на основе TCP флагов, например для вычленения SYN или RST пакетов:

Анализировать все URG пакеты:

 # tcpdump ‘tcp[13] & 32 != 0′

Анализировать все ACK пакеты:

 # tcpdump ‘tcp[13] & 16 != 0′

Анализировать все PSH пакеты:

 # tcpdump ‘tcp[13] & 8 != 0′

Анализировать все RST пакеты:

 # tcpdump ‘tcp[13] & 4 != 0′

Анализировать все SYN пакеты:

 # tcpdump ‘tcp[13] & 2 != 0′

Анализировать все FIN пакеты:

 # tcpdump ‘tcp[13] & 1 != 0′

Анализировать все SYN-ACK пакеты:

 # tcpdump ‘tcp[13] = 18′

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

 tcpdump ‘tcp[13] & 2 != 0′

– просмотр и сравнение 13 и 2 байтов заголовка, на условие что данные не равны 0, т.е. заданы 1.

Анализ специализированного трафика:

Анализировать весь IPv6 трафик:

 # tcpdump ip6

Анализировать весь трафик с имеющимися флагами SYN и RST:

 # tcpdump ‘tcp[13] = 6′

Анализировать весь трафик с имеющимся “evil bit”:

 # tcpdump ‘ip[6] & 128 != 0′

Естественно что приведенные примеры не могут охватить всю полноту использования столь мощного инструмента как tcpdump.

Решение проблем при размещении Cisco 7942G за NAT’ом

Весьма проблематично заставить работать телефон Cisco 7942 или Cisco 7962, если он находится за NAT-ом. Телефон не может выполнить регистрацию, а без этого не получится ни звонить, ни принимать звонки.

Проблема вызвана некоторыми особенностями в реализации SIP-стека на телефонах, которые интеграторы телефонии на Asterisk называют багами, а сами Cisco-разработчики называют фичей. Речь идет о инициирующих SIP-портах, которые начинаются с 49000.

При подключении из-за NAT, сервер Asterisk считает пир nat=yes устройством, из-за чего использует симметричный SIP/RTP и шлет ответы ровно на тот порт, с которого пришло соединение. Но на деле сама Cisco 7942 ждет ответа не на порту отправления, а на порту 5060, а точнее, на порту, указанном в <voipControlPort>. Из-за различия портов связь установить не удается, а сама Cisco 7942 упорно отвечает сообщениями типа ICMP Port Unreachable.

Решение проблемы:

1. (Опционально) Указать в теге <voipControlPort> порт, отличный от 5060. Например, 5091. Это связано с тем. что в дальнейшем мы этот порт будем пробрасывать на роутере.

2. Закрепить Cisco 7942 на статическом IP-адресе, либо присвоить статическую аренду на DHCP-сервере.

3. Прописать секцию
<natEnabled>false</natEnabled>
<natAddress></natAddress>

4. На сервере Asterisk в настройках экстеншена прописать опцию nat=no

5. На роутере, который пускает телефон в Интернет, прописать статический проброс UDP порта, который у вас указан в <voipControlPort> на внутренний IP телефона Cisco 7942G. Как правило, эта секция в веб-интерфейсе роутера называется «Virtual Server» или «NAT 1:1».

6. Перезагрузить телефон нажатием Settings-> **#**.
Убедиться, что телефон работает. Если чуда не случилось, то поможет разобраться в проблеме tcpdump. Возможно, будет иметь смысл игра с опиями nat=no и nat=never

* — Надо заметить, что IP может быть и динамическим. В этом случае нужно будет настроить роутер так, чтобы он обновлял динамическую DNS-запись, например, на сервисе DynDNS. Тогда в это поле вписывается FQDN-запись вида <natAddress>somename.dyndns.org</natAddress>. При этом нужно учитывать, что телефон резолвит это имя в IP всего один раз, при старте телефона. Если внешний IP изменится, телефон об этом не узнает, из-за чего будут наблюдаться проблемы односторонней слышимости или отсутствия регистрации.

 

Asterisk Call Forwarding and Feature Codes

To activate:
Dial * 72

1. Listen for voice prompt.
2. Dial the desired telephone number you wish your calls forward to followed by #.
3. Listen for confirmation.
Call Forwarding is established.

To deactivate:
1. Press *73.
2. Listen for confirmation.

The following list of features is the most common set of default codes found on Asterisk and used by answering service clients.  Because all feature codes may be customized it is recommended that you check with your PBX administrator to verify the correct codes for your system.

 

Handset Feature Code
Action
*30
Blacklist a number
*31
Remove a number from the blacklist
*32
Blacklist the last caller
*52
Call Forward No Answer/Unavailable Activate
*53
Call Forward No Answer/Unavailable Deactivate
*72
Call Forward All Activate (Activate Answering Service)
*73
Call Forward All Deactivate (Deactivate Answering Service)
*74
Call Forward All Prompting Deactivate
*740
Call Forward Toggle
*90
Call Forward Busy Activate
*91
Call Forward Busy Deactivate
*92
Call Forward Busy Prompting Deactivate
*70
Call Waiting — Activate
*71
Call Waiting — Deactivate
*34
Perform dictation
*35
Email completed dictation
*76
DND Toggle
*78
DND Activate
*79
DND Deactivate
*21
Findme Follow Toggle
*54
User Intercom Allow
*55
User Intercom Disallow
*97
My Voicemail
*98
Dial Voicemail

Счетчик монтирований fsck

Не многие знают, что в Linux есть такой замечательный счетчик монтирований как fsck. Если очередной вызов fsck прекращает загрузку, это значит, что либо есть ошибки в файловой системе и fsck нуждается в Вашем вводе для продолжения, либо Вы просто не дождались отработки fsck, которая требует времени. Загрузка без экрана Вам все это покажет. После успешного завершения fsck проблемы быть уже не должно, разве что Ваша система повреждена и хронически портит файловую систему.

Один из способов обойтись без автоматического запуска fsck заключается в регулярном запуске его вручную, чтобы эти 27 загрузок никогда не выполнялись без проверки. Вы также можете использовать tune2fs для установки интервалов между проверками. Команды

# tune2fs -c 0 /dev/что_то
# tune2fs -i 4w /dev/что_то

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

Оптимизация Linux

Данная заметка состоит из нескольких этапов:

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

Оптимизация рабочего окружения:

Этот пункт зависит от того DE(desktop environment), которым Вы пользуетесь. В данном случае речь пойдёт о GNOME.
Чтобы разгрузить машину от момента ввода данных в GDM до загрузки рабочего стола, можно отключить ненужные службы в следующих местах:
System -> Preferences -> Sessions — здесь можно отключить те сервисы, которые стартуют непосредственно при входе с текущего аккаунта
System -> Administration -> Services — а здесь можно отключить сервисы системного уровня

совет. Если Вас достал синий пустой экран в окне мультимедиа-проигрывателя, которое появляется каждый раз при перетаскивании этого окна, запустите в терминале gstreamer-properties и на вкладке Video в Default Output — Plugin выберите X Window System (no XV)

совет. Также в некоторых источниках для ускорения запуска приложений рекомендуют сделать следующее: откройте на редактирование с правами суперпользователя файл /etc/fstab и добавьте строку:
127.0.0.1 localhost.localdomain localhost ИМЯ_ВАШЕГО_ХОСТА
Имя хоста можно узнать, запустив в терминале hostname.

Оптимизация сервисов и служб

Через пункт Services доступны не все службы, установленные в системе.
Установите пакет sysv-rc-conf — данный пакет облегчает включение/отключение служб для различных уровней запуска (runlevels)
Запустите его — sudo sysv-rc-conf и настройте его по Вашему вкусу — для каждого уровня запуска.

совет. Отключайте/включайте только те службы и сервисы, назначение и функционирование которых Вам известно. В противном случае, Вы рискуете остаться без жизненно необходимых системе служб.

примечание. Значение и смысл уровней запуска примерно таковы
0 — выполняет скрипт при выключении системы
1/S — однопользовательский режим (single user mode) аналогичен Safe Mode в Windows.
2 — многопользовательский режим (multiuser mode)
3 — зарезервированно (многопользовательские режимы)
4 — зарезервированно (многопользовательские режимы)
5 — зарезервированно (многопользовательские режимы)
6 — выполнение при при перезагрузки

Оптимизация файловых систем накопителей

Так как во многих дистрибутивах ОС GNU/Linux стандартом де-факто является файловая система ext3, начнём с утилиты tune2fs — утилиты для настройки файловых систем ext-семейства.

примечание. Так как tune2fs является системной утилитой, все манипуляции с накопителями, выполняемые с её помощью, требуют привелегий суперпользователя.

Для начала можно установить метки имеющихся разделов — иногда это бывает очень полезно:
sudo tune2fs -L HOME /dev/sda1
sudo tune2fs -L ROOT /dev/sda2

справка. по умолчанию, при форматировании раздела в ext3, на разделе резервируется 5% от всего объёма для использования приложениями, выполняющихся от имени суперпользователя, этого пространства.
Чтобы изменить это значение, используйте ключи -m X или -r Y, где X — количество процентов резервируемого объёма от общего пространства, а Y — соответствующее количество _блоков_ такого пространства. Например, чтобы установить резерв до 1го %, нужно выполнить:
tune2fs -m 1 /dev/sda2
А чтобы полностью отключить резервирование (это особенно актуально для /home где нет и не может быть файлов суперпользователя), нужно выполнить:
tune2fs -r 0 /dev/sda1 или tune2fs -m 0 /dev/sda1
Также среди полезных ключей:
-с N, который устанавливает количество монтирований, после которых будет произведена проверка ФС утилитой fsck
-C N, который устанавливает _текущее_ количество монтирований, сбрасывая предыдущее значение

совет. Если у Вас появились подозрения на дефекты в ФС, загрузитесь с любого LiveCD и выполните с правами суперпользователя:
fsck -fyv /dev/sdXY
Данное сочетание ключей автоматически проверит файловую систему(-f) на накопителе sdXY, выведет информацию о её состоянии(-v) и, в случае обнаружения ошибок, автоматически попытается исправить их(-y).

Настройка журналирования.
Файловая система ext3 поддерживает следующие режимы журналирования:
journal — все данные и метаданные о состоянии ФС заносятся в журнал перед записью — надёжно/медленно;
ordered — (используется по умолчанию) приоритет журналирования отдаётся метаданным, которые помогут восстановить целостность файловой системы в случае сбоя, но не обязательно сами данные — оптимальное соотношение скорости/надёжности;
writeback — журналирование как данных, так и метаданных осуществляется только после записи — ненадёжно/быстро;

внимание! операция изменения типа журнала корректно применима только для отмонтированного раздела; если планируется изменять корневой или домашний раздел, он должен быть отмонтирован; для этого можно воспользоваться практически любым LiveCD-дистрибутивом.
Настройка журналирования через tune2fs происходит следующим образом:
tune2fs -O has_journaled -o journal_dataТИП /dev/sdXY где ТИП = <> (journal), , , а XY — буква и цифра раздела.
Например, установим режим journal для /home и writeback для /:
tune2fs -O has_journaled -o journal_data /dev/sda1
tune2fs -O has_journaled -o journal_data_writeback /dev/sda2

Не забудьте после этого добавить соответствующую информацию в /etc/fstab:
/dev/sda1 / ext3 data=journal …
/dev/sda2 / ext3 data=writeback …

Индексирование директорий.
Также возможно включение режима, при котором, в случае, если иерархия каталогов раздела достаточно громоздка, скорость навигации по разделу немного увеличится.
За это отвечает режим индексирования каталогов. Чтобы включить его, выполните следующую команду:
tune2fs -O dir_index /dev/sda1
а чтобы включить индексирование уже существующих каталогов, выполните:
e2fsck -D /dev/sda1

Конфигурирование файловых систем через /etc/fstab
Через настройку данного файла также возможна некоторая оптимизация. Вот некоторые, достаточно полезные опции для файловых систем семейства ext2/3:
acl — поддержка списка управления доступом POSIX
user_xattr — включение расширенных атрибутов файлов для использования при индексировании
noatime/nodiratime — отключение записи времени последнего доступа для файлов/каталогов (не рекомендуется применять для корневого раздела, т.к. работа некоторых программ полагается на это время)
barrier=1 — команда очистки кэша
commit=N — запись данных и метаданных каждые N секунд. По умолчанию N=5.
async(по умолчанию)/sync — весь ввод/вывод данных файловой фс происходит а/синхронно. Синхронный режим не рекомендуется для устройств с ограниченным циклом записи (flash/SSD)
dirsync — все обновления данных, связанные с каталогами, происходят синхронно.

Значения dump и pass
Запись используется утилитой dump для того чтобы решить, когда делать резервную копию. Будучи установленной (хотя во множество дистрибутивов dump по умолчанию не входит), dump проверяет эту запись при загрузке и использует число, чтобы решить, надо ли делать резервную копию. Возможные значения поля — 0 и 1. Если 0, то dump игнорирует файловую систему, если 1, то dump сделает резервную копию.
Запись используется утилитой fsck при загрузке. В зависимости от числа определяется порядок проверки файловой системы. Возможные значения:
0 — не проверять
1 — высший приоритет
2 — приоритет ниже по сравнению с 1

Настройка временных файловых систем.
Если корневой раздел находится на накопителе с ограниченным числом циклов записи (flash/SSD), но при этом Вы не используете падкие на оперативную память приложения и Вам её хватает, то имеет смысл разместить временные разделы системы прямо в оперативной памяти. Для этого в /etc/fstab достаточно добавить следующие строки:
tmpfs /tmp tmpfs defaults,noatime,nodiratime 0 0
tmpfs /var/tmp tmpfs defaults,noatime,nodiratime 0 0
tmpfs /var/log tmpfs defaults,noatime,nodiratime 0 0

Установка параметра интенсивности обращения к swap’у.
За тонкую подстройку ядра и его параметров при работе отвечает служба sysctl. У неё есть достаточно много опций, но в данный момент рассмотрим только одну из всех возможных: vm.swappiness=N, где N — число от 0 до 100, обозначающее интенсивность обращения к swap-разделу. Чтобы сохранить изменения и при следующем запуске, добавьте строку vm.swappiness=N в конец файла /etc/sysctl.conf и сохраните изменения. Оптимальным считается N в районе от 15 до 40.

Оптимизация ядра

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

Каноническая упрощённая схема загрузки ядра Linux приблизительно такова. Сначала грузится vmlinuz, который содержит базовый образ ядра. Потом initrd «передаёт» загружаемому ядру из файла initrd те модули, которые ему необходимы, чтобы дотянуться до корневой файловой системы и подключить модули уже из /lib/modules. И после этого, ядро, со всеми подключёнными внешними модулями, начинает запускать сервисы.
Однако, если пересобрать ядро без поддержки initramfs, но включить все те модули, которые необходимы ядру, чтобы «дотянуться» до корневого раздела, в само ядро (т.е. не «модулем», а вкомпилировать — за это отвечает опция «y» вместо «m» в конфигурационном файле ядра), то этап загрузки, включающий запуск initrd системе не понадобится — ядро сможет загружаться без его участия и, надо сказать, в разы быстрее. Кроме того, пересборка ядра — достаточно хорошая возможность во-первых, узнать лучше своё имеющееся оборудование, во-вторых, чуть лучше разобраться во внутреннем устройстве работы ядра, в-третьих, получить ядро, заточенное под Ваше оборудование и Ваши нужды без кучи лишних дополнительных модулей, поддерживающих ненужное экзотическое оборудование.
Далее не последует подробнейшей инструкции по компиляции и установке ядра; необходимые сведения Вы можете найти здесь:
http://linux4u.jinr.ru/docs/add04/kernel-2.6-install-2.0.html
http://mydebianblog.blogspot.com/2006/12/blog-post_20.html

Но некоторые советы я всё же дам:

-во время конфигурирования ядра Вам наверняка не раз понадобиться узнать подробные сведения о том или ином оборудовании, чтобы включить поддержку только этого оборудования и отключить модули, отвечающие за оборудование, которого у Вас нет и не предвидится. В этом могут помочь следующие утилиты:
*hwinfo — выводит информацио об оборудовании
*dmidecode — выводит информацию об оборудовании, доступную через BIOS
*lspci — выводит информацию об оборудовании, подключённом через шину PCI
*lsusb — выводит информацию об оборудовании, подключённом через шину USB
*lshw — выводит информацию об оборудовании, подобно hwinfo
*hdparm — выводит информацию о жёстких дисках и позволяет их настраивать
*hddtemp — выводит информацию о температуре жёстких дисков
*smartctl — выводит информацию о жёстких дисках с помощью технологии S.M.A.R.T.
*discover — выводит информацию об оборудовании, подобно hwinfo
*sysctl — выводит информацию о службе ядра
*hardinfo — GTK-утилита, подобная hwinfo и подобным.

Например, чтобы узнать информацию об установленных модулях оперативной памяти, выполните:
sudo dmidecode -t memory
А чтобы, например, узнать модель установленной видеокарты, выполните:
hwinfo —gfxcard
За дополнительной информацией просьба обращаться в соответствующие man-страницы.

-чтобя ядро наиболее эффективно использовало всю установленную оперативную память, добавьте в строке загрузчика (GRUB/LILO) параметр ядра mem=M, где — в мегабайтах, точное количество имеющейся оперативной памяти

-если Вас по какой-то причине не устраивает разрешение на виртуальных терминалах tty[1-6] по умолчанию, то за его настройку отвечает параметр ядра vga; чтобы установить нужное разрешение, добавьте vga=XYZ, где XYZ — необходимый режим разрешения; таблица режимов с их кратким описанием доступна здесь — http://en.wikipedia.org/wiki/VESA_BIOS_Extensions#Linux_video_mode_numbers
примечание. На некоторых машинах для корректной работы ядра с параметром vga ядро должно быть скомпилированно (причём в некоторых случаях поддержки модулем не достаточно — необходимо включение _не модулем_) с поддержкой видеодрайвера vesa и видеорежима framebuffer.

-также, для уменьшения скорости загрузки самого ядра, добавьте в строке загрузчика параметр ядра clocksource=hpet.
справка. Параметр clocksource отвечает за то, какой тип таймера будет использоваться ядром для отсчитывания своих тактов. На данный момент, помимо hpet, существуют tsc и 8254, но т.к. hpet является более «современным», его работа может (конечно, в зависимости от оборудования) уменьшить скорость загрузки

-чтобы дать ядру собственное имя, отредактируйте Makefile и в самом начале исправьте строчки типа
EXTRAVERSION = .3
NAME = Err Metey! A Heury Beelge-a Ret!
на что-то вроде
EXTRAVERSION = -3.1-mykernel
NAME = GNU/Linux

-при конфигурировании ядра, чтобы после запуска оно смогло дотянуться до корневого раздела без init-образа, нужно отключить «Device drivers -> ATA/ATAPI/MFM/RLL support» и включить «Device drivers -> Serial ATA (prod) and Parallel ATA (experimental) drivers» (не модулем), потом зайти в этот раздел и включить поддержку Вашего чипсета/контроллера, а также нужно включить (опять же, не модулем) в разделе «Device drivers -> SCSI device support» опции «SCSI disk support», «SCSI CDROM support» и «SCSI generic support». Эти требования обуславливаются тем, что современные версии ядер Linux используют для доступа к накопителям (независимо от их реального физического типа) эмуляцию SCSI-устройств; в противном случае ядро не сможет подключить корневой раздел. Также не забудьте включить не модулем драйвер той файловой системы, которая используется на корневом разделе. Проверьте также, отключён ли пункт Kernel Debugging в меню Kernel Hacking — его _включение_ _существенно_ замедляет загрузку и работу ядра.

-собственно, самое главное — _отключите_ параметр Initial RAM filesystem and RAM disk (initramfs/initrd) support.

-остальные пункты конфигурации — по вкусу, в зависимости от Вашего оборудования 🙂

-скомпилировать ядро с последующей перезагрузкой можно, выполнив с правами суперпользователя:
make all && make modules_install && make install && reboot

-если Вы собираете и устанавливаете ядро вручную (т.е. не через пакетный менеджер Вашего дистрибутива), то не забудьте проверить, скопировался ли после компиляции получившийся файл vmlinuz в каталог /boot и добавилась ли запись о свежем ядре в файл menu.lst

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

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

Proxy-сервер ffproxy

Для того, чтобы быстро установить простой прокси-сервер в Debian можно установить сервер ffproxy.

Для начала установим:

# apt-get install ffproxy

Открываем файл с настройками прокси-сервера

# mcedit /etc/ffproxy/ffproxy.conf

Тут нас интересует несколько строк:

port 8080

— В этой строке можно заменить номер порта нашего прокси-сервера. Например, у меня для прокси-сервера используется порт 3128.

Если компьютер сам подключен к прокси-серверу, то можно указать его параметры, заменив строки

forward_proxy 192.168.10.5
forward_proxy_port 8082

Для того, чтобы раскомментировать их, надо убрать # в начале строки.

Далее заполним список ip-адресов, с которых можно выходить в сеть через наш прокси-сервер:

# mcedit /etc/ffproxy/db/access.ip

там весьма оригинальный формат записи, крайне напоминающий регулярные выражения. Вполне возможно, что это они и есть и можно при помощи них задавать диапазоны айпишников — сам лично не проверял. Например, в моём случае это выглядит так: ^192\.168\.0\.101$ (там есть пример, глядя на который можно не запутаться).

Для того, чтобы разрешить подключения с любого ip-адреса, оставляем в файле только два символа

 .*

для разрешения всех подключений через IPv6 оставим только символ

:

для разрешения всех подключений через IPv4 напишем

 \.

Для запуска/остановки/перезапуска нашего прокси-сервера используем следующие команды:

/etc/init.d/ffproxy start
/etc/init.d/ffproxy stop 
/etc/init.d/ffproxy restart

Audiocodes MP-124 сброс настроек на заводские

Для сброса настроек на заводские необходимо:

  1. Включить питание MP-124.
  2. Проверить, чтобы сетевой шнурок был вынут из разъема RJ-45, в противном случае ничего не получится.
  3. Дождаться загрузки.
  4. Скрепкой нажать на кнопку находящуюся в углублении на лицевой панели MP-124 и подождать 6 секунд.
  5. Дождаться загрузки MP-124.
  6. Зайти по web-интерфейсу на http://10.1.10.10, со стандартными логином /паролем — Admin:Admin.

Последние прошивки:

MP124_SIP_F5.80A.012.005

MP124_SIP_F6.00A.015.001

Бэкап конфигов скриптом:

#!/bin/sh
day=`/bin/date "+%Y%m%d"`
home_dir="/home/alter/backups/mp124/$day"
/bin/mkdir $home_dir;
/bin/cat /home/alter/mp124ip.txt | /usr/bin/awk '{system("/usr/local/bin/curl [//]
--digest --url http://Admin:Admin@"$1"/FS/BOARD.ini>'$home_dir'/"$1".ini")}'

Создаем текстовый файл mp124ip.txt и заполняем его по принципу 1 строка 1ip:

10.166.10.4

192.168.1.34

и т.д.

Восстановление IP-фона Cisco 7942G

Cisco 7942G мне подарили товарищи по работе, за что им огромное спасибо и уважение! Угораздило же меня прошивать телефон на SIP-прошивку именно в тот момент, как скакнуло напряжение в офисе.. 8(( Телефон сдох.

После различных попыток восстановления телефона, он замолчал и уже не подавал никаких признаков жизни — на экране по появлялось никаких сообщений. Ни по команде 123456789*0#, ни по 3491672850*# восстановить телефон, с помощью местного TFTP-сервера и прошивок на нем, не удалось. (((

Пришлось менять стратегию.

Был запущен отдельный TFTP-сервер на DHCP с раздачей файла по протоколу BOOTP на Debian 5.0.6. Использовалось редкое в России устройство Synertron CV860A, с процессором VIA C3:

  • CPU VIA Eden/C3 376 PIN 1GHz,
  • PLE133 chipset, PC133 SDRAM memory,
  • 3x LANs, 2x Serial ports, 3x USB ports,
  • 50-pin bootable Compact Flash Disk Socket,
  • 1x DOC,
  • 1x 44-pin IDE,
  • and 1x 40-pin IDE.

 

Крайние правые порты (по порядку): eth0 и eth2.

Решение нашел благодаря статье на официальном сайте — http://www.cisco.com/en/US/ts/fn/620/fn62949.html

Вот содержание статьи:

Workaround:

Cisco recommends that customers stage their Cisco Unified IP Phones before deploying them to users. This allows Network Administrators to ensure:

— Each phone is upgraded to appropriate firmware releases.

— Properly configure the phone prior to deploying each phone

— The phone is assembled with the appropriate cables, handsets and optional headsets.

While staging the Network Administrator can perform additional activities such as factory resets, apply Dial Numbers and spot check phone functions.

Solution:

Cisco recommends the use of Firmware release 8.2(2)SR1 or later releases. This release and later versions are free of this defect. Registered users may obtain this release from the Cisco Unified IP Phone Firmware downloads (registered customers only) page. Select the proper load for your model of IP Phone.

Recovery of the IP Phone:

  1. Make sure your phones are on a network with a valid DHCP server.
  2. Make sure the DHCP server on this network has a valid Option 150 setting pointing to a valid Cisco TFTP server.
  3. Make sure you have a valid term11.default.loads file from load 8.2(2)SR1 or higher on the TFTP server that is referenced in Option 150.
  4. Make sure you have all other needed image files present on this same TFTP server. * See note below.
  5. Change the timing on the network — the problem is related to timing. Toggle switch port settings between «Auto» and «100Mbps.» On a Cisco switch the command to toggle the switch port switch:
    interface range fastethernet
    set speed 100
    set duplex full
    

    Wait 10 minutes, or until all the phones have been updated, then issue the following command if desired to return to original configuration:

    interface range fastethernet
    set speed auto
    set duplex auto
    

    Ensure that items 1 through 5 have been completed. If performing these five steps does not resolve the issue, continue with the remaining steps.

  6. Pull power on the phone (even if power is PoE).
  7. Hold down the # key on the phone.
  8. Continue holding down the # key and re-apply power.
  9. While still holding the # key wait for the Message Waiting Indicator (MWI) light on the handset to start flashing.
  10. Once the MWI light is flashing, release the # key and enter the following sequence exactly on the keypad:3491672850*#Once this sequence has been entered on the IP Phone, if all the network criteria above have been met, it should begin its recovery process. This process can take up to 15 minutes to finish. The phone may appear to be doing nothing during this time. However, if the phone does not recover after 20 minutes then it is possible that the recovery is stuck. In this case, re-examine your network and verify that steps 1-4 are in place, then re-issue the factory reset sequence.

* Note: The factory reset sequence is a way for a phone to clear flash and still upload to a valid firmware image. This is facilitated by the termxx.default.loads file, but requires that the image files listed in the termxx.default.loads file are available in TFTP for the phone to download. Open the termxx.default.loads file in any text editor. This loads file is essentially just a packing list showing all the OS and application files the phone needs to function. The files include a cnu, cvm, dsp, app and jar files. Please make sure that these files as listed in the termxx.default.loads file are in TFTP. («xx» will be either «06» for the CP-7906G model, or «11» for the CP-7911G model.)

Additional Diagnostic Steps:

— Try a hard-coded IP address as a test to see if this resolves the upgrade failures. If it does, and the number of failing IP Phones is relatively few, this procedure may be the most expedient. After the IP Phone upgrades successfully, reconfigure the IP Phone to use DHCP.

— Try putting the phone on a hub or a different switch and see if this helps change the startup timing enough so that the upgrade completes successfully.

***

Основная проблема возникла в пунктах 1-4, — не сразу удалось подобрать подходящую конфигурацию и заставить ее работать, ниже описываю положительный опыт создания такой конфигурации.

Первоначально пытался прописать DHCP option 150 на сервере Windows 2003 Server (позже подготовлю статью по этой теме), однако сразу не завелось, потому перешел на Debian.

IP-фон с помощью порта 10/100SW был подключен к свитчу, свитч подключен к серверу в порт eth0 (192.168.100.0/24), порт eth2 сервера (192.168.0.0/24) через еще один роутер, был подключен к интернету.

Итак, после установки операционной системы, был установлен TFTP-сервер:

apt-get install tftpd-hpa tftp-hpa
mcedit /etc/inetd.conf
#:BOOT: TFTP service is provided primarily for booting.  Most sites
#       run this only on machines acting as "boot servers."
tftp           dgram   udp     wait    root  /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /var/lib/tftpboot
invoke-rc.d openbsd-inetd restart
chmod 777 /var/lib/tftpboot
echo TEST > /var/lib/tftpboot/test0
echo get test0 | tftp 127.0.0.1

Устанавливаем DHCP-сервер:

apt-get install dhcp3-server
mcedit /etc/dhcp3/dhcpd.conf

ddns-update-style none;

option option-150 code 150 = ip-address;

default-lease-time 3600;
max-lease-time 7200;

# eth2
subnet 192.168.0.0 netmask 255.255.255.0 {
}

# eth0
subnet 192.168.100.0 netmask 255.255.255.0 {
    range dynamic-bootp 192.168.100.2 192.168.100.99;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.100.255;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    option routers 192.168.100.1;
    option option-150 192.168.100.1;
}

host cisco7942 {
    hardware ethernet b8:be:bf:22:be:05;
#    filename "SEPB8BEBF22BE05.cnf.xml";
    filename "term42.default.loads";
}

log-facility local7;

 

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

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name "dhcp-server";
send dhcp-client-identifier 00:40:48:b1:7c:59;
send dhcp-lease-time 3600;

request subnet-mask, broadcast-address, time-offset, routers,
	domain-name, domain-name-servers, domain-search, host-name,
	netbios-name-servers, netbios-scope, interface-mtu,
	rfc3442-classless-static-routes;

timeout 360;

Файл /etc/defaults/dhcp3-server:

INTERFACES="eth0"

Настройки сети:

auto lo
iface lo inet loopback

iface eth0 inet static
	address 192.168.100.1
	netmask 255.255.255.0
	network 192.168.100.0
	broadcast 192.168.100.255
auto eth0

allow-hotplug eth2
iface eth2 inet static
	address 192.168.0.53
	netmask 255.255.255.0
	network 192.168.0.0
	broadcast 192.168.0.255
	gateway 192.168.0.1
	dns-nameservers 192.168.0.1
auto eth2

Перезапуск сетевых настроек:

/etc/init.d/networking restart

Перезапуск DHCP-сервера:

/etc/init.d/dhcp3-server restart

Для пропуска трафика из подсети 192.168.0.0 в сеть 192.168.100.0, настраиваем NAT на IPtables, делаем скрипт ~/fw.start:

#!/bin/sh

INET="eth2"
INETIP="192.168.0.53"

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

iptables -t nat -A POSTROUTING -o $INET -j SNAT --to-source $INETIP

echo "1" > /proc/sys/net/ipv4/ip_forward

И запускаем его:

sh ~/fw.start

После этого трафик из сети 192.168.0.0 будет доступен и в 192.168.100.0.

Результаты работы проверяю с помощью tshark:

apt-get install tshark
tshark -i eth0

После всех манипуляций перезагружаем IP-фон, как описано в статье в пункте 10:

1. Зажимаем #.
2. Отключаем питание.
3. После того, как начинают мигать кнопки Line отжимаем #.
4. Набираем комбинацию 3491672850*# и ждем, пока с TFTP-сервера пойдет трафик в телефон.

На TFTP-сервере были размещены файлы одной из ранних прошивок:

# ls /var/lib/tftpboot/

apps42.8-5-2TH1-9.sbn
cnu42.8-5-2TH1-9.sbn
cvm42sip.8-5-2TH1-9.sbn
dsp42.8-5-2TH1-9.sbn
jar42sip.8-5-2TH1-9.sbn
SIP42.8-5-2S.loads
term42.default.loads
term62.default.loads
dialplan.xml
CTLSEPB8BEBF22BE05.tlv
SEPB8BEBF22BE05.cnf.xml
XMLDefault.cnf.xml

dialplan.xml:

<DIALTEMPLATE>
  <TEMPLATE MATCH="*" Timeout="3"/>
</DIALTEMPLATE>

SEPB8BEBF22BE05.cnf.xml (конфиг-файл от более поздней прошивки):

<device>
    <fullConfig>true</fullConfig>
    <deviceProtocol>SIP</deviceProtocol>
    <devicePool>
        <dateTimeSetting>
            <dateTemplate>D.M.Y</dateTemplate>
            <timeZone>Ekaterinburg Standard Time</timeZone>
            <ntps>
                <ntp>
                    <name>10.210.0.87</name>
                    <ntpMode>Unicast</ntpMode>
                </ntp>
            </ntps>
        </dateTimeSetting>
        <callManagerGroup>
            <tftpDefault>true</tftpDefault>
                <members>
                <member priority="0">
                <callManager>
                <name>77.243.103.107</name>
                <description>Asterisk</description>
                <ports>
                  <ethernetPhonePort>2000</ethernetPhonePort>
                  <sipPort>5060</sipPort>
                  <securedSipPort>5061</securedSipPort>
                </ports>
                <processNodeName>77.243.103.107</processNodeName>
                </callManager>
                </member>
                </members>
             </callManagerGroup>
    </devicePool>
    <commonProfile>
        <phonePassword></phonePassword>
        <backgroundImageAccess>true</backgroundImageAccess>
        <callLogBlfEnabled>0</callLogBlfEnabled>
    </commonProfile>
    <loadInformation>SIP42.8-5-4S</loadInformation>
    <loadInformation434  model="Cisco 7942">SIP42.8-5-4S</loadInformation434>
    <vendorConfig>
        <disableSpeaker>false</disableSpeaker>
        <disableSpeakerAndHeadset>false</disableSpeakerAndHeadset>
        <pcPort>0</pcPort>
        <settingsAccess>1</settingsAccess>
        <garp>0</garp>
        <voiceVlanAccess>0</voiceVlanAccess>
        <videoCapability>0</videoCapability>
        <autoSelectLineEnable>0</autoSelectLineEnable>
        <daysDisplayNotActive>1,7</daysDisplayNotActive>
        <displayOnTime>10:30</displayOnTime>
        <displayOnDuration>06:05</displayOnDuration>
        <displayIdleTimeout>00:05</displayIdleTimeout>
        <webAccess>1</webAccess>
        <spanToPCPort>1</spanToPCPort>
        <loggingDisplay>1</loggingDisplay>
        <loadServer></loadServer>
    </vendorConfig>

<userLocale>
   <name>Russian_Russian_Federation</name>
   <uid></uid>
   <langCode>ru_RU</langCode>
   <version>8.4.3.1000-1</version>
   <winCharSet>utf-8</winCharSet> </userLocale>
<networkLocale>Russian_Federation</networkLocale>
 <networkLocaleInfo>
   <name>Russian_Federation</name>
   <uid></uid>
   <version>8.4.3.1000-1</version>
 </networkLocaleInfo>
    <deviceSecurityMode>1</deviceSecurityMode>
    <idleTimeout>0</idleTimeout>
    <directoryURL></directoryURL>
     <servicesURL>77.243.103.107</servicesURL>
     <idleURL></idleURL>
    <messagesURL></messagesURL>
    <proxyServerURL></proxyServerURL>
    <dscpForSCCPPhoneConfig>96</dscpForSCCPPhoneConfig>
    <dscpForSCCPPhoneServices>0</dscpForSCCPPhoneServices>
    <dscpForCm2Dvce>96</dscpForCm2Dvce>
    <transportLayerProtocol>2</transportLayerProtocol>
    <capfAuthMode>0</capfAuthMode>
    <capfList>
        <capf>
            <phonePort>3804</phonePort>
        </capf>
    </capfList>
    <certHash></certHash>
    <encrConfig>false</encrConfig>
    <sipProfile>
        <sipProxies>
            <backupProxy>77.243.103.107</backupProxy>
            <backupProxyPort>5060</backupProxyPort>
            <emergencyProxy>77.243.103.107</emergencyProxy>
            <emergencyProxyPort>5060</emergencyProxyPort>
            <outboundProxy>77.243.103.107</outboundProxy>
            <outboundProxyPort>5060</outboundProxyPort>
            <registerWithProxy>true</registerWithProxy>
        </sipProxies>
     <sipCallFeatures>
        <cnfJoinEnabled>true</cnfJoinEnabled>
        <callForwardURI>x--serviceuri-cfwdall</callForwardURI>
        <callPickupURI>x-cisco-serviceuri-pickup</callPickupURI>
        <callPickupListURI>x-cisco-serviceuri-opickup</callPickupListURI>
        <callPickupGroupURI>x-cisco-serviceuri-gpickup</callPickupGroupURI>
        <meetMeServiceURI>x-cisco-serviceuri-meetme</meetMeServiceURI>
        <abbreviatedDialURI>x-cisco-serviceuri-abbrdial</abbreviatedDialURI>
        <rfc2543Hold>false</rfc2543Hold>
        <callHoldRingback>2</callHoldRingback>
        <localCfwdEnable>true</localCfwdEnable>
        <semiAttendedTransfer>true</semiAttendedTransfer>
        <anonymousCallBlock>2</anonymousCallBlock>
        <callerIdBlocking>2</callerIdBlocking>
        <dndControl>0</dndControl>
        <remoteCcEnable>true</remoteCcEnable>
     </sipCallFeatures>
      <sipStack>
        <sipInviteRetx>6</sipInviteRetx>
        <sipRetx>10</sipRetx>
        <timerInviteExpires>180</timerInviteExpires>
        <timerRegisterExpires>3600</timerRegisterExpires>
        <timerRegisterDelta>5</timerRegisterDelta>
        <timerKeepAliveExpires>120</timerKeepAliveExpires>
        <timerSubscribeExpires>120</timerSubscribeExpires>
        <timerSubscribeDelta>5</timerSubscribeDelta>
        <timerT1>500</timerT1>
        <timerT2>4000</timerT2>
        <maxRedirects>70</maxRedirects>
        <remotePartyID>false</remotePartyID>
        <userInfo>None</userInfo>
     </sipStack>
     <autoAnswerTimer>1</autoAnswerTimer>
     <autoAnswerAltBehavior>false</autoAnswerAltBehavior>
     <autoAnswerOverride>true</autoAnswerOverride>
     <transferOnhookEnabled>false</transferOnhookEnabled>
     <enableVad>false</enableVad>
         <preferredCodec>g711alaw</preferredCodec>
       <dtmfAvtPayload>101</dtmfAvtPayload>
       <dtmfDbLevel>3</dtmfDbLevel>
       <dtmfOutofBand>avt</dtmfOutofBand>
        <alwaysUsePrimeLine>false</alwaysUsePrimeLine>
        <alwaysUsePrimeLineVoiceMail>false</alwaysUsePrimeLineVoiceMail>
        <kpml>3</kpml>
        <stutterMsgWaiting>1</stutterMsgWaiting>
        <callStats>true</callStats>
        <silentPeriodBetweenCallWaitingBursts>10</silentPeriodBetweenCallWaitingBursts>
        <disableLocalSpeedDialConfig>true</disableLocalSpeedDialConfig>
        <startMediaPort>10100</startMediaPort>
        <stopMediaPort>10300</stopMediaPort>
        <voipControlPort>5060</voipControlPort>
        <dscpForAudio>184</dscpForAudio>
        <ringSettingBusyStationPolicy>0</ringSettingBusyStationPolicy>
        <dialTemplate>dialplan.xml</dialTemplate>
         <phoneLabel>Cisco</phoneLabel>
          <natReceivedProcessing>false</natReceivedProcessing>
          <natEnabled>false</natEnabled>
          <natAddress></natAddress>
        <sipLines>
          <line button="1">
            <featureID>9</featureID>
            <featureLabel>672 L1</featureLabel>
            <proxy>77.243.103.107</proxy>
            <port>5060</port>
            <name>672</name>
            <displayName>672</displayName>
            <autoAnswer>
              <autoAnswerEnabled>2</autoAnswerEnabled>
            </autoAnswer>
            <callWaiting>3</callWaiting>
            <authName>672</authName>
            <authPassword>************</authPassword>
            <sharedLine>false</sharedLine>
            <messageWaitingLampPolicy>3</messageWaitingLampPolicy>
            <messagesNumber></messagesNumber>
            <ringSettingIdle>4</ringSettingIdle>
            <ringSettingActive>5</ringSettingActive>
            <contact>$ACCOUNT</contact>
            <forwardCallInfoDisplay>
              <callerName>true</callerName>
              <callerNumber>false</callerNumber>
              <redirectedNumber>false</redirectedNumber>
              <dialedNumber>true</dialedNumber>
            </forwardCallInfoDisplay>
          </line>
          <line button="2">
          <featureID></featureID>
          <featureLabel></featureLabel>
          <speedDialNumber></speedDialNumber>
          </line>
        </sipLines>
    </sipProfile>
</device>

XMLDefault.cnf.xml:

<Default>
    <callManagerGroup>
        <members>
            <member  priority="0">
                <callManager>
                    <ports>
                        <ethernetPhonePort>2000</ethernetPhonePort>
                    </ports>
                    <processNodeName>192.168.100.113</processNodeName>
                </callManager>
            </member>
        </members>
    </callManagerGroup>

 <loadInformation6  model="IP Phone 7910"></loadInformation6>
    <loadInformation124  model="Addon 7914"></loadInformation124>
    <loadInformation9  model="IP Phone 7935"></loadInformation9>
    <loadInformation8  model="IP Phone 7940"></loadInformation8>
    <loadInformation7  model="IP Phone 7960"></loadInformation7>
    <loadInformation20000  model="IP Phone 7905"></loadInformation20000>
    <loadInformation30008  model="IP Phone 7902"></loadInformation30008>
    <loadInformation30007  model="IP Phone 7912"></loadInformation30007>
   <loadInformation434  model="IP Phone 7942">SIP42.8-5-4S</loadInformation434>
</Default>

и пустой файл: CTLSEPB8BEBF22BE05.tlv

 

🙂

После всего этого, телефон восстановился.

Предстоит еще обновить прошивку с 8.5.2 до минимум 8.5.4 (для благополучно работы Cisco 7942 с Asterisk 1.4.39 у нас в конторе). Но это уже другая история.