«Asterisk» и «Windows terminal server»: разница между страницами

Материал из support.qbpro.ru
(Различия между страницами)
imported>Vix
 
imported>Vix
Нет описания правки
 
Строка 1: Строка 1:
=='''Офисная АТС на Asterisk малой кровью или бюджетный способ получить мини АТС с функциями серьезной станции.'''==
== Оптимизация Windows terminal server ==
'''В данной статье рассматривается возможность оптимизации работы терминального сервера на платформе Windows. Данные рекомендации использовались на версиях Windows XP и Windows 2003. Возможно будут работать на Windows 7.'''  
*подразумевается, что вы уже установили сервер терминалов, он у вас работает и все дальнейшие действия выполняются на рабочем сервере. При этом категорически рекомендуем делать bakup изменений реестра или изменяемых системных файлов.


1. Почему (На правах введения).
*Рекомендация для правильной работы спулера принтеров сервера, данная операция производится после установки всех необходимых драйверов принтеров.
Сообщения об ошибках из-за проблем с монитором локального порта
После перезагрузки компьютера или после перезапуска службы «Диспетчер очереди печати» появляется следующее сообщение об ошибке:
Сбой при запуске Spoolsv.exe
Если открыть окно свойств принтера, появляется следующее сообщение об ошибке:
Недостаточно ресурсов
При попытке печати документа появляется сообщение об ошибке «Нарушение прав доступа» (программа Dr. Watson). В журнале программы
Dr. Watson присутствует запись об ошибке в программе Spoolsv.exe с кодом ошибки C0000005.
Появляется следующее сообщение об ошибке и диспетчер очереди печати останавливается:
Инструкция по адресу 'адрес' обратилась к памяти по адресу 'адрес'. Память не может быть «read».
Такое же сообщение появляется при попытке перезапуска службы «Диспетчер очереди печати» и при открытии папки «Принтеры».
Причиной проблемы может являться то, что используемый по умолчанию монитор локального порта заменен программой независимого
производителя. Чтобы устранить ошибку, необходимо внести изменения в системный реестр.
*Для этого выполните следующие действия.
Откройте редактор реестра.
2. Найдите параметр Local Port в следующем разделе реестра.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Local Port
3. Дважды щелкните параметр Driver и измените его значение. Введите строковое значение Localspl.dll и нажмите кнопку ОК.
4. Проверьте, присутствуют ли мониторы независимых производителей в следующем разделе реестра. Удалите все мониторы,
кроме используемых по умолчанию.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
По умолчанию используются следующие мониторы.
AppleTalk Printing Devices (присутствует, если установлены службы для Macintosh)
BJ Language Monitor
Local Port
PJL Language Monitor
Standard TCP/IP Port
USB Monitor
Windows NT Fax Monitor


*Практика работы на телекоммуникационном рынке показывает существование серьезного интереса к VoIP решениям на базе ПО, реализующего функции некогда доступные только в телефонных станциях уровня Definity и аналогичных. То, что VoIP технология будет идти вперед и если не вытеснит, то существенно подвинет позиции "железных" решений, это так же очевидно как, то, что отсутствие "интернет" - если и не останавливает работу в офисе IT компании, то существенно ее затрудняет . Прогнозы дело не благодарное, кроме того, их на сегодняшний день существует большое кол-во от разных аналитических изданий, в одном они сходятся со стопроцентной уверенностью - очевиден рост темпа внедрений VoIP решений (несмотря на существование пресловутых правил подключения).
** LPR Port
Примечание. Удаление монитора LPR Port должно выполняться только по рекомендации специалиста службы технической поддержки
корпорации Майкрософт.
5. Проверьте, присутствуют ли службы печати сторонних производителей в следующем разделе реестра. Удалите все службы печати,
кроме используемых по умолчанию.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Providers
По умолчанию используется следующие службы печати.
Internet Print Provider
LanMan Print Services
6. Проверьте, присутствуют ли обработчики печати сторонних производителей в следующем разделе реестра. Удалите все обработчики
печати, кроме используемых по умолчанию.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Print Processors
По умолчанию используется следующий обработчик печати
WinPrint
Чтобы определить обработчик печати, используемый принтером, с помощью средства MPS_REPORTS (Microsoft Product Support Reporting Tool)
откройте файл MachineName_PRINTDRIVERS.TXT и найдите в нем нужный обработчик печати независимого производителя и очереди, которые
его используют.
7. Замените обработчик печати независимого производителя обработчиком WinPrint.
8. Нажмите кнопку Пуск и выберите в меню Настройка пункт Панель управления.
9. Дважды щелкните значок Принтеры, щелкните правой кнопкой мыши нужный принтер и выберите команду Свойства.
10. Перейдите на вкладку Дополнительно и нажмите кнопку Обработчик печати.
11. В списке Обработчик печати выберите WinPrint.
12. Дважды нажмите кнопку ОК.
13. Закройте редактор реестра.


2. Что.
После внесения изменений в реестр перезапустите диспетчер очереди печати. Для этого запустите консоль управления (MMC)
и добавьте оснастки «Управление компьютером» или «Службы». Щелкните правой кнопкой мыши службу Диспетчер очереди печати
и выберите команду Пуск.


*В данной статье преследуется "простая" цель - показать возможность реализации функций офисной АТС уровня, например, Panasonic KX-TD 1232 (12 внешних линий, 32 внутренних) при помощи PC сервера, одной или нескольких специализированных плат (Digium) для подключения аналоговых или цифровых внешних линий, программного обеспечения Asterisk (Офисная станция) и LANBilling (тарификация, сбор статистики). Результатом будет являться полноценная IP АТС, в которой могут быть реализованы функции, ранее недоступные, "простому смертному" (компании малого бизнеса с количеством сотрудников около 10-30 человек). Почему Asterisk - потому что это бесплатное, широко распространенное (а значит, по его внедрениям проще найти информацию), и что не менее важно, opensource решение, реализующее большинство необходимых мелкому и среднему офису функций.
*При переполнении за сутки очереди печати чистим батником:


3. Как.
@echo off
*Как и любая мини АТС, описанное в статье решение, коммутирует телефонные каналы внутренних абонентов во внешнюю телефонную сеть (как правило, внешних каналов несколько меньше, чем, в общем случае, внутренних). В качестве интерфейса подключения к IP PBX внутренних абонентов используется Ethernet интерфейс сервера, в составе которого мы будем реализовывать решение. Соответственно, транспортом для абонентских телефонных каналов, служит Ethernet среда, по определению, не гарантирующая качества канала (и это является основным камнем преткновения технологии). Поэтому первое, на что стоит обратить внимание при реализации решения, это меры по предотвращению коллизий в Ethernet сегменте. Часто для пакетной телефонии выделяется отдельный Ethernet сегмент в рамках СКС предприятия, что определенным образом гарантирует качество абонентских каналов. Способов же подключить внешние телефонные каналы к АТС существует великое множество, поэтому мы будем рассматривать реализацию решения безотносительно типа подключения АТС к внешней телефонной сети, перечислив лишь способы, которыми могут быть подключены к серверу внешние "линии".
net stop spooler
echo y|del C:\WINDOWS\system32\spool\PRINTERS\*
net start spooler


*Во-первых, внешним каналом может служить обычный Интернет канал, с той лишь оговоркой, что он должен быть достаточного для прохождения всех пакетов выбранного протокола VoIP качества и гарантировать минимальность задержки при передаче пакетов. Весьма абстрактное требование. Более точно требования к внешнему каналу в случае использования пакетной телефонии нужно рассчитывать в зависимости от ряда параметров, рассмотрение которых выходит за рамки статьи. Этот способ (при помощи Интернет канала) наименее предпочтителен с точки зрения гарантий качества передачи голоса, по понятным причинам, - у потребителя нет возможности выделения определенной полосы пропускания для голосовых данных. Не стоит строить систему полагаясь только на интернет канал - как известно интернет бывает, что "пропадает", мало того что неприятно оставваться без интернет, но вдвойне неприятно при этом оставться еще и без телефонной связи, не имея возможности высказать свои претензии провайдеру.
*При печати клиента из терминального режима на локальный принтер в системном логе сервера появляется сообщение об ошибке:
Event ID: 1103 Description: An internal communication error occurred. Решение проблемы:
Это происходит, если имя принтера на рабочей станции не совпадает с именем
принтера на терминал-сервере. Как правило, это бывает, если в качестве клиента
используются компьютеры под управлением Windows 95/98/Me. Запишите название
принтера на рабочей станции в локальном режиме, затем начните установку этого
принтера на терминал-сервере и снова запишите его название. Затем откройте
файл %systemroot%\system32\Wtsuprn.txt и добавьте в него свой принтер. Уберите
значек комментария перед вносимой строкой, а полученный файл сохраните под
именем %systemroot%\system32\Wtsuprn.inf.
('''или скачайте этот файл тут:''' http://nixtech.ru/datatrans/win32/term-prn/wtsuprn.txt)
('''или тут:''' http://support.citrix.com/article/CTX626451)
log on на терминал-сервере. Затем подключитесь с клиентской рабочей станции. Ваш принтер
должен автоматически появится в папке Printers терминальной сессии.
('''Инструкция от Microsoft по установке''' http://support.microsoft.com/kb/214593)


*Второй способ это подключение аналоговых линий к IP АТС при помощи плат Digium. Если линий не очень много (до 16), то способ примелем с практической точки зрения, и гарантирует качество переговоров т.к. в данном случае качество может пострадать только из-за перегрузок во внутренней транспортной сети.
*Полезные ссылки по решению проблем печати на терминальном сервере
*Третий способ - это использование плат вышеуказанного производителя (или аналогичных) для стыка E1 и более скоростных. Так же как и способ №2 этот способ гарантирует приемлемое качество телефонных разговоров. Его целесообразно применять при необходимости подключения большего количества внешних линий (более 16, как правило). Существует возможность комбинирования указанных способов подключения внешних линий. Например, когда в нормальной ситуации используется стык канал E1, в случае проблем с основным поставщиком услуг телефонии используется аналоговые каналы, и при их отсутствии диалпир провайдера VoIP, доступный через общий интернет канал. ПО Asterisk позволяет гибко управлять коммутацией при возникновении перегрузок и пр. событий задействуя все внешние каналы безотносительно того, каким способом они подключены к IP АТС.
('''Решение проблем печати в терминальных сетях и терминальных службах.''' http://admin-dm.livejournal.com/67401.html)


*В практически в любой аппаратной мини АТС имеется COM порт (устаревающие модели) или другой способ (CDR файлы, информация, передаваемая через интерфейс сокетов и т.д.) снятия данных о состоявшихся телефонных разговорах или разговорах находящихся в активном состоянии (начавшихся, но еще не завершившихся). В рассматриваемом нами случае в качестве способа снятия звонковой информации используется интерфейс на базе RADIUS протокола, который не является, к слову, встроенным средством Asterisk, а настраивается в дополнение к основному функционалу при помощи разработанных плагинов (PlugIn - встариваемый код).
('''Совместимость имен принтеров при работе с терминальным сервером''' http://support.citrix.com/article/CTX626451)


*До сих пор статья описывает принципы построения решения, т.е. отвечает на вопрос "Что мы получим в результате?". Резюмируя, можно сказать, что помимо возможностей коммутации телефонных разговоров (основная функция АТС) IP АТС сможет:
('''Terminal Server Printer Redirection Wizard Tool''' http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=5640)


    работать в качестве карточной платформы
*Патч для увеличения максимального количества полуоткрытых соединений
    обеспечивать функции виртуального секретаря через IVR (тоновый донабор внутреннего номера внешним абонентом, как пример) Прим: IVR - Interactive
Впервые данное ограничение было введено компанией Microsoft в SP2 (Service Pack 2) для Windows XP и присутствует в последующих
    Voice Response
версиях Windows.
    обеспечивать функции MailBox - голосового почтового ящика
Это было сделано в попытке замедлить распространение вирусов с зараженного компьютера, а также ограничить возможности участия
    обеспечить переадресацию вызовов на любой номер (внешний / внутренний)
компьютера в DoS-атаках (от англ. Denial of Service, отказ в обслуживании).
Ограничение заключается в том, что компьютеру не разрешается иметь более 10 одновременных полуоткрытых исходящих соединений.
При достижении предела новые попытки подключений ставятся в очередь. Таким образом, фактически ограничена скорость подключения
к другим компьютерам.
('''Патч Half-open limit fix''' http://half-open.com/download_ru.htm) позволяет убрать это ограничение, то есть увеличить
максимальный предел полуоткрытых соединений. Для подавляющего большинства пользователей будет достаточным предел, равный 100


а также реализовать другие, не характерные для обычных мини АТС функции.
*Оптимизация работы клиента на медленном канале:
'''Цельный курсор'''
Установка курсора немигающим очень эффективно в низкоскоростных соединениях. Мерцающий курсор посылает несколько байт
данных при каждом мерцании, и запрет мерцания экономит немного полосы пропускания.
HKEY_USERS/.default/Control Panel/Desktop
Установите значение CursorBlinkRate Reg_SZ -1 (1200)
'''Скорость обновления меню Start'''
Вы можете увеличить скорость обновления, чтобы уменьшить время ответа в меню.
"HKEY_USERS\DEFAULT\Control Panel\Desktop"
Добавьте значение: MenuShowDelay REG_DWORD: 10 (400)


*Прежде чем перейти к разделу, в котором подробно описана установка RADIUS клиента для Asterisk - собственно способ интеграции Asterisk и LANBilling, следует отметить что, как и любое свежее решение (не путать с ментос) данное имеет недостатки - например, отсутствие более-менее удобного интерфейса для конфигурирования Asterisk, все настройки приходится применять, редактируя текстовые файлы конфигурации, хотя, что можно придумать неудобнее, чем нажатие кнопок системного телефона при конфигурировании АТС LG-GHX 616, например. Успокаивает то, что не так часто приходится менять настройки станции. По мере внедрения описанного решения статья будет дополняться информацией по новым возможностям как Asterisk, так и всех модулей, участвующих в функционировании предлагаемого решения
*Полезные советы и ссылки:
('''Решение проблем с терминальным сервером и не только''' http://adsh.ukrweb.net/win2k/fido_faq_10.html)


3.1 Установка Asterisk
*Без перезагрузки компьютера средствами командной строки, как правило, не обходится ни один диск автоматической установки Windows - это завершающая процедура, после которой компьютер уже готов к использованию. Перезагрузить компьютер можно различными способами.
Команда shutdown


В этом подразделе мы опишем установку asterisk под Linux безотноситильно какого-либо дистрибутива, то есть речь будет идти о сборке из исходников, взять которые можно на asterisk.org. При установке под FreeBSD есть ряд особенностей, на которых сейчас не хотелось бы останавливаться.
    shutdown.exe -r -f -t 20 -c "Don`t panic. The system will reboot in 20 seconds."


В первую очередь распаковываем исходный код:
Справка: shutdown /?


#tar -zxf asterisk-1.0.9.tar.gz
* управление screensaver в терминальном сервере
#cd asterisk-1.0.9/
[http://amaksimov.wordpress.com/2011/10/15/computer-block-lock-out-via-screen-saver-timeout-and-password-protect-with-gpp-group-policy-preferences/ screensaver в терминальном сервере]


Для того, чтобы была возможность запускать asterisk от имени непривилегированного пользователя, необходимо отредактировать Makefile, заменив "ASTVARRUNDIR=$(INSTALL_PREFIX)/var/run" (приблизительно строка 123) на "ASTVARRUNDIR=$(INSTALL_PREFIX)/var/run/asterisk".
'''944984 - на сервере стоит SP2 который уже идет с User Profile Hive Cleanup'''
Затем:
  Service (UPHClean).
  906952 -  на сервере отключен мап любых принтеров и остального,
  кроме дисков (флешки и флопы мапить), там отмечено, что эта проблема была учтена в SP2. Также
  там написано, что ее включить надо, так вот этот момент немного не понятен:


#make clean
  To enable this hotfix, you must create the PrinterMaskKey registry subkey. To do
#make
  this, follow these steps:
#make install


Если asterisk устанавливается "с нуля", то рекомендуется установить примеры конфигурационных файлов:
  1. Click Start, click Run, type regedit, and then click OK.
  2. Locate the following registry subkey:
  HKEY_USERS\.default\printers
  3. Right-click the registry subkey that you located in step 2, point to New,
  click Key, type PrinterMaskKey, and then press ENTER.
  4. Exit Registry Editor.
  Что конкретно нужно создать в ветке HKEY_USERS\.default\printers, если не
  трудно, поясните?
  '''''--В локаликозованной версии regedit Key = Раздел Т.е. надо создать подраздел
  PrinterMaskKey внутри HKEY_USERS\.default\printers'''''


#make samples
[[Hotfix - terminal server win]]


Теперь создаем пользователя для asterisk и меняем владельца рабочих директорий:
== Настройка меню пользователя в Win2003 ==
*как скрыть пункт в меню Пуск - Администрирование, от терминальных пользователей?


#groupadd asterisk
В групповых политиках, конфигурации пользователя, административных шаблонах, в настройках меню "Пуск" отключите необходимые элементы.
#useradd -c "asterisk PBX" -d /var/lib/asterisk -g asterisk asterisk
#chown -R asterisk:asterisk /var/run/asterisk
#chown -R asterisk:asterisk /etc/asterisk
#chown -R asterisk:asterisk /var/lib/asterisk
#chown -R asterisk:asterisk /var/log/asterisk
#chown -R asterisk:asterisk /var/spool/asterisk


Запускать asterisk нужно с ключами -G asterisk -U asterisk. Пример стартового скрипта можно посмотреть здесь.
Пример:


Основные действия по установке выполнены. В результате имеется практически готовая к использованию IP АТС. Самое время приступать к конфигурированию и подключению абонентов. На данном этапе мы пока не можем использовать протокол H323 и Zaptel (аналоговые POTS lines, цифровые каналы E1/T1/J1). Инструкции по поводу установки и настройки этих модулей смотрите в соответсвующих разделах статьи.
Конфигурация пользователя -> Настройка -> Параметры панели управления -> Главное меню


3.1.1 Подключение абонентов
[[Файл:Win2008adm.jpg]]


По умолчанию вся конфигурация asterisk хранится в виде текстовых файлов (как правило, в /etc/asterisk/). Разработчиками была проделана большая работа для перенесения конфигурации в базу данных, но это отдельный вопрос... Конфигурационных файлов достаточно много: каждому модулю asterisk соответсвует свой файл. Но это не должно пугать. Скорее всего многие модули Вы просто не будете использовать, поэтому не спешите тонуть в этой куче файлов и непонятных инструкций. На самом деле все конфиги выдержаны в одном стиле, поэтому более-меенее разобравшись с основными, не составит труда освоить новый.
== Решение проблем по принтерам фирмы Canon ==


Базовая конфигурация (asterisk.conf)
* [https://forum.sysadmins.su/index.php?showtopic=40251246 падения спула печати]
* [http://www.it-ho.ru/page_story.php?id=79 программное решение проблемы печати]
* [http://forum.infostart.ru/forum73/topic53155/ еще описание настроек программно]


Файл asterisk.conf содержит пути к основным рабочим директориям АТС. Если после установки эти директории никуда не переносились, то файл в исправлении не нуждается.
==Удаленный сеанс отключен из-за отсутствия доступных лицензий клиента сервера терминалов для этого компьютера. Обратитесь к администратору сервера.==


Настройка протокола SIP/IAX. Подключение SIP/IAX пользователей (sip.conf/iax.conf)
При попытке подключиться к удалённому рабочему столу, выдаёт ошибку "Удаленный сеанс отключен из-за отсутствия доступных лицензий клиента сервера терминалов для этого компьютера. Обратитесь к администратору сервера", что делать? Как исправить проблему?


Файлы sip.conf, iax.conf имеет сходную структуру. Эти конфигурационные файлы содержат специфические настройки протокола и определяют профили подключенных пользователей. Рассмотрим для примера sip.conf (взято из asterisk samples):


;
Решение:
; В этом файле содержится конфигурация, касающаяся протокола SIP
;
; Синтаксис для указания SIP-устройства(это может быть IP телефон, либо
; софтфон, либо VoIP шлюз) в extensions.conf следующий:
; SIP/[имя устройства], где [имя устройства] определяется ниже.
;
; Можно также использовать следущую конструкцию:
; SIP/[имя пользователя]@[домен], чтобы позвонить пользователю
; в сети Итернет
;
; Можно описать узел (peer) для произвольного SIP-прокси (см. ниже),
; тогда вызов пользователя через этот шлюз будет выглядеть так:
; SIP/[SIP-прокси]/[пользователь] или SIP/[пользователь]@[SIP-прокси].
; Что есть SIP-прокси определяется ниже.
;
; Несколько слов об используемой здесь терминалогии:
; user (пользователь) - может звонить на asterisk, либо через него.
; peer (узел) - может только принимать звонки от asterisk.
; friend - объединяет в себе оба вышеупомянутых понятия.
;
; Полезные команды консоли asterisk для контроля SIP узлов/пользователей:
;  sip show peers             
;  Покажет все SIP peer'ы (включая friends)


;  sip show users             
Необходимо удалить раздел реестра MSLicensing. Для этого проделайте следующие действия:
;  Покажет все SIP user'ы (включая friends)


;  sip show registry         
    На клиенте перейдите в следующий подраздел реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing.
;  Статус установленной регистрации
    Выберите пункт MSLicensing.
    В меню Правка выберите команду Удалить, а затем нажмите кнопку Да, чтобы подтвердить удаление подраздела реестра MSLicensing.
    Закройте редактор реестра и пробуйте снова подключиться к удалённому компьютеру.


;  sip debug                 
Исхода возможно два:
; Повышенная детализация сообщений в консоли


;  reload chan_sip.so         
1) всё запустится и будет работать.


; Перегрузить конфиг. файл
2) не запустится, но выдаст уже другую ошибку "Удаленный компьютер отключил сеанс из-за ошибки в протоколе лицензирования. Попытайтесь подключиться к удаленному компьютеру снова или обратитесь к администратору сервера".
; Конфигурация активных SIP peer'ов изменена не будет


Если вы получили второй исход, это означает, что раздел MSLicensing не смог создаться заново, чтобы он создался необходимо попробовать подключиться к удалённому компьютеру из под учётной записи обладающей правами администратора на данном компьютере. После этого под всеми остальными пользователями всё снова начнёт работать нормально.


[http://nopcproblem.ru/index.php/articles/1-articles/70-udalseansotklyuchen взято тут]


; Раздел общих настроек
или
[general]
context=default               


; Контекст по умолчанию для входящих звонков
При подключении к удалённому рабочему столу возникает следующая ошибка: "Удаленный сеанс отключен из-за отсутствия доступных лицензий клиента сервера терминалов для этого компьютера".


;recordhistory=yes             
Данная проблема решается двумя способами:


; хранить историю SIP подключений
Если нет возможности изменить настройки сервера, то используем способ 1, иначе способ 2.
; (см. sip history / sip no history)


;realm=mydomain.tld           
Способ 1. На стороне клиента


; Realm (атрибут области) для digest аутентификации
Необходимо удалить раздел "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000". Сделать это можно, например, выполнив следующую команду:
; по умолчанию - "asterisk"
; Realms должны быть уникальны в соответсвии с RFC 3261
; Принято указывать здесь свое доменное имя


port=5060                     
reg delete "HKLM\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000" /f


; Прослушиваемый UDP порт (стандартный порт - 5060)
или тоже самое, но руками:


bindaddr=0.0.0.0               
    "Пуск" > "Выполнить..." > Набираем "regedit.exe" и жмём OK.
    Слева в дереве выбираем ветку " HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000".
    Правой кнопкой мыши жмём по элементу " LICENSE000" и выбираем "Удалить".


; Слушать конкретный IP адрес (0.0.0.0 - слушать на всех)
Примечание 1. Можно встретить рекомендацию удалить ветку всю ветку "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing". Можно, но не нужно. Достаточно удалить подветку Store\LICENSE000.
Примечание 2. Говорят (я не проверял), что на Windows Vista следует запустить "Подключение к удалённому рабочему столу" (mstsc.exe) от имени администратора.
Примечание 3. Когда вообще ничего не помогает, то подключаемся к удалённому рабочему столу с Windows XP, а затем переносим ветку "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing" на машину с Windows Vista/7.


srvlookup=yes                 
Способ 2. На стороне сервера


; Разрешить использование DNS
Понятно, что на каждом клиенте решать проблему неправильно и неудобно. Такая ошибка возникает, когда режим лицензирования сервера терминалов на сервере терминалов настроен как "На устройство", а на сервере лицензий имеются только клиентские лицензии доступа "На пользователя". В статье KB822134 показано, как решить эту проблему:
; Замечание: Asterisk использует только первую запись
; в ответе DNS сервера.
; Если эта опция выключена, вы не сможете установить
; SIP соединение, определяемое именем хоста
; (напр. SIP/user@voip.somewhere.com)


;pedantic=yes                 
    Нажмите кнопку "Пуск" и выберите последовательно пункты "Администрирование" и "Настройка служб терминалов".
    Выберите узел "Параметры сервера" и дважды щелкните элемент "Лицензирование".
    Установите для параметра "Режим лицензирования" значение "На пользователя" и нажмите кнопку "ОК".


; Разрешить медленную, более точную проверку Pingtel заголовков,
[http://kaktusenok.blogspot.ru/2012/01/blog-post_28.html от сюда...]
; обеспечивающую строгое соответсвие стандарту SIP.
; (По умолчанию "no")


;tos=184                       
==Сопоставление принтеров в терминальном подключении Win2003 R2==
Решение проблемы: Сопоставление драйверов от клиента к серверу
Для решения этой проблемы можно сопоставить имена драйверов принтеров на сервере с именами драйверов на клиентах. Например, вы можете сказать серверу, что драйвер клиентского принтера с именем “Hewlett Packard LaserJet 5P” является тем же драйвером, что и драйвер на сервере “HP LaserJet 5P.”
Учтите, что это вам нужно, если (1) вы используете отображение клиентских принтеров и (2) используете клиентов, отличных от Windows 2000 или Windows XP.
Чтобы разрешить сопоставление драйверов, разместите на терминальном сервере файл, который содержит пары имен драйверов на стороне клиента и на стороне сервера. В ранних версиях сервера терминалов это делалось с помощью файла “wtsuprn.inf”, находящегося в каталоге %systemroot%\system32\. Однако, в Windows Server 2003 этого файла нет и он не ищется.
Для создания файла сопоставления в Windows 2003 вам нужно добавить в реестр два значения:
Key: HKLM\SYSTEM\CurrentControlSet\
Control\Terminal Server\Wds\rdpwd
Type: REG_SZ
Value: PrinterMappingINFName
Data: Имя файла .INF, содержащего сопоставление имен драйверов - например, c:\winnt\inf\printsubs.inf
Key: HKLM\SYSTEM\CurrentControlSet\
Control\Terminal Server\Wds\rdpwd
Type: REG_SZ
Value: PrinterMappingINFSection
Data: Наименование раздела в файле .INF, содержащего собственно сопоставление (Например, Printers)
После внесения изменений реестр перезапустите службу спулера или перезагрузите сервер терминалов, чтобы изменения вступили в силу. После изменения реестра вам следует создать файл .INF, включающий имена драйверов. Этот файл должен выглядеть так:
;PRINTSUBS.INF
;This file contains Mappings for Client driver to Server driver printer connections
[Printers]
;"Client Printer Driver Name" = "Server Printer Drive Name"
"Hewlett Packard LaserJet 5P" = "HP LaserJet 5P"
Вы можете создать этот файл в Notepad и сохранить его с расширением .INF в каталоге %SystemRoot%\System32\.
Имена драйверов в этом файле чувствительны к реестру и пробелам. Все, что находится внутри кавычек, должно точно соответствовать имени драйвера. Как и в большинстве файлов .INF лидирующий символ точка-с-запятой ( означает комментарий и такая строка игнорируется. При использовании этого файла вы можете включить в него несколько сопоставлений имен драйверов.
Создание карты сопоставления - больше искусство, чем наука. К счастью, есть замечательный сайт www.printingsupport.com. На нем вы найдете файлы сопоставления имен драйверов, которые можете использовать в своей среде.
Создав файл сопоставления, вы должны разместить его на всех терминальных серверах, где применяется отображение клиентских принтеров. Учтите, этот файл указывает на драйверы, которые должны быть инсталлированы на терминальном сервере.
Если ваш файл .INF содержит синтаксические ошибки (кроме неверного указания имени драйвера внутри кавычек), вы можете получить в журнале событий следующее сообщение:
Event 1110: "Error processing ntprint.inf. If the file on the system is corrupt, you can restore it from the installation media.
Это сообщение сбивает с толку, поскольку ссылается на файл “ntprint.inf ”, а не на указанное вами имя файла. Эта ошибка обычно означает, что ваш файл .INF содержит ошибку. Чаще всего это бывает, когда в файле не содержится записей. Ваш новый файл .INF должен содержать минимум одно сопоставление и минимум одно сопоставление не должно начинаться с символа комментария. Если ваш файл .INF содержит пустое имя секции, вы также получите ошибку 1110.


; Установить IP QoS. Допускается указать численное значение либо
* [http://winitpro.ru/index.php/2013/03/12/masshtabirovanie-ekrana-v-rdp-sessii/ Масштабирование экрана в RDP сессии]
 
* [http://samag.ru/archive/article/1850 Настраиваем подключения к удаленному рабочему столу]
;tos=lowdelay                 
* [https://www.atraining.ru/windows-rdp-tuning/ Защищаем и оптимизируем RDP ]
 
* [http://www.oszone.net/10156/Windows-Remote-Desktop Запуск Windows Remote Desktop Connection из командной строки]
; одно из служебных слов: lowdelay,throughput,reliability,mincost,none
* [http://cmd4win.ru/upravlenie-serverom/132-komanda-mstsc Команда Mstsc - подключение по RDP]
 
* [http://ab57.ru/cmdlist/mstsc.html Параметры RDP]
;maxexpirey=3600               
* [https://habr.com/post/147273/ удаленное управление]
 
; Максимальное значение периода входящих регистраций.
 
;defaultexpirey=120           
 
; Значение периода входящих/исходящих регистраций по умолчанию
 
;notifymimetype=text/plain     
 
; Явное указание mime типов в MWI NOTIFY
 
;videosupport=yes             
 
; Поддержка SIP видео
 
;disallow=all                 
 
; Запретить все кодеки (ниже указывается список разрешенных кодеков)
 
;allow=ulaw                   
 
; Разрешаем кодеки в порядке, соответсвующем их приоритету
 
;allow=ilbc                   
 
; Замечание: порядок кодеков имеет смысл задавать только в разделе
; [general]
 
;musicclass=default           
 
; Установить класс по умолчанию для мелодий во время ожидания.
; Он может задаваться индивидуально для пользователей/узлов
 
;language=en                   
 
; Выбор языка по умолчанию
; Также может задаваться индивидуально для пользователей/узлов.
 
;relaxdtmf=yes                 
 
; "смягченный" режим распознавания dtmf
 
;rtptimeout=60                 
 
; Разрывать соединение, если в течение 60 сек. не было RTP трафика,
; при условии что мы не находимся в режиме ожидания.
 
;rtpholdtimeout=300           
 
; То же самое, но относится к режиму ожидания
; (rtpholdtimeout > rtptimeout)
 
;trustrpid = no               
 
; Полагаться на значение поля Remote-Party-ID
 
;progressinband=no             
 
; Всегда передавать вызывающий сигнал in-band
 
;useragent=Asterisk PBX       
 
; Задать значение поля user agent
 
;nat=no                       
 
; настройки NAT
; yes = всегда игнорировать информацию в пакетах, предполагая наличие NAT
; no = использовать режим NAT в соответсвие с RFC3581
; never = не использовать NAT режим
; route = использовать режим NAT, не отсылать удаленный порт
 
;promiscredir = no
   
; Позволяет разрешить 302 или REDIR (переадресации)
; на нелокальные SIP адреса
; Со включенным promiscredir переадресации на локальные адреса
; приведут к зацикливанию, т.к. протокол SIP неспособен
; осуществлять "петлевые" звонки.
 
; Если определен regcontext, Asterisk будет динамически создавать
; экстеншн "NoOp" с приоритетом, равным 1, для peer'а,
; который регистрируется у нас и удалять его при снятии
; регистрации.  Действительный экстеншн для этого peer'а
; определяется параметром 'regexten' либо его именем,
; если 'regexten' не указан.
; Может быть задано несколько экстеншенов, разделенных '&'.
; Разрешается использовать шаблоны.
 
;regcontext=iaxregistrations
 
; Asterisk может регистрироваться как SIP-пользователь
; у своего SIP провайдера
; Соответсвующая инструкция имеет следующий формат:
;      register => user[:secret[:authuser]]@host[:port][/extension]
 
; Необязательные параметры заключены в скобки [].
; Если, не задан экстеншн (extension), используется экстеншн 's'.
; Соответсвующий экстеншн должен быть определен в extensions.conf,
; чтобы принимать звонки от своего SIP-провайдера
;
; host - это либо DNS имя, либо имя одной из определенных ниже секций.
;
; Пример:
;
;register => 1234:password@mysipprovider.com
;    Здесь входящие звонки будут приходить в экстеншн 's'
;register => 2345:password@sip_proxy/1234
;
;    Регистрируем 2345 на SIP-провайдере 'sip_proxy'. 
; Входящие звонки от провайдера будут приходить
;    в экстеншн 1234, определенном в extensions.conf в default-контексте,
; либо любом другом, если
;    вы сконфигурируете раздел [sip_proxy] и зададите там нужный контекст.
; Совет 1: Не используйте DNS имя для названия секций в sip.conf,
; например, [provider.com]
; Совет 2: Используйте раздельно две секции type=peer
; и type=user для SIP-провайдера (вместо одной секции type=friend)
; если звонки идут в обоих направлениях
 
;externip = 200.201.202.203   
 
; Адрес, который будет помещен в исходящие SIP-пакеты,
; если мы находимся за NAT'ом (наш внешний ip)
; externip и localnet используются при общении
; с SIP-провайдерами, где мы зарегистрированы
; Можно добавить несколько локальных сетей (localnet).
; Ниже перечислены "стандартные" локальные сети:
 
;localnet=192.168.0.0/255.255.0.0;
;localnet=10.0.0.0/255.0.0.0    ;
;localnet=172.16.0.0/12         ; 
;localnet=169.254.0.0/255.255.0.0 ;
 
;-------------------------------------------------------------------
; user и peer имеют различные наборы настроек. friend может использовать
; все нижеперечисленные настройки
;
; настройки user:            настройки peer:
; --------------------        -------------------
; context                    context
; permit                      permit
; deny                        deny
; secret                      secret
; md5secret                  md5secret
; dtmfmode                    dtmfmode
; canreinvite                canreinvite
; nat                        nat
; callgroup                  callgroup
; pickupgroup                pickupgroup
; language                    language
; allow                      allow
; disallow                    disallow
; insecure                    insecure
; trustrpid                  trustrpid
; progressinband              progressinband
; promiscredir                promiscredir
; callerid
; accountcode
; amaflags
; incominglimit
; restrictcid
;                            mailbox
;                            username
;                            template
;                            fromdomain
;                            regexten
;                            fromuser
;                            host
;                            mask
;                            port
;                            qualify
;                            defaultip
;                            rtptimeout
;                            rtpholdtimeout
 
; Ниже приведены примеры настроек различных узлов: user, peer, friend
;[sip_proxy]
; Только для входящих звонков
;type=user
;context=from-fwd
 
;[sip_proxy-out]
;type=peer                     
; только для исходящих звонков
 
;secret=guessit
;username=yourusername         
 
; имя пользователя для аутентификации на SIP-прокси
 
;fromuser=yourusername         
 
; многие SIP-провайдеры требуют наличия этого поля!
 
;host=box.provider.com
 
;[grandstream1]
;type=friend                   
 
; либо "friend" (peer+user), либо "peer", либо "user"
 
;context=from-sip
;fromuser=grandstream1         
 
; если не задан, используется callerid
;callerid=John Doe
 
;host=192.168.0.23             
 
; у нас статический IP
;nat=no   
                   
; между телефоном и Asterisk'ом нет NAT'а
 
;canreinvite=yes               
 
; разрешить "проксирование" голосового RTP трафика
 
;dtmfmode=info                 
 
; режим тонального набора
 
;incominglimit=1               
 
; разрешить только один исх. звонок
; с телефона на Asterisk
 
;mailbox=1234@default 
; голосовая почта 1234 в контексте "default"
 
;disallow=all                 
; запрещаем все кодеки, чтобы потом определить разрешенные (allow)
 
;allow=ulaw       
           
; Замечание: в секции с type=user порядок кодеков
; не учитывается
 
;allow=alaw
;allow=g723.1
;allow=g729
; .....
 
Для примера рассмотрим самый простой случай: у нас есть два ip-телефона, и необходимо звонить с одного на другой, используя номера 101 и 102. sip.conf в этом случае может выглядить так:
 
[general]
 
port=5060                     
bindaddr=0.0.0.0             
srvlookup=yes                                               
language=en                                                   
dtmfmode=RFC2833
promiscredir = no 
nat=no
 
disallow=all
allow=alaw       
 
[101]
host=dynamic
context=default
type=friend
username=101
nat=no
secret=secret101
callerid=phone1 <101>
 
[102]
host=dynamic
context=default
type=friend
username=102
nat=no
secret=secret102
callerid=phone2 <102>
 
В настройках телефонов нужно указать точно такие же имя пользователя и пароль. Кроме того, в extensions.conf нужно определить соответсвующие экстеншены в контексте default.
Например, так:
 
;... skipped ...
[default]
exten => 101,1,Dial(SIP/101)
exten => 102,1,Dial(SIP/102)
... skipped ...
 
Теперь, запустив Asterisk и убедившись, что оба телефона успешно зарегистрировались, можно смело набирать номер.
 
Подключение аналоговых телефонов
 
(Раздел в разработке)
 
3.1.2 Подключение внешних каналов
 
В первую очередь необходимо установить математическое обеспечение (драйверы) той системы сигнализации которую использует Ваш провайдер внешнего телефонного канала.
 
H.323
 
Существуют две распространенные реализации H323 драйвера для asterisk: h323, входящий в состав дистрибутива asterisk, и oh323, который разрабатывается InAccess Networks (http://www.inaccessnetworks.com/projects/asterisk-oh323). До сих пор идут споры о том, какой драйвер лучше использовать. Первым появился oh323. Он считается более стабильным в работе, в нем, в отличии от h323, реализован буфер для устранения дрожания. Для передачи используется RTP/RTCP стэк. В то же время h323 гораздо более производительный (загрузка ЦП может быть в 10-15 раз меньше, чем при использовании oh323 на тех же потоках).
 
Оба модуля имееют подробные интструкции по установке. Единственное, на что следует обратить особое внимание, это требование к библиотекам pwlib и openh323, необходимым для сборки драйвера: они должны быть в точности такими, как указано в инструкции по установке. При установке asterisk'а h323 по умолчанию не собирается. Нужно перейти в директорию asterisk-1.0.9/channels/h323/ и последовательно выполнить все инструкции из README. Если же вы решили использовать oh323, то необходимо предварительно скачать его исходники.
 
Рассмотрим для примера установку asterisk-oh323-0.6.5. Согласно инструкции нам потребуются библиотеки pwlib (v1.6.6) и openh323 (v1.13.5). Необходимые файлы можно взять здесь.
 
#tar -zxf pwlib-v1_6_6-src.tar.gz
#tar -zxf openh323-v1_13_5-src.tar.gz
#tar -zxf asterisk-oh323-0.6.5.tar.gz
#export PWLIBDIR="`pwd`/pwlib"
#export OPENH323DIR="`pwd`/openh323"
#export LD_LIBRARY_PATH="$PWLIBDIR/lib:$OPENH323DIR/lib"
#cd pwlib/
#./configure
#make
#cd ../openh323/
#patch -p1 < ../asterisk-oh323-0.6.5/openh323_1.13.5-make.patch
#./configure
#make opt
 
В этом месте компиляции может случиться конфуз (Fedora Core 3, gcc-3.4.2, glibc-2.3.3):
 
gkserver.h:434: error: `virtual H323Transaction::Response H323GatekeeperRRQ::OnHandlePDU()' is protected
gkserver.h:1946: error: within this context
 
 
В этом случае нужно отредактировать файл include/gkserver.h, закомментировав строку 433:
 
  H225_RegistrationReject  & rrj;
 
// protected:
    virtual Response OnHandlePDU();
};
 
Далее:
 
#cd ../asterisk-oh323-0.6.5/
 
Нужно отредактировать Makefile, указав пути к pwlib, openh323 и asterisk в соответствии с вашими настройками. Например, на демонстрационном стенде это выглядит так:
 
#...skipped...
PWLIBDIR=/usr/local/src/pwlib
#...skipped...
OPENH323DIR=/usr/local/src/openh323
#...skipped...
ASTERISKINCDIR=/usr/local/src/asterisk-1.0.9/include
 
Все остальное по умолчанию.
 
#make
#make install
 
Проследите, чтобы директория /usr/local/lib была добавлена в /etc/ld.so.conf, и запустите ldconfig. Теперь, после запуска asterisk'а нам будет доступен канал OH323. Конфигурационный файл для него - /etc/asterisk/oh323.conf. Выглядит он, приблизительно, следующим образом:
 
; Файл конфигурации OpenH323 драйвера
;
 
;-----------------------------------------
; Основные настройки
; (порты, буфер дрожания, гейткипер, ...)
;-----------------------------------------
[general]
;
; Прослушиваемый адрес для входящих подключений.
; По умолчанию - слушать на всех интерфейсах.
;
listenAddress=0.0.0.0
;
; Прослушиваемый порт.
; По умолчанию 1720.
;
listenPort=1720
;
; Порт для удаленного подключения.
; (Используется только при отсутствии гейткипера)
; Значение по умолчанию - 1720.
;
connectPort=1720
;
; Диапазон используемых TCP портов
;
tcpStart=10000
tcpEnd=20000
;
; диапазон используемых UDP портов
; Замечание: диапазон портов, используемых RTP
; настраивается в "rtp.conf"
 
udpStart=10000
udpEnd=20000
;
; включить "быстрый старт" (yes,no).
;
fastStart=yes
;
; разрешить H.245 туннелирование (yes,no).
;
h245Tunnelling=no
;
; разрешить early H.245 сообщения на этапе инициализации звонка.
;
h245inSetup=no
;
; разрешить in-band-DTMF.
; (замечание: Netmeeting использует именно in-band DTMF)
;
inBandDTMF=no
;
; Не передавать тишину.
;
silenceSuppression=no
;
; Настройки буфера дрожания (в миллисекундах, 20...10000).
;
jitterMin=20
jitterMax=100
;
; Установить флаг "тип сервиса" в ip пакетах для RTP траффика.
; Возможные значения:
;  lowdelay, throughput, reliability, mincost, none
;
ipTos=none
;
; Максимальное число входящих/исходящих/одновременных
; H.323 подключений.
;
outboundMax=10
inboundMax=10
simultaneousMax=10
;
; Пропускная способность H.323 соединений.
; Значение задается в Кбит/с.
;
;bandwidthLimit=1024
;
; Настройки лога
; В качестве libTraceFile можно задать либо стандарный вывод 'stdout',
; либо полный путь к лог-файлу
;
wrapLibTraceLevel=1
libTraceLevel=0
libTraceFile=/var/log/asterisk/oh323.log
;
; Настройки гейткипера.
; Допустимые значения:
;  DISABLE - отключен
;  DISCOVER - автоопределение
;  < DNS имя гейткипера >,
;  < ip гейткипера >,
;  GKID:<идентификационный номер гейткипера>
;
gatekeeper=DISABLE
;
; Установить пароль для гейткипера
;
;gatekeeperPassword=secret
;
; Таймаут регистрации на ГК
;
gatekeeperTTL=600
;
; Режим отправки ввода пользователя
; Допустимые значения:
;  Q931        -  Q.931 Keypad Information Element
;  STRING      -  H.245 string
;  TONE        -  H.245 tone
;  RFC2833    -  RFC2833
;
userInputMode=RFC2833
;
; флаги AMA (автоматический учет стоимости)
; возможные значения: default, omit, billing, documentation
;
amaFlags=billing
;
; Имя для эккаунтинга
;
accountCode=H323
;
; контекст по умолчанию для H.323 звонков.
;
context=h323-incoming
 
;-----------------------------------------
; Настройки H.323 алиасов (синонимов), префиксов и
; привязка к контекстам ASTERISK
;-----------------------------------------
[register]
;
; алиасы/префиксы, связанные с контекстом по умолчанию,
; определенном в разделе  [general].
;
alias=asterisk
alias=123
;
; алиасы/префиксы, попадающие в контекст "all-aliases".
;
context=all-aliases
alias=ASTERISK
alias=666
;
; алиасы/префиксы, попадающие в контекст "more-aliases".
;
context=more-aliases
alias=665
;
; алиасы/префиксы, попадающие в контекст "all-prefixes".
;
context=all-prefixes
gwprefix=00
gwprefix=01
;
; алиасы/префиксы, попадающие в контекст "more-stuff".
;
context=more-stuff
alias=664
gwprefix=02
 
;-----------------------------------------
; Настройки, относящиеся к кодекам
;-----------------------------------------
[codecs]
;
; Определение списка доступных кодеков.
; Каждая опция "codec" может иметь связанную с ней настройку "frames"
; Допустимые значения опции "codec":
;  G711U      -  G.711 u-Law
;  G711A      -  G.711 A-Law
;  G7231      -  G.723.1(6.3k)
;  G72316K3    -  G.723.1(6.3k)
;  G72315K3    -  G.723.1(5.3k)
;  G7231A6K3  -  G.723.1A(6.3k)
;  G7231A6K3  -  G.723.1A(6.3k)
;  G726        -  G.726(32k)
;  G72616K    -  G.726(16k)
;  G72624K    -  G.726(24k)
;  G72632K    -  G.726(32k)
;  G72640K    -  G.726(40k)
;  G728        -  G.728
;  G729        -  G.729
;  G729A      -  G.729A
;  G729B      -  G.729B
;  G729AB      -  G.729AB
;  GSM0610    -  GSM 0610
;  MSGSM      -  Microsoft GSM Audio Capability
;  LPC10      -  LPC-10
; Количество фреймов в RTP пакете (если не задано явно) равно 1.
codec=G711A
frames=20
 
;codec=GSM0610
;frames=4
;codec=G729
;frames=2
;codec=G7231
;frames=2
 
3.1.2.1 Через DialPeer провайдера VoIP используя обычный IP канал
 
(Раздел в разработке)
 
3.1.2.2 Через аналоговые карты Digium
 
(Раздел в разработке)
 
3.1.2.3 Через цифровые карты E1 потока Digium или аналогичные
 
(Раздел в разработке)
 
3.2 Установка RADIUS плагина для Asterisk. Взаимодействие с LANBilling VoIP RADIUS агентом (выполняет функции сервера RADIUS).
 
 
  RADIUS модуль, о котором пойдет речь, основан на клиенте от PortaOne.
Он представляет из себя два perl-скрипта для аутентификации и эккаунтинга и набор патчей для asterisk'а. Все же имеются существенные отличия от оригинальной версии, поэтому есть смысл подробно описать все шаги установки, влючая те, что уже описаны в документе по вышеприведенной ссылке.
Итак, для начала, что позволяет этот модуль.
 
    Аутентификация.
        Есть возможность SIP Digest аутентификации (Draft RADIUS digest-auth) и PAP (rfc 2138). Второй метод удобно использовать для организации карточной платформы, либо для аутентификации узлов, не поддерживающих протокол SIP (для примера см. agi-card.agi)
        Запрос к RADIUS'у можно послать только при инициации звонка, так как на этапе регистрации телефона(софтфона) на asterisk'е последний не может обратиться к RADIUIS серверу (разработчиками не была предусмотрена такая возможность), поэтому здесь проверку подлинности осуществляет сама PBX.
        Имеется возможность задавать индивидуальные настройки RADIUS сервера для различных расширений в dialplan'е (extensions).
        По умолчанию происходит разрыв соединения в случае неудачной аутентификации. Если RADIUS возвращает атрибут Session-Timeout или h323-credit-time (cisco VSA), то по истечении указанного времени также происходит автоматический разрыв соединения.
    Эккаунтинг.
        Отсылаютя стартовый, промежуточные и завершающий эккаунтинг пакеты. Можно настроить интервал отсылки промежуточных (alive) пакетов.
        Существенным ограничением является отсутсвие возможности эккаунтинга для неаутентифицированных звонков.
    Достоинства.
        При общении с RADIUS сервером используются cisco VSA, что гарантирует совместимость со многими биллинговыми системами (в том числе LANBilling)
        Модуль целиком написан на языке perl, поэтому он легко может быть расширен и доработан для обеспечения требуемого функционала
    Недостатки.
        Аутентификация и эккаунтинг осуществляются независимым образом двумя различными процессами. На администратора ложится задача мониторинга этих двух процессов помимо самой PBX для поддержания работоспособности узла.
        Интеграция с asterisk ограничена средствами manager API и AGI интерфейса.
 
 
Установка.
 
    Для asterisk-1.0.x необходим патч, реализующий dialplan-приложение SIPGetHeader. В asterisk-1.2 соответсвующий код уже включен (следите за changelog'ом, т.к. он неоднократно модифицировался), поэтому если Вы используете версию 1.2, можете пропустить этот пункт.
    На момент написания статьи последней стабильной версией asterisk была 1.0.9. Ниже речь будет идти именно о ней.
    Необходимый патч можно взять здесь.
    Применяем патч и пересобираем asterisk:
 
    #cp patch-chan_sip.c-1.0.9 asterisk-1.0.9
    #cd asterisk-1.0.9/
    #patch -p0 < patch-chan_sip.c-1.0.9
    #make clean && make && make install
   
 
    Устанавливаем необходимые perl-модули
 
    #perl -MCPAN -e shell
 
    cpan>install Crypt::CBC
    cpan>install Crypt::DES
    cpan>install Digest::MD5
    cpan>install Authen::Radius
    cpan>q
   
 
      Также нам потребуется asterisk-perl, взять который можно здесь или здесь.
 
    #tar -zxf asterisk-perl-0.08.tar.gz
    #cd asterisk-perl-0.08/
    #perl Makefile.PL
    #make all
    #make install
   
 
    Скачиваем RADIUS клиент radiusclient.tar.gz или radiusclient-1.4.tar.gz(для asterisk-1.4.x) и распаковываем архив:
 
    #tar -zxf radiusclient.tar.gz
   
 
    Копируем agi-rad-auth.agi в директорию, определяемую переменной astagidir из asterisk.conf (по умолчанию /var/lib/asterisk/agi-bin):
 
    #cp agi-rad-auth.agi /var/lib/asterisk/agi-bin/
   
 
    Копируем ast-rad-acc.pl в любую удобную директорию:
 
    #cp ast-rad-acc.pl /usr/sbin/
   
 
    Запуск скрипта ast-rad-acc.pl следует включить в автозагрузку сиситемы. Лучше всего запускать его вместе с asterisk, добавив в стартовый скрипт для asterisk строчки, которые будут запускать и останавливать этот демон. Однако запускать его пока рано...
 
    Теперь, собственно, настройка asterisk.
    Нам потребуется отредактировать ряд конфигурационных файлов, которые по умолчанию находятся в /etc/asterisk/
    modules.conf
    Добавьте загрузку модуля res_agi.so:
 
    load => res_agi.so
   
 
 
    manager.conf
    Необходимо добавить менеджера для подключения эккаунтинг-модуля.
    Пример:
 
    enabled =yes
    port = 5038
    bindaddr = 127.0.0.1
    secret = test
    permit= 127.0.0.1
    [test]
    secret = test
    permit= 127.0.0.1
    read = system,call,log,verbose,command,agent,user
    write = system,call,log,verbose,command,agent,user
   
 
    Замечание: логин и пароль для менеджера прописаны в скрипте ast-rad-acc.pl (по умолчанию test/test). Если в manager.conf используются другие параметры доступа, то скрипт необходимо отредактировать.
 
    sip.conf
    В настройках peer'а, для которого планируется использовать SIP-аутентификацию, нужно указать 'externalauth=yes'. Также удобно определить общий контекст для таких пользователей: 'context=sip_auth'
    Пример:
 
    [123]
    type=friend
    username=123
    secret=123
    context=sip_auth
    callerid=123
    host=dynamic
    nat=no
    canreinvite=no
    externalauth=yes
   
 
 
    extensions.conf
 
    В разделе [globals] определяются глобальные настройки RADIUS сервера: ip,порты аутентификации и эккаунтинга, разделяемый секрет и интервал отсылки промежуточных пакетов эккаунтинга (0 - отменяет alive пакеты). Далее нужно создать контекст [sip_auth], упомянутый в sip.conf
    Пример:
 
    [general]
    static=yes
    writeprotect=no
 
    [globals]
    RADIUS_Server=127.0.0.1
    RADIUS_Secret=secret
    RADIUS_Auth_Port=34009
    RAIUS_Acct_Port=34008
    Acct_Update_Timeout=60
    NAS_IP_Address=127.0.0.1
 
    [sip_auth]
    exten => _X.,1,SIPGetHeader(SIP_Authorization=Proxy-Authorization)
    exten => _X.,2,AGI(agi-rad-auth.pl|AuthMode=SIP)
    exten => _X.,3,Goto(default,${DNID},1)
    exten => _X.,4,Hangup()
 
    [default]
    ; ... skipped ...
   
 
 
    Вызов скрипта аутентификации.
      Скрипт, выполняющий аутентификацию (agi-rad-auth.agi), является AGI-приложением и вызывается в dialplan'е следующим образом:
 
    AGI(agi-rad-auth.pl|Var1=Value1&Var2=Value2&...)
   
 
    В параметрах можно передавать ряд переменных:
    AuthMode=SIP|Account|AuthOnly - Тип аутентификации
      SIP cоответсвует SIP-аутентификации. Для ее использования необходимо предварительно вызвать SIPGetHeader следующим образом:
 
    SIPGetHeader(SIP_Authorization=Proxy-Authorization)
   
 
      Account - метод по умолчанию. Здесь просто проверяется имя пользователя и пароль, которые также передаются в параметрах (см. ниже).
      AuthOnly - от метода Account отличается тем, что RADIUS в этом случае не будет создавать сессию с последующим эккаунтингом: просто проверяется логин, пароль и возвращается accept либо reject. Используется для "промежуточных" запросов при реализации карточной платформы (см. пример agi-card.agi).
    Username=[username],
    Password=[password] - cоответсвенно имя пользователя и пароль. Используется в методах Account и AuthOnly.
    IfFailed=DoNotHangup - Не разрывать соединения при неудачной аутентификации. Можно проанализировать возвращаемый RADIUS'ом статус для ответа абоненту, используя IVR.
 
      После завершения RADIUS клиентом устанавливаются следующие переменные, которые можно использовать в dialplan'е:
        SIP_Username - Имя пользователя, получаемое от клиента при SIP-аутентификации.
        RADIUS_Status - Содержит ответ RADIUS сервера. Возможные значения:
          Accept - аутентификация прошла успешно
          Reject - доступ запрещен
          NoResponce - сервер не отвечает на запрос
          ConfigurationError - не получен SIP Header, необходимый для SIP аутентификации
        Все атрибуты, возвращаемые RADIUS сервером, например
        Session-Timeout
        h323-credit-time
        h323-credit-amount
        h323-currency
 
    Для корректной работы RADIUS клиента необходим словарь (radius dictionary), расположенный в /etc/raddb/. Этот словарь, устанавливаемый по умолчанию вместе с perl модулем Authen::Radius, нуждается в исправлении, так как в нем не хватает некоторых необходимых атрибутов. Работающий пример можно взять здесь.
 
    Теперь можно запускать asterisk либо стартовым скриптом, либо вручную (при этом не забыв про ast-rad-acc.pl). При запуске среди активных процессов вы должны увидеть, примерно, следующее:
 
    #ps ax | grep ast
    19629 ?        Ssl    0:00 asterisk
    19759 ?        S      0:26 /usr/bin/perl /usr/sbin/ast-rad-acc.pl
   
 
    Настройка RADIUS сервера - VoIP агента LBircd
 
    Процесс установки и настройки АСР LANBilling описан в документации.
    В настройках агента нужно не забыть указать ip адрес NAS'a (в данном случае это ip адрес сервера, на котором установлен asterisk) и разделяемый секрет. На этапе отладки и тестирования рекомендуется также установить подробную детализацию лога ("Уровень детализации журнала событий" = 3). Затем создать учетные записи с логинами и паролями, указанными в sip.conf в настройках соответсвующего peer'а. Для автоматизации этого процесса (заведение peer'а при создании учетной записи в биллинге) нужно использовать скрипты vg.create, vg.delete, vg.edit которые запускаются соответственно при создании, удалении и редактировании учетной записи. В параметрах этим скриптам передаются логин, пароль и присвоенный телефонный номер учетной записи. Пример скрипта для редактирования sip.conf можно взять здесь.
    Процесс добавления/удаления SIP-пользователя в asterisk заметно упрощается, если для хранения настроек вместо текстового файла используется база данных (см. Конфигурация из БД).
 
    Если все настроено верно, то теперь исходящие звонки с телефонов, работающих по протоколу SIP, должны успешно аутентифицироваться на RADIUS сервере. Во время звонка, посмотрев "Активные сессии" в административном интерфейсе LANBilling, Вы должны увидеть текущее соединение. По окончании звонка он удаляется из активных сессий, и в статистике появится соответсвующая запись. Если что-то не получилось, нужно анализировать логи на предмет возникших в процессе ошибок.
    Ниже приведен лог успешного соединения
 
    lbircd.log
 
    Mon Oct  3 19:15:19 2005, Info: Header->Code: 1,
    Header->Identifier: 216, Header->Length: 258
    Attribute NAS_IP_ADDRESS = 127.0.0.1
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 2.
    AVPair = "SIP/777-1098".
    Info: Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 1.
    AVPair = "call-id=1128352518.2".
    Attribute CALLING_STATION_ID = 777
    Attribute CALLED_STATION_ID = 7720863
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 24.
    AVPair = "h323-conf-id=0B26C680 B73367FC 27D5214A 71D01BB6".
    Attribute USER_NAME = '777'
    Attribute DIGEST_ATTRIBUTES
    Attribute DIGEST_ATTRIBUTES
    Attribute DIGEST_ATTRIBUTES
    Attribute DIGEST_ATTRIBUTES
    Attribute DIGEST_ATTRIBUTES
    Attribute DIGEST_ATTRIBUTES
    Attribute DIGEST_RESPONSE
    Create Session: Conf-id: 0B26C680 B73367FC 27D5214A 71D01BB6,
    Session-num: 0
 
    Info: SELECT above,call_mode,cat_number,free_seconds,round_seconds
    FROM tarifs WHERE tar_id=4
    Passed: above=5, call_mode=0, cat_number=0
    ANI User: 1 (phone=777)
    xpgk-ep-number=777
    Access granted USER=777, Phone=7720863, h323-credit-time=18000
    Authentication answer sent successfully
 
    Packet received from 127.0.0.1, size: 327
    Header->Code: 4, Header->Identifier: 104, Header->Length: 327
    Attribute ACC_STATUS_TYPE = '1'
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 25.
    AVPair = "h323-setup-time=15:15:18.000 UTC Mon Oct  3 2005".
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 27.
    AVPair = "h323-call-type=VoIP".
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 26.
    AVPair = "h323-call-origin=answer".
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 31.
    AVPair = "h323-voice-quality=0".
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 1.
    AVPair = "session-protocol=sipv2".
    Attribute VENDOR_SPECIFIC
    Info: Cisco Voice-Specific VSA. VSA number = 1.
    AVPair = "call-id=1128352518.2".
    Attribute NAS_IP_ADDRESS = 127.0.0.1
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 2.
    AVPair = "SIP/777-1098".
    Attribute USER_NAME = '777'
    Attribute CALLING_STATION_ID = 777
    Attribute CALLED_STATION_ID = 7720863
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 24.
    AVPair = "h323-conf-id=0B26C680 B73367FC 27D5214A 71D01BB6".
    Accounting START USER=777, Phone=7720863, h323-credit-time=0,
    h323-conf-id=0B26C680 B73367FC 27D5214A 71D01BB6
    Get Session: Conf-id: 0B26C680 B73367FC 27D5214A 71D01BB6,
    Session-num: 0
    Accounting answer sent successfully
 
 
    Packet received from 127.0.0.1, size: 127
    Header->Code: 4, Header->Identifier: 105, Header->Length: 127
    Attribute ACC_STATUS_TYPE = '3'
    Attribute NAS_IP_ADDRESS = 127.0.0.1
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 2. AVPair = "SIP/777-1098".
    Attribute USER_NAME = '777'
    Attribute CALLING_STATION_ID = 777
    Attribute CALLED_STATION_ID = 7720863
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 24.
    AVPair = "h323-conf-id=0B26C680 B73367FC 27D5214A 71D01BB6".
    Accounting UPDATE USER=777, Phone=7720863, h323-credit-time=0,
    h323-conf-id=0B26C680 B73367FC 27D5214A 71D01BB6
    Get Session: Conf-id: 0B26C680 B73367FC 27D5214A 71D01BB6,
    Session-num: 0
    Accounting answer sent successfully
 
 
    Packet received from 127.0.0.1, size: 397
    Header->Code: 4, Header->Identifier: 106, Header->Length: 397
    Attribute ACC_STATUS_TYPE = '2'
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 25.
    AVPair = "h323-setup-time=15:15:18.000 UTC Mon Oct  3 2005".
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 28.
    AVPair = "h323-connect-time=15:15:18.000 UTC Mon Oct  3 2005".
    Time zone is UTC
    Time understanded as Mon Oct  3 19:15:18 2005
 
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 29.
    AVPair = "h323-disconnect-time=15:16:13.000 UTC Mon Oct  3 2005".
    Time zone is UTC
    Time understanded as Mon Oct  3 19:16:13 2005
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 30.
    AVPair = "h323-disconnect-cause=0".
    Attribute ACC_SESSION_TIME = 55
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 1.
    AVPair = "session-protocol=sipv2".
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 1.
    AVPair = "call-id=1128352518.2".
    Attribute NAS_IP_ADDRESS = 127.0.0.1
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 2.
    AVPair = "SIP/777-1098".
    Attribute USER_NAME = '777'
    Attribute CALLING_STATION_ID = 777
    Attribute CALLED_STATION_ID = 7720863
    Attribute VENDOR_SPECIFIC
    Cisco Voice-Specific VSA. VSA number = 24.
    AVPair = "h323-conf-id=0B26C680 B73367FC 27D5214A 71D01BB6".
    Get Session: Conf-id: 0B26C680 B73367FC 27D5214A 71D01BB6,
    Session-num: 0
 
    delete from sessionsradius where id=1 and
    session_id='0B26C680 B73367FC 27D5214A 71D01BB6'
    Accounting STOP USER=777, Phone=7720863, h323-credit-time=0,
    h323-conf-id=0B26C680 B73367FC 27D5214A 71D01BB6
    Mon Oct  3 19:16:13 2005, Info: Accounting answer sent successfully
   
 
    asterisk -rvvv
 
    -- Executing SIPGetHeader("SIP/777-1098",
    "SIP_Authorization=Proxy-Authorization") in new stack
    -- Executing AGI("SIP/777-1098", "agi-rad-auth.agi|Mode=SIP")
    in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/agi-rad-auth.agi
    --  agi-rad-auth.agi|Mode=SIP: AGI Environment Dump:
    --  agi-rad-auth.agi|Mode=SIP:  -- accountcode =
    --  agi-rad-auth.agi|Mode=SIP:  -- callerid = 777 <777>
    --  agi-rad-auth.agi|Mode=SIP:  -- channel = SIP/777-1098
    --  agi-rad-auth.agi|Mode=SIP:  -- context = sip_auth
    --  agi-rad-auth.agi|Mode=SIP:  -- dnid = 7720863
    --  agi-rad-auth.agi|Mode=SIP:  -- enhanced = 0.0
    --  agi-rad-auth.agi|Mode=SIP:  -- extension = 7720863
    --  agi-rad-auth.agi|Mode=SIP:  -- language = en
    --  agi-rad-auth.agi|Mode=SIP:  -- priority = 2
    --  agi-rad-auth.agi|Mode=SIP:  -- rdnis = unknown
    --  agi-rad-auth.agi|Mode=SIP:  -- request = agi-rad-auth.agi
    --  agi-rad-auth.agi|Mode=SIP:  -- type = SIP
    --  agi-rad-auth.agi|Mode=SIP:  -- uniqueid = 1128352518.2
    --  agi-rad-auth.agi|Mode=SIP: RADIUS server response type = 2
    --  agi-rad-auth.agi|Mode=SIP:
    attr: name=h323-credit-time value=18000
    --  agi-rad-auth.agi|Mode=SIP:
    attr: name=Session-Timeout value=18000
    --  agi-rad-auth.agi|Mode=SIP:
    attr: name=h323-credit-amount value=963.73
    --  agi-rad-auth.agi|Mode=SIP:
    attr: name=h323-currency value=USD
    --  agi-rad-auth.agi|Mode=SIP:
    attr: name=Cisco-AVPair value=xpgk-ep-number=777
    -- AGI Script Executing Application: (UserEvent)
    Options: (_SIP_Auth|User-Name: 777)
    -- AGI Script Executing Application: (UserEvent)
    Options: (_SIP_Auth|DNID: 7720863)
    -- AGI Script agi-rad-auth.agi completed, returning 0
    -- Executing Goto("SIP/777-1098", "default|7720863|1")
    in new stack
    -- Goto (default,7720863,1)
    -- Executing Dial("SIP/777-1098", "SIP/out/7720863|30|tr")
    in new stack
    -- Called out/7720863
    -- SIP/out-e234 is ringing
    -- SIP/out-e234 answered SIP/777-1098
    -- Attempting native bridge of SIP/777-1098 and SIP/out-e234
    == Spawn extension (default, 7720863, 2) exited non-zero on
    'SIP/777-1098'
   
 
 
    Как быть с телефонами, не поддерживающими стандарт SIP?
    Можно использовать метод Account при вызове agi-rad-auth.agi. При этом в биллинге должна быть создана учетная запись с присвоенным телефонным номером(номерами), тогда эту учетную запись можно аутентифицировать по АОН:
 
    AGI(agi-rad-auth.agi|Mode=Account&Username=${CALLERID})
   
 
    Если в настройках учетной записи задана опция пароль для АОН, то нужно передать еще параметр Password=[password].
 
 
    Пример использования RADIUS клиента для реализации карточной платформы - agi-card.agi
    В примере используются звуковые файлы из asterisk-sounds-1.0.9. Данный скрипт пытается аутентифицировать звонящего по АОН. В случае неудачи запрашивается номер карты и пин. Затем, в случае успеха, сообщается баланс и запрашивается телефонный номер, на который желаете позвонить. После подтверждения объявляется максимальная продолжительность звонка, и скрипт завершается, установив переменную ${DNID2} с набранным номером.
    Пример extension.conf:
 
    [card_platform]
    exten => s,1,Wait(1)
    exten => s,2,Answer()
    exten => s,3,AGI(agi-card.agi)
    exten => s,4,Dial(SIP/${DNID2}@voip.my_provider.com,20)
    exten => s,5,Hangup()
    exten => t,1,Playback(number-not-answering)
    exten => t,2,Hangup()
   
 
 
Совет:
Если во время работы в консоли постоянно появляются сообщения типа
Odd number of elements in hash assignment at /usr/lib/perl5/site_perl/5.8.5/Asterisk/Manager.pm line 330,
нужно отредактировать модуль Manager.pm, заменив строку 330
 
my %resp = map { split(': ', $_); } $self->read_response;
 
следующей конструкцией:
 
my %resp;
foreach ($self->read_response){
  my ($a,$b) = split(': ',$_);
  $resp{$a} = $b;
}
взято тут:[http://www.lanbilling.ru/asterisk_solution.html статья]
<hr style="noshade; size=2px;">
 
=='''ПРОБЛЕМЫ И РЕШЕНИЯ'''==
 
* '''Uhhuh. NMI received for unknown reason 20 on CPU 0.'''
* '''Решение:'''
# cat /etc/modprobe.d/nmi-watchdog-blacklist.conf
...
blacklist iTCO_wdt
blacklist iTCO_vendor_support
...
edit /etc/default/grub
  ...
#
#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="ro quiet nmi_watchdog=0 pcie_aspm=off idle=nomwait"
...
# update-grub
end
#reboot
 
=='''ПОЛЕЗНОЕ'''==
<hr>
* [http://habrahabr.ru/post/158057/ asterisk FreePBX]
* [http://habrahabr.ru/post/154933/ Настройка Asterisk 1.8 + FreePBX 2.10 с нуля]
* [http://www.voxlink.ru/download/freepbx/ портал FreePBX]
* [https://serveradmin.ru/ustanovka-asterisk-13-na-debian-8/ Установка Asterisk 13 на Debian 8]
* [https://jakondo.ru/ustanovka-asterisk-16-na-debian-9-stretch/ Установка Asterisk 16 на Debian 9 Stretch]
* [https://serveradmin.ru/ustanovka-freepbx-na-debian-ubuntu/ Установка Asterisk + Freepbx на Debian/Ubuntu]
<hr>
* [https://serveradmin.ru/nastroyka-servera-telefonii-asterisk-s-nulya/ Asterisk — SIP АТС для офиса, пошаговая инструкция по настройке с нуля]
* [https://habr.com/ru/post/194812/ Организуем Asterisk IP телефонию в офисе без изучения Linux]
* [https://zadarma.com/ru/support/instructions/asterisk/ Инструкции по настройке VoIP оборудования Asterisk (для Linux)]
* [https://wiki.merionet.ru/ip-telephoniya/16/podklyuchenie-asterisk-k-operatoru-sipnet/ Подключение Asterisk к оператору Sipnet]
* [https://help.ringostat.com/knowledge-base/article/asterisk Asterisk, подключение в роли SIP клиента]
* [https://new-tel.net/support/asterisk-ats-instruktsiya-po-nastroyke/ Asterisk АТС, инструкция по настройке]
* [https://help.ubuntu.ru/wiki/asterisk Сервер телефонии Asterisk]

Версия от 01:59, 23 мая 2018

Оптимизация Windows terminal server

В данной статье рассматривается возможность оптимизации работы терминального сервера на платформе Windows. Данные рекомендации использовались на версиях Windows XP и Windows 2003. Возможно будут работать на Windows 7.

  • подразумевается, что вы уже установили сервер терминалов, он у вас работает и все дальнейшие действия выполняются на рабочем сервере. При этом категорически рекомендуем делать bakup изменений реестра или изменяемых системных файлов.
  • Рекомендация для правильной работы спулера принтеров сервера, данная операция производится после установки всех необходимых драйверов принтеров.
Сообщения об ошибках из-за проблем с монитором локального порта
После перезагрузки компьютера или после перезапуска службы «Диспетчер очереди печати» появляется следующее сообщение об ошибке: 
Сбой при запуске Spoolsv.exe
Если открыть окно свойств принтера, появляется следующее сообщение об ошибке: 
Недостаточно ресурсов
При попытке печати документа появляется сообщение об ошибке «Нарушение прав доступа» (программа Dr. Watson). В журнале программы
Dr. Watson присутствует запись об ошибке в программе Spoolsv.exe с кодом ошибки C0000005. 
Появляется следующее сообщение об ошибке и диспетчер очереди печати останавливается: 
Инструкция по адресу 'адрес' обратилась к памяти по адресу 'адрес'. Память не может быть «read». 
Такое же сообщение появляется при попытке перезапуска службы «Диспетчер очереди печати» и при открытии папки «Принтеры». 
Причиной проблемы может являться то, что используемый по умолчанию монитор локального порта заменен программой независимого
производителя. Чтобы устранить ошибку, необходимо внести изменения в системный реестр. 
  • Для этого выполните следующие действия.
Откройте редактор реестра.
2. Найдите параметр Local Port в следующем разделе реестра. 
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors\Local Port
3. Дважды щелкните параметр Driver и измените его значение. Введите строковое значение Localspl.dll и нажмите кнопку ОК.
4. Проверьте, присутствуют ли мониторы независимых производителей в следующем разделе реестра. Удалите все мониторы, 
кроме используемых по умолчанию.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Monitors
По умолчанию используются следующие мониторы. 
AppleTalk Printing Devices (присутствует, если установлены службы для Macintosh)
BJ Language Monitor
Local Port
PJL Language Monitor
Standard TCP/IP Port
USB Monitor
Windows NT Fax Monitor
** LPR Port
Примечание. Удаление монитора LPR Port должно выполняться только по рекомендации специалиста службы технической поддержки
корпорации Майкрософт. 
5. Проверьте, присутствуют ли службы печати сторонних производителей в следующем разделе реестра. Удалите все службы печати,
кроме используемых по умолчанию.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Providers
По умолчанию используется следующие службы печати. 
Internet Print Provider
LanMan Print Services
6. Проверьте, присутствуют ли обработчики печати сторонних производителей в следующем разделе реестра. Удалите все обработчики
печати, кроме используемых по умолчанию.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT x86\Print Processors 
По умолчанию используется следующий обработчик печати
WinPrint 
Чтобы определить обработчик печати, используемый принтером, с помощью средства MPS_REPORTS (Microsoft Product Support Reporting Tool)
откройте файл MachineName_PRINTDRIVERS.TXT и найдите в нем нужный обработчик печати независимого производителя и очереди, которые
его используют. 
7. Замените обработчик печати независимого производителя обработчиком WinPrint.
8. Нажмите кнопку Пуск и выберите в меню Настройка пункт Панель управления.
9. Дважды щелкните значок Принтеры, щелкните правой кнопкой мыши нужный принтер и выберите команду Свойства.
10. Перейдите на вкладку Дополнительно и нажмите кнопку Обработчик печати.
11. В списке Обработчик печати выберите WinPrint.
12. Дважды нажмите кнопку ОК.
13. Закройте редактор реестра.
После внесения изменений в реестр перезапустите диспетчер очереди печати. Для этого запустите консоль управления (MMC)
и добавьте оснастки «Управление компьютером» или «Службы». Щелкните правой кнопкой мыши службу Диспетчер очереди печати
и выберите команду Пуск.
  • При переполнении за сутки очереди печати чистим батником:
@echo off 
net stop spooler 
echo y|del C:\WINDOWS\system32\spool\PRINTERS\*
net start spooler
  • При печати клиента из терминального режима на локальный принтер в системном логе сервера появляется сообщение об ошибке:
Event ID: 1103 Description: An internal communication error occurred. Решение проблемы:
Это происходит, если имя принтера на рабочей станции не совпадает с именем 
принтера на терминал-сервере. Как правило, это бывает, если в качестве клиента
используются компьютеры под управлением Windows 95/98/Me. Запишите название 
принтера на рабочей станции в локальном режиме, затем начните установку этого 
принтера на терминал-сервере и снова запишите его название. Затем откройте 
файл %systemroot%\system32\Wtsuprn.txt и добавьте в него свой принтер. Уберите 
значек комментария перед вносимой строкой, а полученный файл сохраните под 
именем %systemroot%\system32\Wtsuprn.inf. 
(или скачайте этот файл тут: http://nixtech.ru/datatrans/win32/term-prn/wtsuprn.txt)
(или тут: http://support.citrix.com/article/CTX626451)
log on на терминал-сервере. Затем подключитесь с клиентской рабочей станции. Ваш принтер 
должен автоматически появится в папке Printers терминальной сессии.
(Инструкция от Microsoft по установке http://support.microsoft.com/kb/214593)
  • Полезные ссылки по решению проблем печати на терминальном сервере

(Решение проблем печати в терминальных сетях и терминальных службах. http://admin-dm.livejournal.com/67401.html)

(Совместимость имен принтеров при работе с терминальным сервером http://support.citrix.com/article/CTX626451)

(Terminal Server Printer Redirection Wizard Tool http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=5640)

  • Патч для увеличения максимального количества полуоткрытых соединений
Впервые данное ограничение было введено компанией Microsoft в SP2 (Service Pack 2) для Windows XP и присутствует в последующих 
версиях Windows.
Это было сделано в попытке замедлить распространение вирусов с зараженного компьютера, а также ограничить возможности участия 
компьютера в DoS-атаках (от англ. Denial of Service, отказ в обслуживании). 
Ограничение заключается в том, что компьютеру не разрешается иметь более 10 одновременных полуоткрытых исходящих соединений. 
При достижении предела новые попытки подключений ставятся в очередь. Таким образом, фактически ограничена скорость подключения
к другим компьютерам.
(Патч Half-open limit fix http://half-open.com/download_ru.htm) позволяет убрать это ограничение, то есть увеличить 
максимальный предел полуоткрытых соединений. Для подавляющего большинства пользователей будет достаточным предел, равный 100
  • Оптимизация работы клиента на медленном канале:
Цельный курсор
Установка курсора немигающим очень эффективно в низкоскоростных соединениях. Мерцающий курсор посылает несколько байт 
данных при каждом мерцании, и запрет мерцания экономит немного полосы пропускания.
HKEY_USERS/.default/Control Panel/Desktop
Установите значение CursorBlinkRate Reg_SZ -1 (1200)
Скорость обновления меню Start
Вы можете увеличить скорость обновления, чтобы уменьшить время ответа в меню.
"HKEY_USERS\DEFAULT\Control Panel\Desktop"
Добавьте значение: MenuShowDelay REG_DWORD: 10 (400)
  • Полезные советы и ссылки:
(Решение проблем с терминальным сервером и не только http://adsh.ukrweb.net/win2k/fido_faq_10.html)
  • Без перезагрузки компьютера средствами командной строки, как правило, не обходится ни один диск автоматической установки Windows - это завершающая процедура, после которой компьютер уже готов к использованию. Перезагрузить компьютер можно различными способами.

Команда shutdown

   shutdown.exe -r -f -t 20 -c "Don`t panic. The system will reboot in 20 seconds."

Справка: shutdown /?

  • управление screensaver в терминальном сервере

screensaver в терминальном сервере

944984 - на сервере стоит SP2 который уже идет с User Profile Hive Cleanup

 Service (UPHClean). 
 906952 -  на сервере отключен мап любых принтеров и остального,
 кроме дисков (флешки и флопы мапить), там отмечено, что эта проблема была учтена в SP2. Также
 там написано, что ее включить надо, так вот этот момент немного не понятен:
 To enable this hotfix, you must create the PrinterMaskKey registry subkey. To do
 this, follow these steps:
 1. Click Start, click Run, type regedit, and then click OK.
 2. Locate the following registry subkey:
 HKEY_USERS\.default\printers
 3. Right-click the registry subkey that you located in step 2, point to New,
 click Key, type PrinterMaskKey, and then press ENTER.
 4. Exit Registry Editor.
 Что конкретно нужно создать в ветке HKEY_USERS\.default\printers, если не
 трудно, поясните?
 --В локаликозованной версии regedit Key = Раздел Т.е. надо создать подраздел
 PrinterMaskKey внутри HKEY_USERS\.default\printers

Hotfix - terminal server win

Настройка меню пользователя в Win2003

  • как скрыть пункт в меню Пуск - Администрирование, от терминальных пользователей?

В групповых политиках, конфигурации пользователя, административных шаблонах, в настройках меню "Пуск" отключите необходимые элементы.

Пример:

Конфигурация пользователя -> Настройка -> Параметры панели управления -> Главное меню

Win2008adm.jpg

Решение проблем по принтерам фирмы Canon

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

При попытке подключиться к удалённому рабочему столу, выдаёт ошибку "Удаленный сеанс отключен из-за отсутствия доступных лицензий клиента сервера терминалов для этого компьютера. Обратитесь к администратору сервера", что делать? Как исправить проблему?


Решение:

Необходимо удалить раздел реестра MSLicensing. Для этого проделайте следующие действия:

   На клиенте перейдите в следующий подраздел реестра: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing.
   Выберите пункт MSLicensing.
   В меню Правка выберите команду Удалить, а затем нажмите кнопку Да, чтобы подтвердить удаление подраздела реестра MSLicensing.
   Закройте редактор реестра и пробуйте снова подключиться к удалённому компьютеру.

Исхода возможно два:

1) всё запустится и будет работать.

2) не запустится, но выдаст уже другую ошибку "Удаленный компьютер отключил сеанс из-за ошибки в протоколе лицензирования. Попытайтесь подключиться к удаленному компьютеру снова или обратитесь к администратору сервера".

Если вы получили второй исход, это означает, что раздел MSLicensing не смог создаться заново, чтобы он создался необходимо попробовать подключиться к удалённому компьютеру из под учётной записи обладающей правами администратора на данном компьютере. После этого под всеми остальными пользователями всё снова начнёт работать нормально.

взято тут

или

При подключении к удалённому рабочему столу возникает следующая ошибка: "Удаленный сеанс отключен из-за отсутствия доступных лицензий клиента сервера терминалов для этого компьютера".

Данная проблема решается двумя способами:

Если нет возможности изменить настройки сервера, то используем способ 1, иначе способ 2.

Способ 1. На стороне клиента

Необходимо удалить раздел "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000". Сделать это можно, например, выполнив следующую команду:

reg delete "HKLM\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000" /f

или тоже самое, но руками:

   "Пуск" > "Выполнить..." > Набираем "regedit.exe" и жмём OK.
   Слева в дереве выбираем ветку " HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing\Store\LICENSE000".
   Правой кнопкой мыши жмём по элементу " LICENSE000" и выбираем "Удалить".

Примечание 1. Можно встретить рекомендацию удалить ветку всю ветку "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing". Можно, но не нужно. Достаточно удалить подветку Store\LICENSE000. Примечание 2. Говорят (я не проверял), что на Windows Vista следует запустить "Подключение к удалённому рабочему столу" (mstsc.exe) от имени администратора. Примечание 3. Когда вообще ничего не помогает, то подключаемся к удалённому рабочему столу с Windows XP, а затем переносим ветку "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing" на машину с Windows Vista/7.

Способ 2. На стороне сервера

Понятно, что на каждом клиенте решать проблему неправильно и неудобно. Такая ошибка возникает, когда режим лицензирования сервера терминалов на сервере терминалов настроен как "На устройство", а на сервере лицензий имеются только клиентские лицензии доступа "На пользователя". В статье KB822134 показано, как решить эту проблему:

   Нажмите кнопку "Пуск" и выберите последовательно пункты "Администрирование" и "Настройка служб терминалов".
   Выберите узел "Параметры сервера" и дважды щелкните элемент "Лицензирование".
   Установите для параметра "Режим лицензирования" значение "На пользователя" и нажмите кнопку "ОК".

от сюда...

Сопоставление принтеров в терминальном подключении Win2003 R2

Решение проблемы: Сопоставление драйверов от клиента к серверу Для решения этой проблемы можно сопоставить имена драйверов принтеров на сервере с именами драйверов на клиентах. Например, вы можете сказать серверу, что драйвер клиентского принтера с именем “Hewlett Packard LaserJet 5P” является тем же драйвером, что и драйвер на сервере “HP LaserJet 5P.” Учтите, что это вам нужно, если (1) вы используете отображение клиентских принтеров и (2) используете клиентов, отличных от Windows 2000 или Windows XP. Чтобы разрешить сопоставление драйверов, разместите на терминальном сервере файл, который содержит пары имен драйверов на стороне клиента и на стороне сервера. В ранних версиях сервера терминалов это делалось с помощью файла “wtsuprn.inf”, находящегося в каталоге %systemroot%\system32\. Однако, в Windows Server 2003 этого файла нет и он не ищется. Для создания файла сопоставления в Windows 2003 вам нужно добавить в реестр два значения:

Key: HKLM\SYSTEM\CurrentControlSet\
Control\Terminal Server\Wds\rdpwd
Type: REG_SZ
Value: PrinterMappingINFName
Data: Имя файла .INF, содержащего сопоставление имен драйверов - например, c:\winnt\inf\printsubs.inf
Key: HKLM\SYSTEM\CurrentControlSet\
Control\Terminal Server\Wds\rdpwd
Type: REG_SZ
Value: PrinterMappingINFSection

Data: Наименование раздела в файле .INF, содержащего собственно сопоставление (Например, Printers) После внесения изменений реестр перезапустите службу спулера или перезагрузите сервер терминалов, чтобы изменения вступили в силу. После изменения реестра вам следует создать файл .INF, включающий имена драйверов. Этот файл должен выглядеть так:

;PRINTSUBS.INF
;This file contains Mappings for Client driver to Server driver printer connections
[Printers]
;"Client Printer Driver Name" = "Server Printer Drive Name"
"Hewlett Packard LaserJet 5P" = "HP LaserJet 5P"

Вы можете создать этот файл в Notepad и сохранить его с расширением .INF в каталоге %SystemRoot%\System32\. Имена драйверов в этом файле чувствительны к реестру и пробелам. Все, что находится внутри кавычек, должно точно соответствовать имени драйвера. Как и в большинстве файлов .INF лидирующий символ точка-с-запятой ( означает комментарий и такая строка игнорируется. При использовании этого файла вы можете включить в него несколько сопоставлений имен драйверов. Создание карты сопоставления - больше искусство, чем наука. К счастью, есть замечательный сайт www.printingsupport.com. На нем вы найдете файлы сопоставления имен драйверов, которые можете использовать в своей среде. Создав файл сопоставления, вы должны разместить его на всех терминальных серверах, где применяется отображение клиентских принтеров. Учтите, этот файл указывает на драйверы, которые должны быть инсталлированы на терминальном сервере. Если ваш файл .INF содержит синтаксические ошибки (кроме неверного указания имени драйвера внутри кавычек), вы можете получить в журнале событий следующее сообщение:

Event 1110: "Error processing ntprint.inf. If the file on the system is corrupt, you can restore it from the installation media.

Это сообщение сбивает с толку, поскольку ссылается на файл “ntprint.inf ”, а не на указанное вами имя файла. Эта ошибка обычно означает, что ваш файл .INF содержит ошибку. Чаще всего это бывает, когда в файле не содержится записей. Ваш новый файл .INF должен содержать минимум одно сопоставление и минимум одно сопоставление не должно начинаться с символа комментария. Если ваш файл .INF содержит пустое имя секции, вы также получите ошибку 1110.