По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В наших материалах по Cisco, посвященных конфигурации сетевых устройств мы часто встречаемся со стандартными листами (списками) контроля доступа. А теперь поговорим о расширенных. Расширенные листы могут также фильтровать трафик по следующим параметрам: IP-адреса - фильтрация на основе IP-адреса источника и адреса назначения; Порты - фильтрация на основе порта источника / порта назначения; Тип протокола TCP/IP - протоколы TCP, UDP, IP и так далее; Что делать? Для начала необходимо создать лист. Сделаем это с помощью команды: access list NUMBER permit|deny IP_PROTOCOL SOURCE_ADDRESS WILDCARD_MASK [PROTOCOL_INFORMATION] DESTINATION_ADDRESS WILDCARD_MASK PROTOCOL_INFORMATION Синтаксис команды следующий: NUMBER - номер листа; PERMIT/DENY - разрешение или запрет трафика; SOURCE/DESTINATION ADDRESS - адреса источника и назначения; WILDCARD_MASK - обратная маска; PROTOCOL_INFORMATION - название или номер протокола TCP, UDP, IP и так далее; Кстати, для расчета wildcard (обратной) маски, вы можете воспользоваться нашим калькулятором подсетей: Калькулятор подсетей Следующим шагом необходимо применить наш свежесозданный лист на интерфейс и его направление (на вход или выход): ip access-group NUMBER out Параметры in и out определяют направление, на котором будет применен лист контроля доступа Для нумерации расширенных листов контроля доступа необходимо использовать следующую нумерацию: со 100 до 199 и с 2000 до 2699 Пример настройки (сценарий №1) В топологии указанной ниже, нам нужно разрешить пользователям из подсети 10.0.0.0/24 доступ к серверу S2 (адрес 192.168.0.1), но не к серверу S1 (адрес 172.16.0.1/24). Для начала, напишем ACL и разрешим доступ к серверу S2. Сделаем это мы следующей командой: access-list 100 permit ip 10.0.0.0 0.0.0.255 192.168.0.1 0.0.0.0 Данная команда разрешает весь трафик из подсети 10.0.0.0 на хост 192.168.1.0. Затем, запретим доступ к серверу S1: access-list 100 deny ip 10.0.0.0 0.0.0.255 172.16.0.1 0.0.0.0 Наконец, применим данные листы контроля доступа на интерфейсе R1: int fa0/0 ip access-group 100 in Пример настройки (сценарий №2) Приведем иной пример использования расширенных листов контроля доступа: У нас снова есть сеть 10.0.0.0/24 и сервер S1, который слушает порт 80. Нам нужно разрешить пользователям доступ к веб-ресурсам на данном сервере, но также необходимо запретить какой-либо другой доступ, к примеру Telnet. Для начала, нам нужно разрешить трафик из пользовательской подсети к веб-серверу на порту 80, что выполняется командой access-list 100 permit tcp 10.0.0.0 0.0.0.255 172.16.0.1 0.0.0.0 eq 80 Используя ключевое слово TCP, мы можем фильтровать пакеты по портам источника и назначения. В примере выше, мы разрешили путь трафику из подсети 10.0.0.0 на хост 172.16.0.1 на порт 80 (веб-порт). Теперь нужно запретить Telnet трафик из подсети 10.0.0.0 в подсеть 172.16.0.1. Для этого нужен еще один аксес-лист, на этот раз с запрещающим выражением: access-list 100 deny tcp 10.0.0.0 0.0.0.255 172.16.0.1 0.0.0.0 eq 23 Далее, применим его на интерфейс с помощью следующих команд: int fa0/0 ip access-group 100 in Как мы уже описывали в предыдущей статье, в конце каждого листа всегда есть всезапрещающее правило. После применения первого правила, весь остальной трафик ходить не будет.
img
Сегодня хотим рассказать про любопытный сценарий, которой наверняка может быть полезен в сфере E-commerce. Речь пойдет про автоматизацию клиентского обслуживания, а именно: /p> Клиент звонит в интернет – магазин и ему предлагают ввести номер заказа; Введенные абонентом значения по DTMF передаются в AGI скрипт; По номеру заказа, мы формируем SQL – запрос к базе данных, где храним информацию о заказах. Из соответствующей таблицы мы получаем статус заказа и имя клиента; Мы формируем строку, которую необходимо озвучить клиенту и отправляем ее на аудио-генерацию в сторону API Yandex.SpeechKit (TTS технология – text to speech); Получаем аудио файл от Yandex, декодируем его в нужный нам формат (.wav, 8k) и воспроизводим клиенту; Удаляем воспроизведенный файл и завершаем звонок клиента; На наш взгляд это любопытная автоматизация. Приступаем к настройке? :) Получение API - токена Yandex.SpeechKit Для знакомства с технологией Яндекс предоставляет бесплатный тестовый период в 1 месяц с момента отправки первого запроса. После этого, чтобы продолжить использование Yandex. SpeechKit Cloud нужно заключить договор. Подробности условия использования можно прочитать здесь. Первым делом перейдите в кабинет разработчика по ссылке https://developer.tech.yandex.ru и нажмите Получить ключ: Имя ключа - введите имя для ключа. Например, Asterisk + TTS; Подключение - выберите из списка SpeechKit Cloud; Запоминаем значение, которое выделено красным на скриншоте выше – это и есть ваш токен. Переходим к настройке AGI – скрипта. Создаем таблицу с заказами Создадим SQL – таблицу, в которой будем хранить данные о заказах. В лабораторных целях, мы развернем ее на том же хосте, что и IP – АТС Asterisk (+ это снизит задержку и процессинг по времени). Итак, вводим следующие команды в консоли сервера (предварительно подключитесь по SSH): use asteriskcdrdb; CREATE TABLE zakazy(name varchar(20),phone varchar(20),nomerzakaza varchar(20),status varchar(20)); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Александр", "79257777777", 300388, "Отправлен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Иван", "79251111111", 476656, "Оплачен"); INSERT INTO zakazy (name, phone, nomerzakaza, status) VALUES ("Сергей", "79252222222", 0089822, "Доставлен"); Мы создали и наполнили таблицу. Теперь необходимо создать пользователя, который сможет иметь SELECT – доступ к таблице: CREATE USER 'логин_mysql'@'localhost' IDENTIFIED BY 'пароль_mysql'; GRANT SELECT ON asteriskcdrdb.zakazy TO 'логин_mysql'; Запомните ваш логин и пароль и переходите к следующему шагу – адаптации скрипта AGI. Традиционно, комментарии к коду после двойного слеша //: AGI - скрипт Ниже представлена структура скрипта: #!/usr/bin/php -q <?php error_reporting(0); require('phpagi.php'); $agi = new AGI(); $result = $agi->get_data('custom/generate', 6000, 10); //принимаем DTMF от клиента; $number= $result['result']; //записываем в переменную введенный клиентом номер заказа; $hostname = "localhost"; // у нас localhost. У вас может быть IP адрес сервера, на котором хранится БД с заказами (настройте предварительно pg_hba.conf на удаленном хосте); $username = "логин_mysql"; // логин, который вы создали этапом ранее; $password = "пароль_mysql"; // пароль, который вы создали этапом ранее; $dbName = "asteriskcdrdb"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName) or die(mysql_error()); $query = "SELECT * FROM zakazy WHERE `nomerzakaza`='$number';"; // подключаемся и парсим данные по номеру заказа; $res=mysql_query($query) or die(mysql_error()); while ($row = mysql_fetch_assoc($res)) { $status = $row['status']; $name = $row['name']; // имя и статус, полученные из SQL пишем в переменные; }; $str = 'Дорогой '.$name.'! Статус вашего заказа '.$status.' Спасибо за обращение, всего доброго!'; // формируем строку, которую необходимо синтезировать; $qs = http_build_query(array("format" => "wav","lang" => "ru-RU","speaker" => "jane","key" => "ваш_токен","emotion" => "good", "text" => $str)); //описываем переменные, которые будем отправлять в сторону API Яндекса. Вы можете регулировать формат файла, локаль, спикера (мужской или женский голоса) и эмоциональный окрас. Заменить "ваш_токен" на ключ, полученный от API Yandex. SpeechKit Cloud; $ctx = stream_context_create(array("http"=>array("method"=>"GET","header"=>"Referer: "))); $soundfile = file_get_contents("https://tts.voicetech.yandex.net/generate?".$qs, false, $ctx); $file = fopen("file1.wav", "w"); fwrite($file, $soundfile); fclose($file); // получаем аудио файл (сохраняем его как file1.wav); shell_exec('sox -t raw -r 48k -e signed-integer -b 16 -c 1 file1.wav -t wav -r 8k -c 1 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // выполняем преобразование аудио в нужный для Asterisk аудио-формат и копируем его в директорию /var/lib/asterisk/sounds/ru/custom/; shell_exec('chown asterisk:asterisk /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('chmod 775 /var/lib/asterisk/sounds/ru/custom/output1.wav'); // даем файлу нужные пермишны; $agi->exec('Playback',"custom/output1"); // передаем в AGI команду проиграть полученный аудио – файл; shell_exec('rm -f /var/lib/asterisk/sounds/ru/custom/output1.wav'); shell_exec('rm -f file1.wav'); // удаляем оба файла; Скачать скрипт AGI После загрузки файла, сохраните его с расширением .php Сохраните скрипт под именем tts.php в директории /var/lib/asterisk/agi-bin и дайте следующие команды в консоль сервера: dos2unix /var/lib/asterisk/agi-bin/tts.php chown asterisk:asterisk /var/lib/asterisk/agi-bin/tts.php chmod 775 /var/lib/asterisk/agi-bin/tts.php Адаптируем функционал в «продакшн» Итак, первым делом, открываем файл /etc/asterisk/extensions_custom.conf для редактирования и добавляем в него следующую запись: [tts_menu] exten => s,1,Answer() exten => s,2,AGI(tts.php) Очень хорошо. Сделаем вызов кастомного контекста из FreePBX. Для этого воспользуемся модулем Custom Destinations. Переходим по пути Admin → Custom Destinations и нажимаем Add Destination: Нажимаем Submit и Apply Config. Мы хотим чтобы из главного IVR – меню клиент при нажатии 4 мог бы узнать статус своего заказа. Переходим в главный IVR и в секции IVR Entries добавляем следующее: Готово. Если что – либо не получилось, напишите нам в комментариях, постараемся помочь :)
img
Привет! Мы в одной из предыдущих статей уже рассказывали про то, как зарегистрировать IP-телефон в CME (CUCME) , работающий по протоколу SCCP. Сегодня поговорим про то, как зарегистрировать Third Party SIP телефоны (то есть от других производителей) в CME. Настройка Для начала инициализируем SIP звонки и сервер регистрации: CME(config)#voice service voip CME(conf-voi-serv)#allow-connections sip to sip CME(conf-voi-serv)#sip CME(conf-serv-sip)#registrar server voice service voip – вход в режим конфигурации voip; allow-connections sip to sip – по-умолчанию IOS не разрешает SIP вызовы; sip – команда sip, введенная в меню конфигурации voice service voip позволяет использовать команды для настройки SIP; registrar server – определяет CME как сервер регистрации для сторонних SIP телефонов; Далее применим глобальные настройки CME: CME(config)#voice register global CME(config-register-global)#mode CME CME(config-register-global)#max-dn 10 CME(config-register-global)#max-pool 10 CME(config-register-global)#source-address 192.168.1.1 port 5060 CME(config-register-global)#tftp-path flash: CME(config-register-global)#authenticate register CME(config-register-global)#camera CME(config-register-global)#video CME(config-register-global)#create profile voice register global– вход в режим глобальных настроек CME; mode CME – устанавливает поведение устройства как CME; max-dn [X] – максимальное количество номеров dn (directory number); max-pool [Y] – максимальное количество телефонов; source-address X.X.X.X port Y – указываем откуда будут загружаться конфигурационные файлы для IP-телефонов; tftp-path flash: - корневой каталог TFTP это flash память маршрутизатора; authenticate register – аутентификация для телефонов, находящихся в другой подсети; camera – команда включает камеру; video – команда включает видео; create profile – создает конфигурационные файлы; После этого создадим номер: CME(config)#voice register dn1 CME(config-register-dn) number 1001 voice register dn1 – создание ephone-dn с меткой 1; number [номер] – указываем номер; Далее зарегистрируем SIP телефон в CME: CME(config)#voice register pool 1 CME(config-register-pool)#id mac 0123.45ab.cdef CME(config-register-pool)#type 9971 CME(config-register-pool)#number 1 dn 1 CME(config-register-pool)#username admin password admin CME(config-register-pool)#codec g711ulaw CME(config-register-pool)#dtmf-relay rtp-nte CME(config-register-pool)#camera CME(config-register-pool)#video voice register pool [X] – режим конфигурации SIP телефонов (тут pool означает телефоны); id mac XXXX.XXXX.XXXX – mac-адрес устройства (для third-party можно ввести любой); type – указываем тип телефона, для third party эта команда не обязательна; number [X] dn [Y] – назначаем на копку X номер Y; username XXXX password YYYY – включает аутентификацию для SIP телефонов с указанными данными; codec g711ulaw – указываем используемый кодек; dtmf-relay rtp-nte – указываем тип DTMF-relay; Теперь переходим к настройке на самом third-party софтфоне (на примере софтфона 3CX): Здесь необходимо заполнить следующие поля: Extension – номер, который мы создали на CME; ID – username, созданный на CME; Password – пароль, созданный на CME; IP of your PBX/SIP server – IP адрес CME;
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59