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

Агрегация сетевых адаптеров в Windows Server 2012 (NIC Teaming)


PS E:\> Get-NetAdapter

PS E:\> New-NetLbfoTeam -Name Team01 -TeamMembers 12,13 -TeamingMode SwitchIndependent -LoadBalancingAlgorithm TransportPorts

TeamMembers можно указать как с помощью ifIndex, так и с помощью имени (например, -TeamMembers Ethernet,'Ethernet 2')

TeamingMode указываем один из трех параметров: SwitchIndependent распределять трафик независимо от настроек свитча (либо разных свитчей), Lacp (динамически с помощью этого протокола) или Static (необходима конфигурация портов на свитче).

LoadBalancingAlgorithm алгоритм балансировки: TransportPorts технология хэширования (на основании хэша из IP, MAC, Port и их связок), HyperVPort виртуальный свитч распределяет каждой ВМ отдельный NIC, IPAddresses на основании IP-адреса, MacAddresses на основании MAC адреса.
С текущими группами портов, их настройками и состоянием можно познакомится при помощи команды:

Get-NetLbfoTeam

Удалить группу можно командой:

Remove-NetLbfoTeam -Name Team01

Более подробно об этом, а также "ка это делать в GUI" можно прочитать в статье:
http://habrahabr.ru/company/microsoft/blog/162509/

Взято с http://vam.in.ua/index.php/it/25-ms-powershell/125-nic-teaming-server2012.html

powershell удаленный запуск приложения

powershell удаленный запуск приложения

Запуск интерактивного сеанса

Чтобы запустить интерактивный сеанс с одним удаленным компьютером, используйте командлет Enter-PSSession. Например, чтобы запустить интерактивный сеанс с удаленным компьютером Server01, введите:
enter-pssession Server01
В командной строке отобразится имя компьютера, к которому вы подключены. В дальнейшем все команды, введенные в командной строке, будут запускаться на удаленном компьютере, а результаты отобразятся на локальном компьютере.
Чтобы завершить интерактивный сеанс, введите:
exit-pssession

Выполнение удаленной команды

Чтобы выполнить любую команду на одном или нескольких удаленных компьютерах, используйте командлет Invoke-Command. Например, чтобы выполнить команду Get-UICulture на удаленных компьютерах Server01 и Server02, введите:

invoke-command -computername Server01, Server02 {get-UICulture}
Выходные данные будут возвращены на ваш компьютер.
Чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета Invoke-Command. Сценарий должен быть включен или доступен для локального компьютера. Результаты будут возвращены на локальный компьютер.
Например, следующая команда выполняет сценарий DiskCollect.ps1 на удаленных компьютерах Server01 и Server02.
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1

Установка постоянного подключения
Чтобы выполнить ряд связанных команд с общими данными, создайте сеанс на удаленном компьютере, а затем используйте командлет Invoke-Command для выполнения команд в созданном сеансе. Чтобы создать удаленный сеанс, используйте командлет New-PSSession.
Например, следующая команда создает удаленный сеанс на компьютере Server01 и другой удаленный сеанс на компьютере Server02. Она сохраняет объекты сеанса в переменной $s.
$s = new-pssession -computername Server01, Server02
После установки сеансов в них можно выполнить любую команду. Так как сеансы являются постоянными, вы можете собирать данные в одной команде и использовать их в последующей.
Например, следующая команда выполняет команду Get-Hotfix в сеансах в переменной $s и сохраняет результаты в переменной $h. Переменная $h создается в каждом сеансе в $s, но она не существует в локальном сеансе.
invoke-command -session $s {$h = get-hotfix}
Теперь данные в переменной $h можно использовать в последующих командах, таких как следующая. Результаты отобразятся на локальном компьютере.

invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"}



Всё взято с https://technet.microsoft.com/ru-ru/library/dd819505.aspx

воскресенье, 3 января 2016 г.

HYPER-V SERVER 2012 R2 настройка и подключение без домена

Весь процесс установки занимает несколько минут и оканчивается стандартным приглашением для администратора. После задания пароля открывается синее меню.

1. Задаем необходимые параметры — имя, сетевые адреса, включаем RDP и автообновления.
Создаем нового пользователя с правами администратора.
2.Включаем все правила фаервола, затем можно будет из более удобной консоли их все настроить и лишние выключить.
 Netsh advfirewall firewall set rule all new enable=yes
(или откл вообще netsh advfirewall set allprofiles state off
или Set-NetFirewallProfile –Profile * -Enabled False )

3. На клиенте mmc.exe, добавляем оснастку управления локальными политиками, указываем айпи hyper-v server
Computer Configuration -> Administrative Templates -> System -> Device Installation  и включить настройку Allow remote access to the PnP interface (Конфигурация компьютера-Административные шаблоны-Система-Установка устройств включить Разрешить удаленный доступ к устройствам Plug and Play)

4. В PowerShell на  hyper-v server
Set-ExecutionPolicy RemoteSigned
Configure-SMRemoting.exe –Enable

5. Берем флешку и записываем на нее Total Commander и HVRemote. Вставляем в сервер и с помощью командной строки создаем на диске С: папку и копируем туда.
Дальше нам понадобится утилита HVRemote. Запускаем на гипервизоре консоль, идем в папку, где лежит утилита и выполняем команду:

cscript hvremote.wsf /add:имя_администратора

"Если домена нет, нужно будет выполнить следующие шаги:
• Создать на сервере и на клиенте аккаунт с помощью net user
• Дать этому пользователю доступ cscript hvremote.wsf /add:accountname ***
• На клиенте разрешить анонимный доступ к DCOM cscript hvremote.wsf /anondcom:grant"

Настройка клиента Windows 8 для управления сервером Hyper-V

1.Установите инструментарий управления Hyper-V: Hyper-V Management Tools в разделе Programs and Features панели управления.windows 8 установка hyper-v managment tools
 Установить   RSAT (remote system administration tools)
RSAT для Windows 8 работает только с Windows 2012
RSAT для Windows 7 Sp1 работает только с Windows 2008 R2 SP1


2.Создайте новую учетную запись пользователя с таким же именем и паролем, как и на Windows Server 2012 с ролью Hyper-V (hypervusr). Добавьте пользователя в группу локальных администраторов (Administrators)

3.В консоли управления компонентами откройте свойства компьютера. Перейдите на вкладку COM Security и в разделе Access Permissions нажмите кнопку Edit Limits. Проверьте, что для ANONYMOUS LOGON разрешены удаленные подключения (Remote Access – Allow). Добавьте нового пользователя и также предоставьте ему права удаленного подключения (Remote Access – Allow).

4.Сохраним учетные данные для доступа к серверу, выполнив с правами администратора команду:
cmdkey /add:hyper-v-server-name /user:hypervusr /pass:parol_polzovatelya_hypervusr

5. В PowerShell на клиенте : Set-Item WSMan:\localhost\Client\TrustedHosts -Value <RemoteServerName> -Concatenate, где RemoteServerName это имя Hyper-V server который хотите админить


пятница, 20 марта 2015 г.

CISCO начальная настройка маршрутизатора + PPPOE + NAT+ ACL

Создаем пользователя:

Router(config)# username vash_user privilege 15 ​secret super_password

где, vash_user  - имя пользователя super_password - Ваш  пароль.

Задаем имя хоста:

Router(config)# hostname Cisco

Задаем пароль на привилегированный режим -

Cisco(config)# enable password vash_password

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

Cisco(config)# service password-encryption

Устанавливаем время на маршрутизаторе
Cisco(config)# clock set 14:00:00 31 oct 2015

Временную зону
Cisco(config)# clock timezone MSK +3

Указываем имя домена (необходимо для генерации ключа)
Cisco(config)# ip domain name test.local

Активируем протокол ААА (до активации ААА в системе обязательно должен быть заведен хотя бы один пользователь) и указываем тип авторизации

Cisco(config)# aaa new-model
Cisco(config)# aaa authentication login default local
Cisco(config)# aaa authorization exec default local  

Задаем dns-сервера
Cisco(config)# no ip domain lookup
Cisco(config)# ip name-server 212.12.0.2
Cisco(config)# ip name-server 8.8.8.8

Задаем сервер ntp
Router(config)# ntp server 204.123.2.72

Генерируем RSA ключ (необходимо будет выбрать размер ключа)
Cisco(config)# crypto key generate rsa



(Иногдабывает глюк: включается ssh v.1 и никак не включить v.2, выглядит это примерно так:

cisco(config)#ip ssh version 2

Please create RSA keys (of atleast 768 bits size) to enable SSH v2

Обнуляем все имеющиеся ключи:

cisco(config)#crypto key zeroize rsa

Генерируем новые:

cisco(config)#crypto key generate rsa

Включаем долгожданный SSH v.2:

cisco(config)#ip ssh version 2)Разрешаем компьютерам внутренней сети заходить на Cisco по SSH

cisco(config)#access-list 23 permit 192.168.1.0 0.0.0.255

Входим в режим конфигурирования терминальных линий с 0 по 4

 cisco(config)# line vty 0 4

Указываем средой доступа через сеть по умолчанию SSH

cisco(config-line)# transport input ssh

Активируем автоматическое поднятие строки после ответа системы на проделанные изменения
cisco(config-line)# logging synchronous

Указываем время таймаута до автоматического закрытия SSH сессии в 60 минут

cisco(config-line)# exec-timeout 60 0

Привязываем группу доступа, созданную на шаге 9, к терминальной линии

cisco(config-line)# access-class 23 in

Выходим из режима конфигурирования терминальных линий

 cisco(config-line)# exit

Настройка порта, подключенного к локальной сети

Cisco(config)# interface    FastEthernet0/1
Cisco(config-if)#ip address 192.168.1.1 255.255.255.0
Cisco(config-if)#ip nat inside
Cisco(config-if)#no shutdown
Cisco(config-if)#exit

Настройка порта, подключенного к сети провайдера

interface GigabitEthernet0/0
no ip address
duplex auto
speed auto
pppoe enable
pppoe-client dial-pool-number 1

Так как к провайдеру подключаемся черезе PPPOE настроим виртуальный интерфейс Dialer0,  ip получаем по DHCP от провайдера (ip address negotiated), включаем NAT, указываем размер mtu, тип инкапсуляции (ppp), авторизации (ppp authentication pap callin), задаем параметры авторизации - логин и пароль

Cisco(config-if)#interface Dialer0
Cisco(config-if)#ip address negotiated
Cisco(config-if)#ip nat outside
Cisco(config-if)#ip mtu 1492
Cisco(config-if)#encapsulation ppp
Cisco(config-if)#dialer pool 1
Cisco(config-if)#ppp authentication pap callin
Cisco(config-if)#ppp chap hostname xxxx

Cisco(config-if)#ppp chap password xxxx

Cisco(config-if)#ip tcp adjust-mss 1452
Cisco(config-if)#exit

Назначаем маршрут по умолчанию.
Cisco(config)#ip route 0.0.0.0 0.0.0.0 Dialer0
Настраиваем NAT

Cisco(config)#ip nat inside source list 100 interface Dialer0 overload
Cisco(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255
Пробросим порт на внутреннюю машину
Cisco(config)#ip nat inside source static tcp 192.168.1.50 1433 interface Dialer0 1433

Отключаем управление через SDM CDP для безопасности
Cisco(config)# no ip http server
Cisco(config)# no ip http secure-server
Cisco(config)#no ip redirects
Cisco(config)#no ip unreachables
Cisco(config)#no ip proxy-arp
Cisco(config)#no ip mrout-cache
Cisco(config)#no cdp run

no ip redirects — отключает переадресацию протокола управляющих сообщений (Internet Control Messging Protocol, ICMP). ICMP переадресует сообщения от маршрутизатора с указанием лучшего сетевого маршрута. Такие сообщения могут быть использованы для организации атаки по типу «отказ в обслуживании».
no ip unreachables — отключает сообщения протокола ICMP о недоступности участков сети. Эти сведения маршрутизатор передает при невозможности доставить пакет адресату. Они также могут быть использованы для организации атаки по типу «отказ в обслуживании».
no ip proxy-arp — протокол разрешения адресов (Address Resolution Protocol, ARP) позволяет маршрутизатору отвечать на запросы ARP от подсетей помимо той, к которой он подключен. Для того чтобы информацией не воспользовались взломщики, такую возможность лучше отменить.
no ip mrout-cache — отключает кэш многоадресной рассылки Cisco IOS. Если рассылка не используется, то кэш для нее не нужен.

Осталось навесить списки доступа ACL

четверг, 12 марта 2015 г.

Настройка SSH в Cisco.(взято с http://habrahabr.ru/ )

Входим в привилегированный режим
1. cisco> enable
Устанавливаем точное время для генерации ключа
2. cisco# clock set 07:20:00 28 Aug 2014
Входим в режим конфигурирования
3. cisco# configure terminal
Указываем имя домена (необходимо для генерации ключа)
4. cisco(config)# ip domain name test.local
Генерируем RSA ключ (необходимо будет выбрать размер ключа)
5. cisco(config)# crypto key generate rsa
Активируем шифрование паролей в конфигурационном файле
6. cisco(config)# service password-encryption
Заводим пользователя с именем user, паролем Pa$$w0rd и уровнем привилегий 15
7. cisco(config)# username user privilege 15 password 7 Pa$$w0rd
Активируем протокол ААА. (до активации ААА в системе обязательно должен быть заведен хотя бы один пользователь)
8. cisco(config)# aaa new-model
Разрешаем компьютерам внутренней сети заходить на Cisco по SSH
9. cisco(config)#access-list 23 permit 192.168.0.0 0.0.0.255
Входим в режим конфигурирования терминальных линий с 0 по 4
10. cisco(config)# line vty 0 4
Указываем средой доступа через сеть по умолчанию SSH
11. cisco(config-line)# transport input ssh
Активируем автоматическое поднятие строки после ответа системы на проделанные изменения
12. cisco(config-line)# logging synchronous
Указываем время таймаута до автоматического закрытия SSH сессии в 60 минут
13. cisco(config-line)# exec-timeout 60 0
Привязываем группу доступа, созданную на шаге 9, к терминальной линии
14.cisco(config-line)# access-class 23 in
Выходим из режима конфигурирования терминальных линий
15. cisco(config-line)# exit
Выходим из режима конфигурирования
16. cisco(config)# exit
Сохраняем конфигурационный файл в энергонезависимую память
17. cisco# copy running-config startup-config

среда, 23 июля 2014 г.

Как посмотреть загрузку сетевого интерфейса в FreeBSD.

Чтобы посмотреть насколько в данный момент загружен канал:

systat -ifstat n

n - количество времени в секундах, через которое данные будут обновляться.

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

cd /usr/ports/net-mgmt/iftop

make install clean

rehash

Далее запускаем утилиту командой:

iftop

вторник, 15 июля 2014 г.

понедельник, 12 мая 2014 г.

Голосового меню (IVR) в ASTERISK.



Опишем создание голосового меню, состоящего из приветствия и после приветствия, переключение на оператора. Файл в котором хранится фраза «Здравствуйте, вы позвонили в нашу компанию» называется welcome.wav и находится в директории /usr/local/etc/asterisk/ivr. Номер, который принимает звонки 444. А выглядеть меню будет так:

[sip-in]
exten => 444,1,Set(home="/usr/local/etc/asterisk/ivr")
exten => 444,2,Wait(1)
exten => 444,3,Playback(${home}/welcome)
exten => 444,4,Dial(SIP/operator)
Функция Playback, предназначена для проигрывания звуковых файлов, файлы должны быть подготовленны заранее, для Asterisk. Есть еще сходная функция Background, она отлдичается от Playback тем, что не блокирует нажатия на кнопки, то есть в момент проигрывания голосовых меню, позволяет реагировать на передаваемые звонившим DTMF.
Это простейший IVR и в нем отсутствует основная особенность IVR, нет никакого выбора. Поэтому приведем пример с диалогом. Тут будет присутствовать вторая начитка: «Для связи того что бы прослушать тарифы нажмите 1, для связи с оператором нажмите 2″. Файл содержащий эту начитку будет называться menu.wav и файл с тарифами соответсвенно tariff.wav. После прочтения инструкции должен осуществляться переход в главное меню.
Выглядит это так:
[sip-in]
exten => 444,1,Goto(menu,s,1)

[menu]
exten => s,1,Set(home="/ usr/local/etc/asterisk/ivr ")
exten => s,2,Wait(1)
exten => s,3,Playback(${home}/welcome)
exten => s,4,Playback(${home}/menu)
exten => s,5,WaitExten()

exten => 1,1,Playback(${home}/tariff)
exten => 1,2,Goto(s,1)

exten => 2,1,Dial(SIP/operator)

exten => t,1,Playback(make_choice)
exten => t,2,Goto(s,1)

exten => i,1,Playback(wrong_choice)
exten => i,2,Goto(s,1)
Goto – функция безусловного перехода. Если в качестве параметров ей передается 3 аргумента, это контекст, екстеншен и метка на которую нужно перейти. Если всего 2 аргумента, то подразумевается, что контекст текущий.
 i – это реакция на неправильно нажатую кнопку, Invalid input
t – реакция на истекшее время ожидания выбора.

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

четверг, 8 мая 2014 г.

Очереди звонков Asterisk

При телефонизации необходимость создания очереди звонков возникает достаточно часто. Например при наличии нескольких  менеджеров , руководитель хочет, что бы им на отдел поступали звонки и звонки равномерно распределялись по менеджерам, или что бы все звонки поступали ко всем сразу все это работает. Работает с помощью Queue.
С начала добавим в sip.conf наших менеджеров:
[111]
context=support
callerid="111" <111>
username=111
secret=*******
call-limit=1
callgroup=10
pickupgroup=15
dtmfmode=rfc2833
deny = 0.0.0.0/0.0.0.0
permit = 192.168.10.10/255.255.255.255

Теперь создадим очередь и добавим в конце описание нашей очереди. Описывается она в queues.conf:
[general]
persistentmembers = yes
autofill = yes

[queue1] ;Название нашей очереди
music = default ;Во время ожидания будет звучать музыка по умолчанию
strategy = ringall ;В очереди будут звонить все телефоны одновременно
timeout = 60
retry = 5
maxlen = 0
joinempty = yes ;разрешать входить в очередь даже в том случае, если все операторы не доступны
ringinuse = no

;Блок для анонса позиции в очереди
announce-frequency = 30 ;частота анонсов
announce-holdtime = no ;не объявлять приблизительное время ожидания
announce-position = limit ;если очередь слишком велика (более 6 вызовов), то
announce-position-limit = 6 ;информация о позиции выдаваться не будет, что бы
;не пугать пользователей

;Описываются пути к речевым файлам,
;которые используются для нашей простой очереди
queue-youarenext = /etc/asterisk/sounds/support/queue-youarenext
queue-thereare = /etc/asterisk/sounds/support/queue-thereare
queue-callswaiting = /etc/asterisk/sounds/support/queue-callswaiting
queue-thankyou = /etc/asterisk/sounds/support/queue-thankyou

;Описываем телефоны, которые будут принимать вызовы.
member=>SIP/111
member=>SIP/112
member=>SIP/113
member=>SIP/114

А теперь осталось направить входящие звонки на Queue. Для этого в extensions.conf, в том контексте в котором должны поступать звонки на очередь, прописываем:

exten => 101,1,Answer() 
exten => 101,n,Background(/etc/asterisk/sounds/support/ivr-techpodderzhka)
exten => 101,n,WaitExten(5)
exten => 101,n,Dial(${SIP/500,120,r)
exten => 1,1, Dial(${SIP/500,120,r)
exten => i,1, Dial(${SIP/501,120,r) ; если клиент набрал несуществующий номер пункта меню

exten => 2,1,Dial(SIP/111&SIP/112&SIP/113&SIP/114,r)
exten => 2,n,Playback(/etc/asterisk/sounds/support/queue-vsezanyaty)
exten => 2,n,Queue(queue1,t,,,300) 

среда, 7 мая 2014 г.

sip.conf

Перенаправление звонков


Согласно нашему плану трехзначных номеров, вызываемый абонент должен снять
трубку в течение 10 секунд. Давайте настроим перенаправление звонка на мобильный
телефон пользователя, если он не ответил на звонок в течение этого периода. В Asterisk
есть несколько способов реализации этого алгоритма, в том числе с использованием
приложения FollowMe. В файле конфигурации этого приложения для каждого
пользователя можно определить список номеров телефонов, по которым можно его найти.

admin@asterisk:~$ echo > /etc/asterisk/followme.conf
admin@asterisk:~$ ee /etc/asterisk/followme.conf
[101]
number=>89161111111,30
number=>89122222222,30
context=>default
[102]
number=>89111111111,30
number=>89222222222,30
context=>default

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

Давайте добавим вызов приложения FollowMe в конец обработки вызова
трехзначных номеров в файле, описывающем план звонков:

admin@asterisk:~$ ee /etc/asterisk/extensions.conf

;...
exten => _1XX,1,Dial(SIP/${EXTEN},10)
 same => n,FollowMe(${EXTEN})
;...

Приложению FollowMe в качестве аргумента передается имя пользователя, описанного в
файле followme.conf, и, в нашем случае, имя совпадает с номером, набранным

вызывающим абонентом.

Cтандартные расширения диалплана


a: Вызывается, когда пользователь нажимает '*' во время проигрывания приветствия системы голосовой почты.
h: Вызывается, по завершению вызова.
i: Вызывается, при попытке вызова неизвестного екстеншена.
o: Расширение оператора, используется для обработки нажатия нуля в системе голосовой почты.
s: Стартовое расширение в контексте.
t: Вызывается, при наступлении состояния таймаута.
T: Вызывается, при наступлении состояния абсолютного таймаута, заданного функцией AbsolutTimeout.
e: Перехват расширений i,t и T для обработки ошибки в едином месте. Для выяснения типа ошибки может быть использована функция EXCEPTION()
failed: Используется, если auto-dial out вызов завершился неудачно (который имеет определённый контекст, приоритет и расширение).
fax: Используется для определения факса на Zap каналах.

talk: Используется в конъюнкции с BackgroundDetect.

Команды Goto и GotoIf в диалплане

Goto
Назначение
Переход на указанный приоритет, екстеншен или контекст

Описание
Goto([[context|]extension|]priority)

Устанавливает текущей приоритет выполнения команды в заданное значение, дополнительно можно указать екстеншен и контекст для совершения перехода. Специальное имя екстеншена BYEXTENSION используется в тех случаях, когда Вы хотите совершить переход с использованием текущего имени екстеншена, в другой контекст. Обратите внимание, что можно опустить необязательные параметры команды только в КОНЦЕ списка аргументов, нельзя опустить необязательный аргумент, идущий до или между заданными параметрами.

Варианты использования:
Goto(context,extension,priority)
Goto(extension,priority)
Goto(priority)

Примеры:
exten => 1,1,Goto(submenu,s,1) ; переход в контекст "submenu", на екстеншен "s", к команде с приоритетом 1
exten => 600,4,Goto(s,6) ; переход в текущем контексте, к екстеншену "s", к команде с приоритетом 6

exten => s,1,Dial(${ARG2},20,r)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1})
exten => s-CHANUNAVAIL,1,Voicemail(b${ARG1})
exten => s-BUSY,1,Voicemail(b${ARG1})
exten => _s-.,1,Voicemail(u${ARG1})
Команда GotoIf()

Назначение
Переход по условию

GotoIf
Описание
GotoIf(condition?label1[:label2])

Переход к команде label1, если условие condition истина, или выполнение следующей, по приоритету, команды (или, если определено, переход к команде label2) если условие condition ложно, или:

GotoIf(condition?[label1]:label2)

Выполнение следующей, по приоритету, команды (или команды label1, если определено) если условие condition истина, или переход к команде label2, если условие condition ложно.

Параметры label1 или label2 могут быть опущены (в этом случае, ветвление возможно только по одному из условий). Отсутствие обоих точек перехода не допускается.

Условие condition - это текстовая строка. Если строка пустая или содержит "0", то условие будет считаться ложью. Если она содержит что-то другое, то условие будет истиной. Это сделано для совместимости с механизмом регулярных выражений, используемых в Asterisk.

Метка перехода задается в виде '[[контекст,]екстеншен,]приоритет. Итак, для нее мы можем задать следующие комбинации: (a) только приоритет, (b) екстеншен и приоритет, или (c) контекст, екстеншен и приоритет. Этот формат такой же, как и формат аргумента команды Goto.

Пример 1
  exten => 206,1,GotoIf($["${CALLERIDNUM}" = "303"]?3:2)
  exten => 206,2,GotoIf($["${CALLERIDNUM}" = "304"]?5:7)
  exten => 206,3,Dial(${SPHONE1},15,rt)
  exten => 206,4,Hangup
  exten => 206,5,Dial(${PHONE2},15,rt)
  exten => 206,6,Hangup
  exten => 206,7,MusicOnHold(default)

Пример 2
 ; Надо определить, являются ли первые три символа, полученного значения в переменной
; ${ENUM}, значениями SIP или IAX. Если нет, игнорируем эту переменную и переходим к
; приоритету 4, где осуществляем стандартный набор номера
 exten => _011X.,2,GotoIf($[$["${ENUM:0:3}" = "SIP"] | $["${ENUM:0:3}" = "IAX"]]?3:4)



Пример 3
  ; Этот пример проверяет на пустое значение callerID или на номер 800 серии.
  ; Вызывающим абонентам с номерами на 800 (обычно "telemarketers") или
  ; те, у которых не представлено caller ID, будет предложено нажать 1 для разговора.
  exten => s,1,NoOp(${CALLERID}) ; просто смотрим на callerID
  ; проверяем callerID. Если не задан, предлагаем абоненту нажать 1.
  exten => s,2,GotoIf($["${CALLERIDNUM}" = ""]?s|1000)
  ; Если номер начинается на 800, предлагаем абоненту нажать 1.
  exten => s,3,GotoIf($["${CALLERIDNUM:0:3}" = "877"]?s|1000)
  exten => s,4,GotoIf($["${CALLERIDNUM:0:3}" = "800"]?s|1000)
  ; OK, тут у нас нормальный callerID и точно не номер из 800 серии.
  ; Теперь вызываем нужный нам телефон:
  exten => s,5,Dial(SIP/604&SIP/602,25,tr)

  exten => s,1000,Background(press1tospeaktome)

взято с http://asterisk.ru/

Команды плана набора IP АТС Asterisk

Команды плана набора IP АТС Asterisk



Использование команды Dial

Использование команды Dial для SIP каналов

Формат команды Dial выглядит примерно так:

Dial(type/identifier,timeout,options,URL)

Для каналов SIP, параметр type всегда имеет значение - SIP. Остальные аргумент: timeout, options и URL описаны на странице описания команды Dial.

Параметр identifier может состоять из следующих трех частей:

[ exten@]peer [ :portno]

peer: имя вызываемого клиента. Это может быть одним из следующих значений:
клиент типа "peer" или "friend", который описан в файле sip.conf.
IP адрес (типа 192.168.1.8)
имя домена (например: asterisk.org).
exten: если задан этот параметр, тогда Asterisk будет запрашивать удаленный сервер соединение с екстеншеном exten.
portno: используемый UDP порт. Если не указан, Asterisk будет использовать стандартный SIP порт - 5060.
exten: если задан этот параметр, тогда Asterisk будет запрашивать удаленный сервер соединение с екстеншеном exten.

exten => s,1,Dial(SIP/ipphone)
; Вызов SIP клиента "ipphone", в соответствии с его параметрами в файле sip.conf
exten => s,1,Dial(SIP/john@foo.com)
; Вызвать абонента "john" на сервере foo.com
exten => s,1,Dial(SIP/192.168.1.8:9999,20)
; Отправить вызов на адрес 192.168.1.8 по порту 9999, с таймаутом ожидания - 20 секунд.
exten => s,1,Dial(SIP/8500@sip.com:9876)

; Соединиться с sip.com по порту 9876, запросить соединение с екстеншеном 8500.

Заметки по диалплану(extensions.conf)

В файле extensions.conf имя екстеншена является шаблоном, если оно начинается с символа подчеркивания (_).
В именах шаблонных екстеншенов, следующие символы имеют специальное значение и трактуются особым образом:
X соответствует любому числу от 0 до 9
Z соответствует любому числу от 1 до 9
N соответствует любому числу от 2 до 9
[1237-9] соответствует любому числу или диапазону чисел, которые заключены в квадратные скобки (в данном случае: 1,2,3,7,8,9)
. специальный символ, соответствует одному или более символов (не только цифрам)
! специальный символ, соответствует отсутствию, одному или более символов (не только цифрам)

В Asterisk существуют глобальные и специфичные для каналов переменные, используемые в качестве аргументов для команд. Переменные записываются в диалплане в виде ${foo}, где 'foo' это имя переменной. Имена должны начинаться с буквы и могут состоять из любых цифр и букв, но существуют предопределенные имена, вот некоторые из них:
${CONTEXT} Текущий контекст. 
${EXTEN} Текущий екстеншен. 
${EXTEN:x} Текущий екстеншен с удалением первых цифр(где х кол-во удаляемых цифр) 
${PRIORITY} Текущий приоритет 
${CALLERID} Текущий CallerID (имя и номер) 
${CALLERIDNUM} Текущий номер Caller ID 
${CALLERIDNAME} Текущее имя Caller ID 
${RDNIS} перенаправление DNIS 

В правилах можно использовать X – цифры от 0 до 9, Z – цифры от 1 до 9, N – цифры от 2 до 9 или последовательности цифр в квадратных скобках. 
К примеру для маршрутизации на номер начинающийся на 80 и состоящий из 11 цифр подойдет такое правило:
exten => _80XXXXXXXXX,1,Dial(SIP/provider1)
Подчеркивание в начале правила означает, что правило представляет изх себя регулярное выражение.
Правило которое говорит маршрутизировать звонки из 7 цифр:
exten => XXXXXXX,1,Dial(SIP/provider1)
 [sip-in]
exten => 444,1,Goto(menu,s,1) 
[menu] 
exten => s,1,Set(home="/home/menu") 
exten => s,2,Wait(1)
exten => s,3,Playback(${home}/welcome)
exten => s,4,Playback(${home}/menu)
exten => s,5,WaitExten()
exten => 1,1,Playback(${home}/tariff)
exten => 1,2,Goto(s,1)
exten => 2,1,Dial(SIP/operator)
exten => t,1,Playback(make_choice)
exten => t,2,Goto(s,1)
exten => i,1,Playback(wrong_choice)

exten => i,2,Goto(s,1)
Goto – функция безусловного перехода. Если в качестве параметров ей передается 3 аргумента, это контекст, екстеншен и метка на которую нужно перейти. Если всего 2 аргумента, то подразумевается, что контекст текущий. Так же появились екстеншены i – это реакция на неправильно нажатую кнопку, Invalid input и t – реакция на истекшее время ожидания выбора. Если их не описать то при истечении таймаута или при неправильно нажатой кнопке произойдет обрыв соединения.

Безопасность Asterisk

Устанавливаем лимит звонков
В случае взлома, для уменьшения затрат, рекомендую установить лимит одновременных звонков для аккаунтов в 1, чтобы злоумышленник не мог одновременно звонить на много направлений и, тем самым, быстрее расходовать ваши деньги.
[100]
call-limit=1
Используем deny/permit для аккаунтов Обязательный момент! Указываем для всех аккаунтов, которые не подразумевают подключение из интернета следующие строки:
[100]
deny=0.0.0.0/0.0.0.0
permit=10.1.1.1/24
permit=10.1.2.1/24
Отключаем guest-звонки
Если у вас нет необходимости принимать звонки без регистрации, обязательно выключите следующую опцию в sip.conf:
allowguest=yes => allowguest=no ; Allow or reject guest calls (default is yes)
Отключаем оповещение о неверном пароле
Практически у всех существуют аккаунты asterisk вида 100, 200, 700 и т.п. По умолчанию астериск выдает одну ошибку о неверном пароле для существующего аккаунта и другую для несуществующего аккаунта. С помощью спец. софта для подбора паролей, злоумышленник может быстро перебрать все короткие номера и подбирать пароли только к существующим аккаунтам, которые ответили «неверный пароль». Чтобы препятствовать этому, меняем опцию в sip.conf:
alwaysauthreject = no => alwaysauthreject = yes
После такой настройки, астериск будет давать одинаковый отбой для любых неверных авторизаций.

взято с http://www.mahno.su/

вторник, 6 мая 2014 г.

Русификация Asterisk


«Речь» Asterisk, записана в звуковых файлах в каталоге /usr/share/asterisk/sounds/. Для каждого языка создается подкаталог с соответствующим именем en, fr, ru. Каталог ru и его файлы загрузим с сайта разработчиков Asterisk. Какой каталог использовать, определяет директива language в описании канала или в общей (general) секции конфигурации (например, language=ru). Кроме имени каталога, директива language заставляет Asterisk учитывать грамматические категории языка (например, один номер – одно сообщение). Почему-то в штатных архивах русских сообщений нет нескольких файлов, необходимых для воспроизведения грамматических вариаций произношения. Выход – «обман» Asterisk. Он будет «думать», что говорит на английском, а файлы будут содержать русские фразы. Для русификации Asterisk выполняем:
$ cd /usr/share/asterisk/sounds/en
$ wget http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-ru-alaw-current.tar.gz
$ tar -xvf asterisk-core-sounds-ru-alaw-current.tar.gz


взято с http://samag.ru/

среда, 30 апреля 2014 г.

Подключение Asterisk к SIPNET.RU

Для подключения  Asterisk к SIPNET.RU приводим файлы конфигурации своего сервера к следующему виду(естественно со своими данными в выделенных полях):
sip.conf
[general]
localnet=192.168.1.0/255.255.255.0
bindaddr=0.0.0.0
externip = ВАШ IP
..................
.......................
[sipnet]
host=sipnet.ru
defaultuser=SIPID
secret=password
type=friend
insecure=invite
qualify=yes
nat=yes ;если наш сервер находится за натом
dtmfmode=rfc2833
diallow=all
context=it1
canreinvite=yes
allow=alaw
allow=g729
allow=ulaw
allow=gsm
registerattempts=0
rtpkeepalive=10
callerid=SIPID
fromdomain=sipnet.ru

extensions.conf
[general]
static=yes
writeprotect=no
clearglobalvars=no

;==========from internal=========
[for-office]
;Который час?
exten => 200,1,Answer()
exten => 200,n,SayUnixTime(,,QdhAR)
exten => 200,n,WaitMusicOnHold(10)
exten => 200,n,Goto(200,1)

; Обычный SIP пользователь 201
exten => 201,1, Dial(SIP/201,60)
exten => 201,n, Hangup

; Обычный SIP пользователь 202
exten => 202,1, Dial(SIP/202,60)

exten => 202,n, Hangup
....................
;ispolzuya sipnet zvonki na tele2
exten => _8953XXXXXXX,1,Dial(SIP/sipnet/${EXTEN},60)
exten => _8953XXXXXXX,n,Hangup

;==========from external=========
[it1]
exten => SIPID,1,Dial(SIP/201,20)
exten => SIPID,n,Answer()
exten => SIPID,n,Hangup()


вторник, 29 апреля 2014 г.

spa3102 сброс настроек

1. Подключить телефонный аппарат.
2. Набрать **** слышим голосовое меню далее набираем 73738#1

3. Все готово.