По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Наверняка кто-то из вас хоть раз в жизни получал SMS после звонка в определенную компанию. Обычно, это просьба оценить работу операторов. Так, например, это сделано у GSM операторов. Также это может быть SMS с благодарностью за обращение от компании или же об актуальных акциях и предложениях. Сегодня я хотел бы рассказать о том, как Вы можете реализовать подобную функцию с использованием FreePBX Статья написана по мотивам существующей на данном ресурсе публикации "Оценка оператора после звонка" У данного метода есть один недостаток - для его работы нужен chan_dongle и тариф с безлимитными SMS. Для тех, у кого нет пресловутого chan_dоngle, есть другой метод, который я постараюсь объяснить. Для особо нетерпеливых прошу Вас заглянуть в контакты, возможно, я уже там появился :) В данном методе мы не будем ломать диалплан FreePBX и использовать тяжелую артиллерию в виде MySQL. Итак, приступим. Для начала открываем конфигурационные файлы, а именно: /etc/asterisk/extensions_custom.conf Вносим в него такой кусочек диалплана. В коде я дал комментарии зачем нужны некоторые части: [send-sms] exten => _.,1,NoOp(Start sms) exten => _.,n,DIAL(SIP/${EXTEN},,trg) ;опция g позволяет "проваливаться вниз". ВНИМАНИЕ агент должен использовать вашу технологию (sip или pjsip) exten => _X.,n,GotoIf($[${DIALSTATUS}=BUSY]?busy:answered) //проверяем, был ли отвечен вызов, вот здесь мы или пропускаем клиента дальше если с ним уже говорили или нет. exten => _X.,n(busy),Hangup() exten => _X.,n(answered),Goto(sms,${EXTEN},1) [sms] exten => _X.,1,NoOp(Statrt SendSms) exten => _X.,n,Answer() same => n,Set(COUNT=1); установка счетчика. По идее, он тут не нужен, но сделан на всякий аварийный случай. Вдруг заклинит и клиента заспамит смс? :) same => n,Set(RECIVER=Имя донгла в системе); если используете донгл same => n,Set(RECIPIENT=${CALLERID(num)}) same => n,Set(TEXT="Спасибо что обратились в нашу компанию Рога и копыта"); текст смс same => n,GotoIf($["${RECIPIENT:0:2}" != "79"]?end); это проверка на принадлежность к мобильным номерам. Уточните формат входящих CALLERID(num) на вашей АТС - с 7 или 8? same => n,System(/usr/sbin/asterisk -rx 'dongle sms ${RECIVER} 7${RECIPIENT:1} ${TEXT}'); тут отправка с донгла. same => n,Set(COUNT=$[${COUNT} + 1]); увеличение счетчика (который не нужен, а вдруг) same => n,GotoIf($["${COUNT}" > "1"]?end); проверка и отправка на завершение exten => _X.,n(end),Goto(macro-hangupcall,s,1); Конец Обратите внимание на пометки в диалплане. В частности, Агент должен использовать вашу технологию подключения. Входящие форматы на ваши транки, 7 или 8. Если он еще не унифицирован, то рекомендую это сделать и привести в норму стандарта E164. Если входящие у вас содержат + то, вместо ${RECIPIENT:0:2} сделайте ${RECIPIENT:0:3} На этом, настройка конфигурационного файла extensions_custom.conf закончена. Теперь открываем файл queues_post_custom.conf и вставляем туда такую строку: member=Local/4015781@send-sms/n,0,4015781,hint:4015781@ext-local Где 4015781 номер существующего Агента в очереди. После этого, закрываем файл, перезагружаем диалплан командой dialplan reload и тестируем. Применять можно, например, для отправки благодарности клиенту с напоминанием времени работы или адреса компании. Чтобы не огорчить тех, кто не использует донглы или использует GoIP или другие Gsm шлюзы, на мой взгляд, есть более "красивый" метод: Идем в один из множества веб сервисов для SMS рассылок (названия писать не буду), регистрируемся у них и берем их готовые библиотеки для доступа к API. Я покажу на примере PHP API одной известной компании: #!/usr/bin/php -q <?php #парсим данные из AGI require(′phpagi.php′); $agi = new AGI(); $phone = $agi->request[′agi_arg_1′]; text = $agi->request[′agi_arg_2′]; $sender = ′INFORM′; // !!! Замените API-ключ на свой. $apikey = ′XXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZ′; $url = ′https://smspilot.ru/api.php′ ′?send=′.urlencode( $text ) .′&to=′.urlencode( $phone ) .′&from=′.$sender .′&apikey=′.$apikey .′&format=json′; $json = file_get_contents( $url ); echo $json.′′; $j = json_decode( $json ); if ( !isset($j->error)) { echo ′SMS успешно отправлена server_id=′.$j->send[0]->server_id; } else { trigger_error( $j->description_ru, E_USER_WARNING ); } Используем AGI. И в представленном диалплане меняем одну строку, а именно: same => n,System(/usr/sbin/asterisk -rx 'dongle sms ${RECIVER} ${TEXT}'); тут отправка с донгла. на: same => n,AGI(sendsms.php, 7${RECIPIENT:1}, "${TEXT}") И на этом - все. Чем данный способ лучше? Могу точно сказать, что в подобных сервисах для компаний есть возможность в качестве отправителя зарегистрировать название организации – это явно плюс в копилку лояльности клиента :) Это значит, что не нужен донг и SMS клиенту приходит не с безликих цифр, а от имени вашей компании в поле отправитель. Это, безусловно, повышает доверие и лояльность получателя SMS. Надеюсь, что данный метод будет полезен и найдёт применение в ваших бизнес-процессах. Удачи!
img
Сразу перейду к делу. Пользователями FreePBX 14 замечен крайне серьёзный баг в утилите fail2ban. Версия fail2ban, на которой замечен баг - 0.8.14-11 и ниже. Проверить можно командой rpm -qa | grep fail2ban: fail2ban-fpbx-0.8.14-11.sng7.noarch Данный баг заключается в том, что после установки чистой FreePBX Distro 14 сервис fail2ban хоть и в активном статусе, однако никаких “тюрем" (jails) он не подгружает и их количество = 0. Проверить можно командой fail2ban-client status, если Ваш сервер подвержен багу, то Вы увидите: [root@merionlab]# fail2ban-client status Status |- Number of jail: 0 `- Jail list: Это значит, что например, максимальное число попыток ввода пароля для доступа к вэб-интерфейсу FreePBX или попыток регистрации SIP-клиента с неверным паролем - не ограничено, а IP-адрес, с которого приходят эти запросы не блокируется. Естественно, что модуль Intrusion Detection во FreePBX также не будет работать. "Тюрьмы" или jails - это такие секции в файле /etc/fail2ban/jail.local, в которых указано, логи какого сервиса необходимо мониторить, чтобы выявлять и блокировать несанкционированные попытки доступа к этому сервису, а также такие параметры как время блокировки, максимальное число попыток и действие, которое необходимо предпринять в случае выявления. Например, вот секция [asterisk-iptables]: [asterisk-iptables] enabled = true filter = asterisk-security action = iptables-allports[name=SIP, protocol=all] sendmail[name=SIP, dest=none@yourpbx.com, sender=none@yourpbx.com] logpath = /var/log/asterisk/fail2ban maxretry = 5 bantime = 1800 В ней указано, что нужно мониторить лог /var/log/asterisk/fail2ban, искать в нём 5 попыток неуспешной регистрации (например SIP телефон пытается зарегистрироваться с неверным паролем) и банить IP-адрес на 30 минут. Ну и ещё можно отправку по email настроить о данном факте. По умолчанию, в файле /etc/fail2ban/jail.local должно быть 7 таких секций - [apache-tcpwrapper], [recidive], [ssh-iptables], [apache-badbots], [pbx-gui], [asterisk-iptables], [vsftpd-iptables]. В каждой указан путь к логам соответствующего сервиса. Решение Итак, есть два решения данной проблемы. Первое – остановить сервис fail2ban командой systemctl stop fail2ban и внести следующие изменения в файл /usr/lib/systemd/system/fail2ban.service: [Unit] Description=Fail2Ban Service After=httpd.service [Service] Type=forking ExecStartPre=/bin/mkdir -p /var/run/fail2ban ExecStart=/usr/bin/fail2ban-client -x start ExecStop=/usr/bin/fail2ban-client stop ExecReload=/usr/bin/fail2ban-client reload PIDFile=/var/run/fail2ban/fail2ban.pid Restart=always [Install] WantedBy=default.target Затем запустить сервсис fail2ban командой systemctl start fail2ban и сделать так, чтобы сервис включался после ребута автоматически systemctl enable fail2ban. И вторая – обновить сам fail2ban. Для этого вводим следующие команды: yum install sangoma-devel yum update Проверяем версию fail2ban после обновления - rpm -qa | grep fail2ban: fail2ban-fpbx-0.8.14-75.sng7.noarch После данных действий, команда fail2ban-client status должна отобразить верное количество jails и fail2ban с Intrusion Detection должны вновь встать на стражу Вашего сервера: [root@merionlab]# fail2ban-client status Status |- Number of jail: 7 `- Jail list: apache-tcpwrapper, recidive, ssh-iptables, apache-badbots, pbx-gui, asterisk-iptables, vsftpd-iptables Чтобы случайно не заблокировать свой адрес и игнорировать любые неуспешные попытки доступа к серверу с адресов, находящихся в локальной сети или других доверенных адресов, внесите их или всю доверенную подсеть в секцию [DEFAULT] в поле ignoreip в том же файле /etc/fail2ban/jail.local
img
Для устранения неполадок мы должны пройти путь от нижней части модели OSI к верхней. Для этого нам придется начать с протоколов, которые используются для коммутации. Будем думать о VLAN, транкинге, об агрегировании каналов и связующем дерева. Мы рассмотрим различные протоколы и различные сценарии, где "что-то работает" не так. Мы решим эти проблемы с помощью комбинации команд show и debug. Первая остановка ... проблемы с интерфейсом! Следующие статьи этого цикла: Траблшутинг STP (Spanning tree protocol) Устранение неисправностей EtherChannel Case #1 В этом примере мы имеем коммутатор в центре и два компьютера, которые подключены к нему. Каждый компьютер имеет свой IP-адрес, и они должны иметь возможность пинговать друг друга. Мы будем считать, что компьютеры настроены правильно и там нет никаких проблем. Интерфейс FastEthernet 0/1 находится в состоянии down. Это может указывать на проблему уровня 1, такую как неисправный кабель, неправильный кабель (кроссовер вместо прямого) или, возможно, нерабочая сетевая карта. Обратите внимание, что этот интерфейс работает в полудуплексном режиме. Если повезет, вы можете получить дуплексное сообщение через CDP, которое сообщит вам, что существует дуплексное несоответствие. Если вам не повезло, возможно, из-за этого ваш интерфейс переходит в состояние down. Имейте в виду, что гигабитный интерфейс не поддерживает halfduplex. SwitchA(config)#interface fa0/1 SwitchA(config-if)#duplex auto Изменим настройки интерфейса на duplex auto, чтобы коммутатор мог само настроиться. Может быть, нам повезет...но не в этот раз, пинг не работает. Интерфейс fa0 / 3, подключенный к хосту B, также не работает. После проверки кабелей и разъемов мы можем проверить ошибки дуплекса и скорости. Дуплекс включен в режим auto, так что это не является проблемой. Скорость была установлена на 10 Мбит, однако в то время как этот интерфейс является каналом Fast Ethernet (100 Мбит). SwitchA(config)#interface fa0/3 SwitchA(config-if)#speed auto Давайте переключим скорость на авто и посмотрим, что произойдет. Похоже, что несоответствие скорости привело к тому, что интерфейс перешел в состояние down. Изменение его на auto-speed возвращает интерфейс в состояние up. Это то, что мы искали. Интерфейсы, с которыми мы работаем, оба показывают состояние up/up. По крайней мере, теперь мы знаем, что нет никаких ошибок в кабеле, скорости или дуплексе. Теперь наш пинг проходит. Первый урок усвоен: Проверьте свои интерфейсы и посмотрите, отображаются ли они как up/up. Case #2 Та же топология, но здесь другая проблема. Хост A не может пропинговать хост B. Мы начнем с проверки интерфейсов: Состояние интерфейса FastEthernet0/3 выглядит нормально, но что-то не так с интерфейсом FastEthernet 0/1. Давайте изучим его подробнее: Так так, мы видим сообщение err-disabled. Это уже дает нам понять, что проблема, где здесь (по крайней мере, это означает, что мы на что-то наткнулись). Используйте команду show interfaces status err-disabled, чтобы узнать, почему интерфейс перешел в режим error-disabled. Это сообщит нам, что причина-безопасность порта. Мы можем посмотреть на конфигурацию безопасности порта, и мы видим, что только 1 MAC-адрес разрешен. Последний MAC-адрес, который виден на интерфейсе - 000с.2928.5c6c. Выше мы видим, что интерфейс был настроен для обеспечения безопасности на другой MAC-адрес. Именно по этой причине порт перешел в режим err-disabled. SwitchA(config)#interface fa0/1 SwitchA(config-if)#no switchport port-security Давайте уберем port security, чтобы решить эту проблему. SwitchA(config)#interface fa0/1 SwitchA(config-if)#shutdown SwitchA(config-if)#no shutdown Главное, что вы не должны забыть сделать - это после очистки настройки от port security ваш интерфейс все еще находится в режиме err-disabled. Вам нужно выполнить команды отключения и включения порта (shutdown и no shutdown), чтобы он снова заработал! Консоль сообщает нам, что интерфейс теперь включен. Как мы видим эхо-запрос проходит между компьютерами. Проблема решена! Урок 2 усвоен: проверьте, находится ли интерфейс в состоянии err-disabled, и если да, то: а) проверьте, почему это произошло, и Б) решите проблему. Case #3 Давайте продолжим с другой проблемой. Та же топология, но опять проблема. Эти два компьютера не "видят" друг друга. Интерфейсы выглядят хорошо, никаких ошибок здесь нет. И так мы видим, что port security отключена на этом коммутаторе. На данный момент мы, по крайней мере, знаем, что нет никаких проблем с интерфейсом и port security не фильтрует никакие MAC-адреса. В данный момент это хорошая идея, чтобы проверить информацию о VLAN. Вы можете использовать команду show vlan, чтобы быстро проверить, к какой VLAN принадлежат интерфейсы. Как вы можете видеть, наши интерфейсы находятся не в одной и той же VLAN. SwitchA(config)#interface fa0/3 SwitchA(config-if)#switchport access vlan 1 Мы переместим интерфейс fa0/3 обратно в VLAN 1. Теперь оба компьютера находятся в одной VLAN. Проблема решена! Урок 3 усвоен: убедитесь, что интерфейсы находится в нужной VLAN. Case #4 Пришло время для другой проблемы! Наши два компьютера не пингуюся между собой. Вы теперь знаете, как выглядит неудачный пинг, поэтому скрин не будет публиковаться снова. Интерфейсы не показывают никаких ошибок. Мы изучим настройку VLAN. Вы видите, что FastEthernet 0/1 находится в VLAN 10, но мы нигде не видим FastEthernet 0/3. Вот возможные причины: Что-то не так с интерфейсом. Мы проверили и убедились, что это не так, потому что он показывает состояние up/up, поэтому он кажется активным. Интерфейс не в режиме access port, а в режиме trunk. Быстрый взгляд на информацию о коммутаторе показывает нам, что нам нужно знать. Мы убедились, что интерфейс fa0/3 находится в режиме trunk, а native VLAN - 1. Это означает, что всякий раз, когда хост B отправляет трафик и не использует маркировку 802.1 Q, наш трафик заканчивается в VLAN 1. SwitchA(config)#interface fa0/3 SwitchA(config-if)#switchport mode access SwitchA(config-if)#switchport access vlan 10 Мы включим fa0/3 в режим доступа и убедимся, что он находится в VLAN 10. Оба интерфейса теперь активны в VLAN 10. Возможно, лучше проверить информацию на коммутаторе. Теперь я могу отправить пинг с хоста а на хост Б...проблема решена! Урок 4 усвоен: убедитесь, что интерфейс находится в нужном режиме (доступ или магистральный режим). Case #5 Те же два компьютера, тот же коммутатор. Однако этот сценарий немного интереснее. Компьютеры не могут пинговать друг друга, поэтому давайте пройдемся по нашему списку "возможных" ошибок: Интерфейсы выглядят хорошо, up/up-это очень хорошо. Оба интерфейса находятся в VLAN 10, так что это тоже хорошо. Просто чтобы быть уверенным...там нет port security. Это очень интересная ситуация. Интерфейсы работают (в состоянии up/up), мы находимся в одной VLAN, и нет никакой защиты портов. Что еще может быть причиной "перекрытия" трафика? Ага! Это может быть не то, о чем нам может прийти в голову, но мы же можем использовать VACLs (VLAN access-list), чтобы разрешить или запретить трафик в пределах VLAN. Если вы устраняете неполадки коммутаторов, то необходимо проверить эту настройку, если все остальное кажется вам нормальным. В этом случае есть VACL, подключенный к VLAN 10, давайте проверим его. Есть два порядковых номера ... 10 и 20. Порядковый номер 10 соответствует access-list 1, и его задача состоит в том, чтобы отбросить трафик. Давайте посмотрим, что это за access-list 1: Не смущайтесь из-за заявления о разрешении здесь. Использование оператора permit в access-list означает, что он будет "соответствовать" подсети 192.168.1.0/24. Наши два компьютера используют IP-адреса из этого диапазона. Если он соответствует этому access-list, то VLAN access-map отбросит трафик. SwitchA(config)# vlan access-map BLOCKSTUFF 10 SwitchA(config-access-map)# action forward Давайте изменим действие на "forward" и посмотрим, решит ли оно нашу проблему. Ну вот, все работает. Урок 5 усвоен: если все остальное кажется нормальным, убедитесь, что нет никакого VACL! Case #6 Давайте продолжим урок 6 с другой топологией. Теперь вы знаете, что нам нужно сначала проверить интерфейсы, а затем VLAN. В этом примере у нас есть те же два компьютера, но теперь у нас есть два коммутатора. Пинг от Хост А к Хосту Б не работает, так с чего начнем поиск? Сначала мы проверим интерфейс fa0/1 на коммутаторе 1. Интерфейс запущен и работает, это switchport, назначенный для VLAN 10. Пока все выглядит неплохо. Port security не включен, так что нам не нужно беспокоиться об этом. Давайте проверим то же самое на коммутаторе 2. Интерфейс работает, и он был назначен на VLAN 10. В данный момент мы видим, что интерфейсы, "смотрящие" к компьютерам выглядят хорошо. В этот момент Вы могли бы сделать две вещи: Подключите другой компьютер к коммутатору 1 и назначьте его во VLAN 10. Посмотрите, можно ли общаться между компьютерами во VLAN 10, когда они подключены к одному коммутатору. Сделайте то же самое на коммутаторе 2. Проверьте интерфейсы между коммутатором 1 и коммутатором 2. Мы сконцентрируем свое внимание на интерфейсах между коммутатором 1 и коммутатором 2, потому что там много чего может пойти не так! Интерфейсы не показывают никаких проблем, время проверить информацию о switchport. Коммутатор A находится в магистральном режиме и использует инкапсуляцию ISL. Коммутатор B также находится в магистральном режиме, но использует инкапсуляцию 802.1Q. Имейте в виду, что (в зависимости от модели коммутатора) административный режим по умолчанию может быть dynamic auto. Два интерфейса, которые оба работают в dynamic auto режиме, станут портом доступа (access). Лучше всего самостоятельно переключить интерфейс в магистральный режим. В нашем случае оба интерфейса магистральные, так что это хорошо, но у нас есть несоответствие протокола инкапсуляции. SwitchA(config)#interface fa0/15 SwitchA(config-if)#switchport trunk encapsulation dot1q Мы изменим тип инкапсуляции, чтобы оба коммутатора использовали протокол 802.1Q. Проблема решена! И опять все работает. Урок 6 усвоен: убедитесь, что при настройке магистралей используется один и тот же протокол инкапсуляции. Case #7 Вот опять тот же сценарий. Сейчас рассмотрим еще кое-что, что важно проверить при решении проблем trunk. Предположим, мы проверили и убедились, что следующие элементы не вызывают никаких проблем: Интерфейсы (скорость/дуплекс). Безопасность портов. Конфигурация Switchport (назначение VLAN, интерфейс, настроенный в режиме доступа). К сожалению, эхо-запрос между компьютерами все еще не проходит. Давайте взглянем на интерфейсы fa0/15 на коммутаторах: Проверим, что оба интерфейса находятся в магистральном режиме и что мы используем один и тот же протокол инкапсуляции (802.1 Q). Здесь нет никаких проблем. Что-нибудь еще, что может пойти не так с этой магистральной связью? Да! Магистраль может быть работоспособной, но это не означает, что все VLAN разрешены по магистральному каналу связи. В приведенном выше примере вы видите, что разрешена только VLAN 20. SwitchA(config)#interface fa0/15 SwitchA(config-if)#switchport trunk allowed vlan all SwitchB(config)#interface fa0/15 SwitchB(config-if)#switchport trunk allowed vlan all Давайте позволим всем VLAN пройти магистраль. По магистральной линии может передаваться трафик VLAN 10 между двумя коммутаторами. В результате пинг идет между компьютерами....еще одна проблема решена! Урок 7 усвоен: всегда проверяйте, разрешает ли магистраль все VLAN или нет. Case #8 Вот вам новый сценарий. Два компьютера, имеют разные IP-адреса. Коммутатор - это многоуровневый коммутатор. Поскольку компьютеры находятся в разных подсетях, нам приходится беспокоиться о маршрутизации. Мы видим, что два компьютера не могут связаться друг с другом. С чего мы должны начать устранение неполадок? Это статья не о настройке windows, но нам нужно обратить внимание на наши хосты. Поскольку компьютеры должны "выйти из своей собственной подсети", мы должны проверить, что IP-адрес шлюза по умолчанию в порядке и доступен. Хост А может достичь шлюза по умолчанию, поэтому мы, по крайней мере, знаем, что хост А работает нормально. Вот IP-конфигурация хоста B. Давайте проверим доступность шлюза по умолчанию! Здесь тоже все работает. Мы знаем, что компьютеры рабочие, потому что они знают, как выйти из своей собственной подсети, и шлюз по умолчанию доступен. Пора проверить коммутатор. Как мы видим, что хост А находится в VLAN 10 и хост B находится в VLAN 20. Мы не проверяли, включены ли интерфейсы, потому что мы можем пинговать IP-адреса шлюза по умолчанию. Это говорит о том, что fa0/1 и fa0/3 работают, но мы не знаем, к какой VLAN они принадлежат. Были сконфигурированы два интерфейса SVI. Это IP-адреса, которые компьютеры используют в качестве шлюза по умолчанию. Так почему же наш коммутатор не маршрутизирует трафик? Наличие IP-адресов на интерфейсах не означает автоматическую маршрутизацию трафика. Для этого нам потребуется таблица маршрутизации. Этот коммутатор не имеет SwitchA(config)#ip routing Давайте включим маршрутизацию на этом коммутаторе. Давайте сделаем так, чтобы это выглядело получше. Теперь коммутатор знает, куда перенаправлять IP-пакеты на этом коммутаторе. Вот так...теперь два компьютера могут достучаться друг до друга! Проблема решена! Урок 8 усвоен: если вы используете многоуровневый коммутатор для маршрутизации interVLAN, убедитесь, что интерфейсы SVI настроены правильно и что маршрутизация включена. Мы рассмотрели наиболее распространенные ошибки, которые могут произойти с нашими интерфейсами, VLAN, транками и проблемами маршрутизации при использовании многоуровневых коммутаторов. В следующей статье мы рассмотрим связующее дерево. Spanning-tree-довольно надежный протокол, но есть ряд вещей, которые могут пойти не так, как, вы ожидаете. Кроме того, из-за неправильной настройки могут произойти некоторые странные вещи...давайте рассмотрим траблшутинг STP в следующей статье.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59